求助十亿级数据库解决方案,是否有比 PostgreSQL 更好的选择? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hxz0803
V2EX    数据库

求助十亿级数据库解决方案,是否有比 PostgreSQL 更好的选择?

  •  
  •   hxz0803 2019-08-30 14:16:52 +08:00 4770 次点击
    这是一个创建于 2239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现有几十台测试机,每天一共生成两百万行的测试数据,每一行包含了测试时间、几个设置项与200-300 个测试结果。测试结果几乎都为 20 位浮点数。
    需求
    1.在特定的设置项下,求出每台机每小时各种测试数据的平均值
    2.查询特定设置项与测试时间下的测试结果

    其他要求:
    1.测试结果可能会有增减,意味着可能要在生产中新增列,可以不减列。
    2.一台测试机会同时测几颗 IC (机台有好几个栏位可以同时测试),意味着会有几行数据时间完全相同的情况
    3.如果解决方案需要行的唯一性,那这个唯一性需要机台+测试时间+栏位来确定。
    4.暂时没钱上分布式
    5.暂时不会上云

    现在的实现思路:
    1.上 PostgreSQL,测试时间按每日水平分表,用的是内置分区表(之后考虑用 pg_pathman )
    2.BRIN 索引各设置项与测试时间
    3.建一个平均值表,每小时把上个小时各项测试数据的平均值加进去

    问下还有没有更好的解决方案?

    第 1 条附言    2019-08-31 08:07:46 +08:00
    感谢各位的建议,由于考虑到运维难度、操作系统支持( windows 支持可能是必不可少的)与在公司内推广的可行性,最后选定 TimescaleDB
    19 条回复    2019-08-31 13:06:24 +08:00
    lolizeppelin
        1
    lolizeppelin  
       2019-08-30 15:03:34 +08:00
    时序的数据? 装 pg 的 timescaledb 插件啊

    不用自己弄分区和 BRIN 索引了
    lolizeppelin
        2
    lolizeppelin  
       2019-08-30 15:05:14 +08:00
    思路都是找时序型数据库
    PG 正好有时序插件, 比专门的时序数据库差一点,但是功能上是标准的 sql
    StarkWhite
        3
    StarkWhite  
       2019-08-30 15:28:01 +08:00
    TiDB 吧,听说是专为海量数据的 OLTP 和 OLAP 而生的
    https://pingcap.com/
    EmdeBoas
        4
    EmdeBoas  
       2019-08-30 15:40:15 +08:00
    不适合 TiDB,考虑时序数据库( TDengine 最近好像挺火=-=没实际用过)或者专门的 AP 引擎都行
    F281M6Dh8DXpD1g2
        5
    F281M6Dh8DXpD1g2  
       2019-08-30 15:43:49 +08:00
    tidb 的 olap 跟没有也差不了多少
    opengps
        6
    opengps  
       2019-08-30 15:44:45 +08:00
    没用过 PG,不敢多说话,我按照关系型数据库回复下,看看能不能找到什么突破办法

    需求
    1.在特定的设置项下,求出每台机每小时各种测试数据的平均值
    --每天 1-200 万这个数量级还行,适合每天一个单表
    2.查询特定设置项与测试时间下的测试结果
    --不知道具体业务答不上来

    其他要求:
    1.测试结果可能会有增减,意味着可能要在生产中新增列,可以不减列。
    ---每天一张表的量不算多,插入时候不至于太明显影响性能
    2.一台测试机会同时测几颗 IC (机台有好几个栏位可以同时测试),意味着会有几行数据时间完全相同的情况
    --类似于无主键的设计,但是要用时间列聚集索引,这里我也先想到了时序数据库
    3.如果解决方案需要行的唯一性,那这个唯一性需要机台+测试时间+栏位来确定。
    --行唯一性建议用唯一联合索引
    4.暂时没钱上分布式
    --首先你这个算集群不算分布式,分布式是不同任务的多个组件。集群是相同职能的多台机器
    --然后你的量点大,注意用多块硬盘,增加硬盘数量分散 io,具体依赖 raid 还是手动分硬盘存储看自己情况
    5.暂时不会上云
    --看得出来是内部测试终端类设别使用,选型时候从来都是建议越靠近用户越好,不上云并不是坏事,注意做好备份
    sadfQED2
        7
    sadfQED2  
       2019-08-30 17:15:48 +08:00
    这个问题,我咋感觉看过几次了?我记忆错乱了吗
    lixia625
        8
    lixia625  
       2019-08-30 17:23:00 +08:00
    上分布式 和 有没有钱 有必然关系吗
    snappyone
        9
    snappyone  
       2019-08-30 17:34:12 +08:00 via Android
    @lixia625 分布式需要多台机器,有的公司机器抠门的要死
    est
        10
    est  
       2019-08-30 17:41:07 +08:00
    量级到千亿就可以考虑 clickhouse 了。而且我寻思 求出每台机每小时各种测试数据的平均值 这个是不是可以自己去做累加。。
    lixia625
        11
    lixia625  
       2019-08-30 18:46:34 +08:00
    @snappyone 现在满大街的虚拟化,分布式和多台机器没啥必然关系,算力才是关键
    optional
        12
    optional  
       2019-08-30 18:52:47 +08:00
    如果查询只是几个 aggregate 的话 pipelinedb
    wlw0327
        13
    wlw0327  
       2019-08-30 18:55:44 +08:00 via Android
    pipelineDB+1
    lolizeppelin
        14
    lolizeppelin  
       2019-08-30 18:59:18 +08:00
    楼上真是搞笑, 虚拟化用傻了?
    一台机虚拟出 10 台是算例翻倍了还是 IO 翻倍了

    没钱没机器还上分布式,你当做实验啊?
    直接物理机都不够用, 还套一层虚拟化?
    AngelCriss
        15
    AngelCriss  
       2019-08-30 19:06:14 +08:00 via Android
    上次不是有人推荐 citus 吗?
    orc
        16
    orc  
       2019-08-30 19:07:12 +08:00 via iPhone
    没细看你的需求,不过 clickhouse 可以了解一下。
    snappyone
        17
    snappyone  
       2019-08-30 23:52:39 +08:00 via Android
    @lixia625 虚拟化的机器就不要钱了?分布式存储 nosql 这种动不动就几十几百个节点的,没钱怎么玩
    CodeCore
        18
    CodeCore  
       2019-08-31 12:53:41 +08:00
    对啊,为啥不用 citus
    test0x01
        19
    test0x01  
       2019-08-31 13:06:24 +08:00 via Android
    说个你不敢用但肯定行的 MonetDB
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4591 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 10:02 PVG 18:02 LAX 03:02 JFK 06:02
    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