如何通过套接字推送表格

How to push tables through socket

考虑到 kdb+ tick 的设置,table 如何通过插座推送?

tick 中,可以订阅一个进程(比方说)atickerplant,然后它将继续推送数据随着新数据的到来,'tickers' 订阅的 a

我也想这样做,但我想知道怎么做。据我所知,q进程之间的进程间通信只是将命令从一个进程传输到另一个进程的能力,这样命令将在另一个进程上执行。

那么如何才能在进程之间传输完整的 table?

我知道 tick 中执行此操作的方法是 .u.pub and .u.sub,但我不清楚 table 是如何在进程之间传输的.

所以我有两个问题:

让我们来了解一下这样做的简单过程:

我们有一台服务器 'S' 和一台客户端 'C'。当 'C' 调用 .u.sub 函数时,该函数代码使用其主机和端口连接到 'S' 并调用 'S' 上的特定函数(比方说 'request')带有订阅参数。

收到此请求后,'S request' 函数会在其为订阅请求维护的订阅 table 中创建以下条目。

-> 客户端的主机和端口(传入请求)

-> 订阅参数(对于前客户端发送 sym `VOD.L 进行订阅)

现在,当 'S' 从 Feed 获取任何数据更新时,它会通过它的订阅 table 并检查其订阅参数列值(在我们的例子中为 sym)与传入数据匹配的条目。然后它使用来自 table 的主机和端口连接到它们中的每一个,并使用新数据调用它们的 'upd' 函数。

唯一的问题是,客户端应该在他们这边定义 'upd' 函数。

这是一个非常基本的过程。 KDB+ 将其用于额外的优化和功能。对于前。更优化的结构,用于维护订阅 table、日志维护、重播日志、取消订阅、恢复逻辑、发布计时器等等。

有关详细信息,您可以查看 'u' 命名空间中的函数定义。