KDB + tick - 更新不是从自动收报机工厂流向RDB

时间:2016-12-21 16:12:49

标签: java kdb

我是q和KDB的新手。为了测试我在我的本地Windows PC上安装了KDB 3.4,其中tickerplant和RDB都在默认端口运行并使用vanilla 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)中更新,但我没有看到任何这些被发布到RDB(localhost:5011),尽管它有更新表的架构。此外,如果java进程直接连接到RDB,那么我确实看到了RDB中的更新,但我想了解为什么更新没有通过我当前的设置从ticker工厂发布到RDB。

2 个答案:

答案 0 :(得分:2)

好像你还没有从rdb进程订阅tickerplant - 尝试从rdb运行.u.sub[`Offers;`]到tickerplant句柄。

有关kdb + tick的更多信息,请访问http://code.kx.com/q/tutorials/startingq/tick/

答案 1 :(得分:2)

这里的问题是你实际上正在重新定义.u.upd函数,该函数应该处理好几件事:

  • 检查是否需要运行EOD
  • 检查传入数据的时间戳,如果缺少则添加一个
  • 从传入数据构建表并发布到下游订阅者
  • 日志更新调用以进行RDB恢复

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