为什么 keyed table 不能在 kdb 中展开?

Why can't keyed table be splayed in kdb?

键控表只不过是两个表的字典映射,例如:

q)kts:([] sym:`GOOG`AMZN`FB)!([] px:3?10.; size:3?100000)
q).Q.dpft[`:/path/db;.z.d;`id;`kts]
    'nyi
    [0]  .Q.dpft[`:/path/db;.z.d;`id;`kts]

为什么有键控表不能展开或分区的限制?

我认为最简单的答案来自技术和逻辑。

技术问题:目前磁盘格式无法表明这一点。 .d 文件指示列在磁盘上的顺序,但不指示任何其他元数据。这个理论上以后可以改变。

合乎逻辑的答案来自所讨论数据的大小。当您想在内存中保存几列时,通常会使用展开表。十年前,这意味着展开表可用于容纳多达 100M 行,但使用 3.x 和现代内存,上限可能远远超过 250M。我不认为有一种好方法可以在临时计算中实现这种连接性能。支持进行这项工作的分组属性索引与磁盘上的列大小大致相同,并且需要在附加数据时不断重写。

我认为在这种情况下使用 'nyi 表示 "we probably need to think about this one for a bit" 是合适的。

显而易见的解决方案是通过链接列查看显式行关系,其中查找计算提前完成。