
例如,创建数据表的时候指定一个时间戳的列,和一个文件存储路径,该表内的数据自动按日期区间存成多个物理文件。
关键是,这些物理文件可以随意删除,还原而不影响上层的查询统计,有数据就查,没数据就跳过。
这样,就可以使用物理文件迁移的方式随意备份和删除历史数据,需要查询它的时候把文件拷贝回来就可以了。
1 edsion996 Mar 14, 2018 via iPhone 试试分库分表? |
2 loading Mar 14, 2018 via iPhone 程序内部分表,底层用 swlite,简单啊。 |
3 loading Mar 14, 2018 via iPhone sqlite |
4 hcymk2 Mar 15, 2018 MySQL Partition 有类似的功能,但不是通过物理文件来实现的。 |
5 enzo113 Mar 15, 2018 hive 的 外部表+partition 可以,但是 hive 未必是你想要的那种数据库 |
6 bfbd OP @loading 程序内部分表,查询的时候就得自行拼接查询结果,如果是排序后分页,SQL 语句一句搞定( limit, offset ),程序就得自己拼接来自多个表的查询结果。 |
8 bfbd OP @zjb861107 或许可以用分表存储,分表备份和分表导入的方式实现。 例如:查询视图 DATA 包含 data_201801, data_2018_02, data_2018_03 ... 等多个数据表,备份 data_201801 后删除其中数据,如果要恢复数据,将备份文件导入到 data_201801 即可。 虽然不如物理文件方便,但貌似可行。 |
9 liuweisj Mar 15, 2018 你这说的正是 hive 吗 |
10 lcgui7 Mar 15, 2018 oracle |
11 idblife Mar 15, 2018 分区表 很多年前的成熟技术了 |
12 feverzsj Mar 15, 2018 你的要求对应的是集群,不要再想分文件这种原始的做法了 |
13 loading Mar 15, 2018 via iPhone 其实楼主这样做的目的究竟是啥…… 要性能还是要备份简单,都有很好的成熟方案。 |
14 tailf Mar 15, 2018 我觉得用多个 server 可以解决问题。 |
16 hellojinjie Mar 15, 2018 hive 妥妥的满足你的每一点要求 |