【发布时间】:2019-07-28 22:53:28
【问题描述】:
我有几个关于 clickhouse 中的自定义分区的问题。背景:我正在尝试在 clickhouse 之上构建一个 TSDB。我们需要支持非常大的批量写入和复杂的 OLAP 读取。
假设我们按月使用标准分区,并且我们的 clickhouse 集群中有 20 个节点。我想知道同月的数据会全部流向同一个节点还是clickhouse会做一些内部平衡并将同月的数据放到几个节点?
如果同一个月的所有数据都写入同一个节点,那么这对我们的场景来说将是非常糟糕的。我可能会考虑 patition by (timestamp, tags),其中标签是定义数据源的不同标签。我们的监控系统会每 30 秒将数据写入 TSDB。我们的读取模式通常是单表范围扫描或多个表连接在一个列上。关于我应该如何自定义分区策略的任何建议?
由于clickhouse不支持二级索引,我们会在列上运行选择查询,我认为我应该把那些重要的列放到主键中,所以我的主键可能会像(时间戳,ip,端口...),有关此设计的任何建议或制作说明为什么 clickhouse 不支持其他非主列上的位图索引之类的二级索引?
【问题讨论】:
-
有人在这里提供有关 click-house 分片的提示吗?
-
集群中的数据位置取决于集群配置和分布式表引擎中的分片键。答案还取决于用于写入数据的方法——直接在每个分片上或通过分布式表中的 INSERT。有关更多信息,请参阅文档clickhouse.yandex/docs/en/operations/table_engines/distributed。 PS:最好将这些问题发送到 Telegram 中的 Clickhouse 频道(t.me/clickhouse_en)。有更多机会直接从 CH 开发人员那里获得有关 CH 设计决策的答案。
标签: olap opentsdb clickhouse