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