首页 > 解决方案 > 表中的 sym 列是否起特殊作用?

问题描述

通常在 kdb+ 设置中,我看到这sym是一列,它对数据的实际情况非常不具描述性;ticker例如,在金融领域,这通常是您可能想要的物联网/机器人sensor等。在原型捕获设置中,您将看到date time sym前三列;数据库分区date并按time(“日期”作为名称派生自分区类型,“时间”可以是任何东西,尽管是显而易见的选择)。我的问题是为什么sym在代码/文学中扮演与其他两个同样突出/重要的角色?

标签: databasesymbolskdb

解决方案


sym 列的部分重要性实际上在于数据通常如何存储在磁盘上。虽然分区数据库通常按日期分区,但实际上按符号而不是时间对日期分区内的表进行排序是很常见的。当按sym而不是时间排序时,可以将parted属性应用到sym列,如果按sym过滤,可以大大提高查询历史数据库的速度。

据我了解,使用“符号”一词只是因为它是符号的缩写。它的流行部分只是惯例,但是它也被用作对 kdb 一个特别重要的方面的引用,即 sym 文件。将展开或分区表保存到磁盘时,有必要枚举任何类型为 `symbol. 这将允许 sym 数据以固定长度格式(整数)而不是可变长度符号保存到磁盘。这也有助于在数据按 sym 排序时大幅提高查询速度。枚举的问题在于,有必要保留一个整数对应于什么符号的映射,这是最重要的 sym 文件。

需要注意的另一点是许多 kdb+tick 架构,例如 Kx 提供的 vanilla tick 设置,强制每个表的前两列是 time 和 sym。.u.sub,由 kdb 进程调用以通过 tickerplant 订阅提要的函数,它允许订阅者通过 sym 过滤他们想要接收的数据,这需要存在一个名为 sym 的列。如果你想要一个没有 sym 列的数据库,你必须对你的架构进行一些修改。


推荐阅读