我在 kdb 中有一个分区表,它按数据分区并按刻度列分区。
表按列划分的属性元数据tick
存储在 kdb 中的哪里?
例子 -
t:([] tick:10?`amzn`fb`goog; px:10?10.; vol:10?1000) / Create a table in memory
.Q.dpft[`:db;2023.10.01;`tick;`t] / Partitioned on date and parted on tick
现在在 q 会话中加载数据库
\l db
meta t
c | t f a
----| -----
date| d
tick| s p
px | f
vol | j
如果我查看表的 .d 文件,它仅包含列顺序。
get `:2023.10.01/t/.d
`tick`px`vol
得到答案,列的属性信息存储在该列的展开文件中。
同样,如果表具有应用于
tick
列的排序属性或任何其他属性。然后该信息将存储在该列的同一个展开文件中。使用排序属性进行测试
检查勾选栏内容
表的元数据
因此,.d 是存储在 kdb 中的唯一元数据文件,它存储列顺序,其余与数据相关的所有信息都放置在数据/列文件中。
你是对的,属性信息存储在列/文件中,并且可以使用 get 来查看:
在幕后,它由单个字节表示,如下例所示:https://code.kx.com/q/kb/serialization/#integer-vector