为什么 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" 是合适的。
显而易见的解决方案是通过链接列查看显式行关系,其中查找计算提前完成。
键控表只不过是两个表的字典映射,例如:
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" 是合适的。
显而易见的解决方案是通过链接列查看显式行关系,其中查找计算提前完成。