代码之家  ›  专栏  ›  技术社区  ›  SkyWalker

TorQ:如何更新填充了的磁盘数据库。装载机。是否加载所有文件?

  •  0
  • SkyWalker  · 技术社区  · 6 年前

    我使用TorQ从大型CSV文件填充磁盘数据库 .loader.loadallfiles 以累积的方式,效果很好。然而,我现在还需要附加来自流媒体源的数据,我不确定最好的方法是什么。

    我知道如何更新或将数据附加到内存数据库中。但是,我不知道有什么API可以将增量更新协同带到以前填充的磁盘数据库中 .loader.loadallfiles ?

    我打电话 .装载机。加载所有文件 例如

    rawdatadir:hsym `$("" sv (getenv[`KDBRAWDATA]; "fwdcurve"));
    .loader.loadallfiles[`headers`types`separator`tablename`dbdir`partitioncol`partitiontype!(`date`ccypair`ftype;"ZSS";enlist ",";`fwdcurve;target;`date;`month); rawdatadir];
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   CiaranAquaq    6 年前

    正如Jonathon所评论的那样,最好的想法是维护一个RDB来存储来自流媒体源的数据。当Kdb将数据保存到磁盘时,它会一次性保存整个列,因此,如果有1000条记录和5列,最好让它保存5个列表和1000个条目,而不是让它保存5列每个条目1000次。

    为了说明这需要多少时间,假设我有两个磁盘列表x和y。 一次插入10000个元素非常快

    q)\t `:x upsert 10000#1
    0
    

    一次做一个要慢得多

    q)\t:10000 `:y upsert 1
    126
    

    使用完整的TorQ框架可能值得研究。它是专门为这种情况设计的。它具有RDB和HDB功能,可以在此处找到 http://aquaqanalytics.github.io/TorQ/

    如果您希望像您所说的那样附加数据,那么目前没有任何API可以做到这一点。您可以做的是修改RDB或WDB以写入以附加到数据库。使用。装载机。writedatapartition,然后调用。装载机。我想完成会有帮助的。