请教亿级别的 Time Series 数据用 SQL 存储的最佳实践 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lzdhlsc

请教亿级别的 Time Series 数据用 SQL 存储的最佳实践

  •  
  •   lzdhlsc 2018 年 1 月 13 日 2299 次点击
    这是一个创建于 3024 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想请教大家一个 SQL 大表的问题。

    需求为: 使用 SQL 存储大约 12 亿的 time series 数据, ttl 为 30 天。Schema 为 (group_id, sub_group_id, timestamp, value)

    绝大多数查询是做一些 aggregation , 比如 sum(value) group by sub_group_id。所有查询保证都在同一 group id 内。

    我能想到的一些做法:

    1. 通过 group_id 分成多个 server。
    2. 按照 timestamp (以天为单位), group_id 分表。这样可以按天 drop table 来删除过期数据。
    3. (group_id, sub_group_id, timestamp) 创建 index。

    问题:

    1. 使用分表会降低 performance 吗?(从我的 test 结果看好像是的。)

    2. MySQL or PostgreSQL?

      PostgreSQL 的好处是:

      1. 可以使用 insert trigger 自动创建分区。
      2. 支持 uuid

      MySQL 好处:

      • 从网上来看,分表下的 performance 似乎要比 PostgreSQL 好一些。

    问题很多,先感谢大家的宝贵时间!

    13 条回复    2018-01-14 04:08:10 +08:00
    widewing
        1
    widewing  
       2018 年 1 月 13 日 via Android   1
    为啥不用 tsdb?
    gouchaoer
        2
    gouchaoer  
       2018 年 1 月 13 日 via Android   1
    你这个每行字段很小只有几个字节,所以几亿数据也就几 g 或者几十 g 不算多,分表对查询没提高的吧,因为你查询用了索引,只是插入速度提高了。。。。总结,可以按照日期分表每张表控制在千万级别,保证插入速度,查询的时候分表查
    dangyuluo
        3
    dangyuluo  
       2018 年 1 月 13 日   1
    试试 pi 数据库吧
    feverzsj
        4
    feverzsj  
       2018 年 1 月 13 日   1
    你才这么点数据,至于折腾成这样吗,随便什么数据库,一张表就足够了
    rrfeng
        5
    rrfeng  
       2018 年 1 月 13 日 via Android   1
    如果要考虑以后接入更多的话,直接上 tsdb
    如果以后也只有 12 亿的话,MySQL 还是什么 SQL 区别不大,针对性的做优化就好了
    cevincheung
        6
    cevincheung  
       2018 年 1 月 13 日   1
    postgresql 站队
    ziding
        7
    ziding  
       2018 年 1 月 13 日   1
    postgresql 有很多扩展,很适合,你可以看看 pipelinedb 感觉就是为了你这个场景量身定做的。mysql 数据量大了之后关联查询想死的心都有了。
    dexterzzz
        8
    dexterzzz  
       2018 年 1 月 13 日   1
    列存储数据库专门干这个用的
    suixn
        9
    suixn  
       2018 年 1 月 13 日 via Android   1
    尝试下 clickhouse,实测百亿级数据,有 group by. order by. 10s 内完成
    lzdhlsc
        10
    lzdhlsc  
    OP
       2018 年 1 月 13 日
    @widewing 团队决定了用 sql。可能是因为时间紧没时间从头开始维护新技术栈。
    lzdhlsc
        11
    lzdhlsc  
    OP
       2018 年 1 月 13 日
    @gouchaoer 我们测试了一下大约有个几百 G 吧。我描述的可能是简化版的 schema,实际上每个 value 可能是 4 个 double 类型。
    akira
        12
    akira  
       2018 年 1 月 13 日   1
    你要给出 预期执行的时间呀。 允许跑一天的话,什么都不用处理的啦。
    lzdhlsc
        13
    lzdhlsc  
    OP
       2018 年 1 月 14 日
    @akira 要支持 Online Service。最好平均执行时间小于 1 秒。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2998 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 62ms UTC 06:52 PVG 14:52 LAX 23:52 JFK 02:52
    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