我是q和KDB的新手。为了进行测试,我在本地Windows PC上安装了KDB 3.4,同时在默认端口上运行tickerplant和RDB并使用香草tick.q,u.q和r.q。

我有一个Java过程连接到股票行情工厂并执行

".u.upd:insert" once followed by multiple update queries like below

".u.upd[`Offers ; ( 2016.12.20D11:43:08.212,`655044AE5,`CITIXX,`CITIXXX74,`CITIXXX,`CITIXXX74,2545,`SELL,`SUBJECT,`OPEN,`PRICE,101.693e,200j,1j,2016.12.20D11:43:08.212)]"


我的确看到了报价表工厂(localhost:5010)中的Offers表正在更新,但是尽管它具有要更新的表的架构,但我看不到其中的任何一个都发布到RDB(localhost:5011)中。另外,如果java进程直接连接到RDB,那么我的确看到了RDB中的更新,但是我想理解为什么为什么不使用当前设置将更新从股票行情发布到RDB。

最佳答案

这里的问题是您实际上是在重新定义.u.upd函数,该函数应注意以下几点:


检查是否需要运行EOD
检查传入数据的时间戳记,如果缺少则添加一个
根据传入的数据构建表并发布给下游订户
登录电话以恢复RDB


通过重新定义.u.upd,您错过了发布数据的关键步骤,保留默认定义将有助于解决您的问题。

10-08 13:24