0

我对 CickHouse 中常见类型的禁用 NULL 有点困惑。NULL 值限制背后的想法是什么?

在 Google BigQuery 中,我的工作流程是在同一个表中存储尽可能多的指标,尽管我每行只能存储一个字段。

但在 ClickHouse 案例中,所有值都将设置为默认值。

  1. 这在存储效率方面可以吗?
  2. 通过这些表进行聚合的常用方法是什么?我的意思是只聚合真实值(没有那些被设置为默认值的值)
  3. 也许我应该使用不同的表方案结构?

ps 数据是加密货币指标,例如(价格、交易量、社区规模、链上数据)。

pss 我的常见查询是按时间段聚合,即

SELECT time_bucket('10 seconds', time) AS period, max(value), avg(value), fisrt(value), last(value) GROUP BY id, period

一些关于字段(+、-、/、*)、移动平均线、标准偏差的数学运算。(但这部分可以在接下来的步骤中使用 pandas 完成)。

time_bucket是 timescale 在时间段内聚合的原语。

4

1 回答 1

2

Clickhouse 从 2017 年中期开始支持 NULL。目前 ClickHouse 中的 NULL 支持已经足够成熟,可以在生产环境中使用(仍然可能出现一些小问题)。文档还没有准备好。

语法是这样的:

create table test (x Nullable(UInt8)) Engine = TinyLog;

通常,某些列支持 NULL,这意味着它有点慢,因为 NULL 状态应该以某种“特殊”方式存储和处理。对于任何数据库都是如此。

ClickHouse 起源于 Yandex Metrika,可能最初 NULL 对于 Metrika 场景来说并不是必需的。

于 2018-03-29T20:33:45.840 回答