DolphinDB : TSDB or OLAP ?

因为群里一件事的讨论,引发了这个问题,DolphinDB到底该使用TSDB 存储引擎,还是 OLAP ?

事情是这样的,我在使用ussert!做测试时,在群里发了如下结论:

使用了一下upsert! ,发现:
第一次全插入,用时4分多钟,大小712K 
第二次全更新。用时6分多钟,大小2.9M
看来更新不是原地改变,而是另起炉灶

牛人建议:

直接append。如果要去重,duplicatePolicy可以设置为LAST

于是我改动了代码:

原来是OLAP方案:

    db = database(dfs,RANGE,2020.01M + 12*0..22,engine='OLAP') 
    dt=db.createPartitionedTable(tb,tableName,`date).append!(tb)
在插入数据时,使用:
    upsert!(dt, tb, keyColNames=`code`date) //有则改之,无则插之

改成TSDB方案:

    db = database(dfs,RANGE,2020.01M + 12*0..22,engine='TSDB') 
    dt=db.createPartitionedTable(tb,tableName,`date,,`code`date,LAST).append!(tb)
在插入数据时,改为:
    dt.append!(tb);

然后做空间和时间的测试,结论如下 :

OLAP + upsert! 占用空间 800K,用时4分多钟,多次更新会成倍增大空间
TSDB + append! 占用空间 8M,用时3分多钟,多次更新不会增大空间

时间测试:

执行如下 查询50次:
select * from dt where chg>9
OLAP 用时: [738ms]
TSDB 用时: [5s 771ms]

结论:

无论从空间还是时间上看,TSDB无任何优势,至少在目前场景,数据变动不大情况下,优选OLAP+ upsert!

OLAP和TSDB的其它比较,网上一查就有,不细说了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值