QuestDb 中的 Symbol 列是什么?

What is Symbol column in QuestDb?

我正在试用 QuestDb,它有 Symbol column 类型。 据我所知,存储很少更改的小字符串值很有用。在什么时候最好为字符串使用单独的 table 并改用整数键?我的简化模式是 2 tables:

仪器:ISIN,名称

价格:ISIN、价格值、日期

仪器是有限的,但随着时间的推移可以增加到 100 万条记录。我应该在价格中使用 ISIN 的符号列还是更好地创建整数工具 ID 并改为引用它?

内部 Symbol 已单独存储 table。尽管 table 似乎在 column 内部显示符号列的字符串值 存储 32 位 int。对于财务案例,ISIN 和其他代码应始终是符号。 符号针对代码查找进行了优化,例如下面的 select 一天的整个时间序列

select isin, ... from tab where isin = 'GB00BH4HKS39' and ts = '2021-01'

代码聚合:

select isin, sum(volume) from tab where ts = '2021-01'

不使用符号类型的情况是当您的数据集的字段有太多不同的值时。我会量化 “太多”超过 100,000 个值。此时开始执行必须将 String 解析为 Int 的代码,反之亦然 逐渐减少。