有没有这样一种数据库? 历史数据自动按文件分块,可以随意拷贝删除。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
bfbd

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

  •  
  •   bfbd Mar 14, 2018 2653 views
    This topic created in 2965 days ago, the information mentioned may be changed or developed.

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

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

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

    Supplement 1    Mar 15, 2018
    折衷的解决办法:

    分表写入数据,data_2016, data_2017, data_2018, ...

    备份时直接拷贝 mysql 文件,data_2016.frm, data_2016.idb

    然后可以删除 data_2016 中的全部数据,delete * from data_2016

    恢复时需要停止 mysql 数据库,将 data_2016.frm, data_2016.idb 覆盖回来。
    Supplement 2    Mar 15, 2018
    查询比较简单,做个视图 union data_2016, data_2017, data_2018 几个表即可。
    16 replies    2018-03-15 16:43:48 +08:00
    edsion996
        1
    edsion996  
       Mar 14, 2018 via iPhone   1
    试试分库分表?
    loading
        2
    loading  
       Mar 14, 2018 via iPhone
    程序内部分表,底层用 swlite,简单啊。
    loading
        3
    loading  
       Mar 14, 2018 via iPhone
    sqlite
    hcymk2
        4
    hcymk2  
       Mar 15, 2018   1
    MySQL Partition 有类似的功能,但不是通过物理文件来实现的。
    enzo113
        5
    enzo113  
       Mar 15, 2018   1
    hive 的 外部表+partition 可以,但是 hive 未必是你想要的那种数据库
    bfbd
        6
    bfbd  
    OP
       Mar 15, 2018
    @loading 程序内部分表,查询的时候就得自行拼接查询结果,如果是排序后分页,SQL 语句一句搞定( limit, offset ),程序就得自己拼接来自多个表的查询结果。
    bfbd
        7
    bfbd  
    OP
       Mar 15, 2018
    @zjb861107 分库分表解决的是读写性能问题,现在是想实现非全库全表的备份、删除、以及恢复,而且是在数据量比较大的时候,比如几十,几百 G。
    bfbd
        8
    bfbd  
    OP
       Mar 15, 2018
    @zjb861107 或许可以用分表存储,分表备份和分表导入的方式实现。

    例如:查询视图 DATA 包含 data_201801, data_2018_02, data_2018_03 ... 等多个数据表,备份 data_201801 后删除其中数据,如果要恢复数据,将备份文件导入到 data_201801 即可。
    虽然不如物理文件方便,但貌似可行。
    liuweisj
        9
    liuweisj  
       Mar 15, 2018   2
    你这说的正是 hive 吗
    lcgui7
        10
    lcgui7  
       Mar 15, 2018
    oracle
    idblife
        11
    idblife  
       Mar 15, 2018
    分区表
    很多年前的成熟技术了
    feverzsj
        12
    feverzsj  
       Mar 15, 2018
    你的要求对应的是集群,不要再想分文件这种原始的做法了
    loading
        13
    loading  
       Mar 15, 2018 via iPhone
    其实楼主这样做的目的究竟是啥……
    要性能还是要备份简单,都有很好的成熟方案。
    tailf
        14
    tailf  
       Mar 15, 2018
    我觉得用多个 server 可以解决问题。
    bfbd
        15
    bfbd  
    OP
       Mar 15, 2018 via Android
    @loading 主要是想分块儿备份,还能选块儿恢复。
    hellojinjie
        16
    hellojinjie  
       Mar 15, 2018   1
    hive 妥妥的满足你的每一点要求
    About     Help     Advertise     Blog     API     FAQ     Solana     4561 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 10:11 PVG 18:11 LAX 03:11 JFK 06:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86