KDB Tickerplant设置/架构,带投标匹配引擎

KDB Tickerplant设置/架构,带投标匹配引擎,kdb,Kdb,我有一个相当默认的tickerplant设置正在运行 (数据模拟进程推送到tickerplant,tickerplant由RDB订阅,EoD刷新写入HDB,网关进程查询RDB和HDB等) 现在,我想用出价匹配引擎替换数据模拟过程。 此过程需要实时访问报价、订单、交易和其他用户/会计数据表等表 我现在的问题如下: 我想将bidmatcher所需的表放入RDB,并通过tickerplant通过.u.upd填充它们。这是正确的方法吗?或者我应该将表保留在bidmatcher流程的本地位置 向RDB查

我有一个相当默认的tickerplant设置正在运行 (数据模拟进程推送到tickerplant,tickerplant由RDB订阅,EoD刷新写入HDB,网关进程查询RDB和HDB等)

现在,我想用出价匹配引擎替换数据模拟过程。 此过程需要实时访问报价、订单、交易和其他用户/会计数据表等表

我现在的问题如下:

  • 我想将bidmatcher所需的表放入RDB,并通过tickerplant通过
    .u.upd
    填充它们。这是正确的方法吗?或者我应该将表保留在bidmatcher流程的本地位置
  • 向RDB查询来自bidmatcher的数据(同步)安全吗
  • 如果我将这些表放在RDB中,并通过tickerplant填充它们,我如何管理upserts?
    .u.upd
    只执行插入操作,我找不到任何与
    upsert
    delete
    兼容的示例实现

使用tickerplant将数据传递给RDB,而不是使用独立的BiddMatcher流程,有着显著的优势。这允许其他订阅者在您的设置将来更改时接收bidmatcher数据,tickerplant将创建日志,在RDB崩溃时保存和重播数据

对RDB使用同步查询将起作用,因为它只是日内数据,但如果每天存储大量数据,则可能会注意到RDB在运行查询时暂时锁定。另一种方法是使用异步查询,这样它在等待返回结果时不会阻塞句柄

如果要将数据传递到tickerplant,则必须在其中定义模式,然后将其读入RDB,这样模式在那里是相同的。如果使用键控表作为记录,则它将失败,因为tickerplant预期键控列为时间列之后的第一列。在典型的kdb+勾选设置中,
.u.upd
函数使用
16=键入first x
检查键控列后的列,如果记录恰好是键控表,则在同一函数中达到
(登记(先计数x)#a),x
时,此操作失败。
要解决此问题,您必须修改upd函数,以包含“键入第一个x=99h”的检查。通过这种方式,它可以为您的数据进行适当的分支和处理升级

使用tickerplant将数据传递到RDB,而不是使用独立的bidmatcher流程,这有着显著的优势。这允许其他订阅者在您的设置将来更改时接收bidmatcher数据,tickerplant将创建日志,在RDB崩溃时保存和重播数据

对RDB使用同步查询将起作用,因为它只是日内数据,但如果每天存储大量数据,则可能会注意到RDB在运行查询时暂时锁定。另一种方法是使用异步查询,这样它在等待返回结果时不会阻塞句柄

如果要将数据传递到tickerplant,则必须在其中定义模式,然后将其读入RDB,这样模式在那里是相同的。如果使用键控表作为记录,则它将失败,因为tickerplant预期键控列为时间列之后的第一列。在典型的kdb+勾选设置中,
.u.upd
函数使用
16=键入first x
检查键控列后的列,如果记录恰好是键控表,则在同一函数中达到
(登记(先计数x)#a),x
时,此操作失败。 要解决此问题,您必须修改upd函数,以包含“键入第一个x=99h”的检查。通过这种方式,它可以为您的数据进行适当的分支和处理升级