有没有这样一种数据库? 历史数据自动按文件分块,可以随意拷贝删除。

2018-03-14 21:49:20 +08:00
 bfbd

例如,创建数据表的时候指定一个时间戳的列,和一个文件存储路径,该表内的数据自动按日期区间存成多个物理文件。

关键是,这些物理文件可以随意删除,还原而不影响上层的查询统计,有数据就查,没数据就跳过。

这样,就可以使用物理文件迁移的方式随意备份和删除历史数据,需要查询它的时候把文件拷贝回来就可以了。

1985 次点击
所在节点    问与答
16 条回复
zjb861107
2018-03-14 22:46:35 +08:00
试试分库分表?
loading
2018-03-14 23:34:17 +08:00
程序内部分表,底层用 swlite,简单啊。
loading
2018-03-14 23:34:23 +08:00
sqlite
hcymk2
2018-03-15 00:07:17 +08:00
MySQL Partition 有类似的功能,但不是通过物理文件来实现的。
enzo113
2018-03-15 00:17:18 +08:00
hive 的 外部表+partition 可以,但是 hive 未必是你想要的那种数据库
bfbd
2018-03-15 09:16:17 +08:00
@loading 程序内部分表,查询的时候就得自行拼接查询结果,如果是排序后分页,SQL 语句一句搞定( limit, offset ),程序就得自己拼接来自多个表的查询结果。
bfbd
2018-03-15 09:26:52 +08:00
@zjb861107 分库分表解决的是读写性能问题,现在是想实现非全库全表的备份、删除、以及恢复,而且是在数据量比较大的时候,比如几十,几百 G。
bfbd
2018-03-15 09:49:22 +08:00
@zjb861107 或许可以用分表存储,分表备份和分表导入的方式实现。

例如:查询视图 DATA 包含 data_201801, data_2018_02, data_2018_03 ... 等多个数据表,备份 data_201801 后删除其中数据,如果要恢复数据,将备份文件导入到 data_201801 即可。
虽然不如物理文件方便,但貌似可行。
liuweisj
2018-03-15 10:09:42 +08:00
你这说的正是 hive 吗
lcgui7
2018-03-15 10:18:14 +08:00
oracle
idblife
2018-03-15 10:18:56 +08:00
分区表
很多年前的成熟技术了
feverzsj
2018-03-15 10:25:15 +08:00
你的要求对应的是集群,不要再想分文件这种原始的做法了
loading
2018-03-15 11:50:40 +08:00
其实楼主这样做的目的究竟是啥……
要性能还是要备份简单,都有很好的成熟方案。
tailf
2018-03-15 13:57:20 +08:00
我觉得用多个 server 可以解决问题。
bfbd
2018-03-15 16:32:52 +08:00
@loading 主要是想分块儿备份,还能选块儿恢复。
hellojinjie
2018-03-15 16:43:48 +08:00
hive 妥妥的满足你的每一点要求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/438107

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX