如何在kdb中实时正确分区表?

Rob*_*ick 5 kdb

我有一个C应用程序整天将数据流式传输到kdb内存表,最终超出了我的服务器RAM的大小.目标最终是将数据存储在磁盘上,因此我决定运行定时器分区功能来逐步传输数据.我想出了这段代码:

part_timer : { []
    (`$db) upsert .Q.en[`$sym_path] select [20000] ts,exch,ticker,side,price,qty,bid,ask from md;
    delete from `md where i<20000
}

.z.ts: part_timer
.z.zd: 17 2 6i
\t 1000
Run Code Online (Sandbox Code Playgroud)

这是实时分区流数据的正确方法吗?你会怎么写这段代码?我担心删除语句没有与select同步.

use*_*961 4

虽然不是您问题的明确解决方案。看看这里的wq 。这是传统 RDB 的只写替代方案。这会缓冲请求,并且每个 MAXROWS 记录都会将数据写入磁盘。