如何在clickhouse中为维度表设计分区键?

dzhpxtsq  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(0)|浏览(898)

在我的例子中,我需要将一些维度表加载到clickhouse中,以便与事实表连接。
例如,要与订单(事实)表联接的买方(维度)表:

select 
  order.id, 
  buyer.name
from order 
left join buyer
on order.buyer_id = buyer.id

一般来说,我将创建一个 engine = Join table。但我的一些维度表太大,无法放入ram中,所以我选择mergetree引擎作为解决方案。正如我们所知,clickhouse会自动切断查询中指定分区键的分区数据,并使用稀疏索引快速定位数据。
我的问题是,
如何为mergetree引擎维度表选择分区键?
我应该用hashed吗 id 作为分区键,作为维度表的 id 键通常是连接的?
建议每个分区有多少个标记(部件)?
由于8192是推荐的粒度,我可以设置诸如modulo(id,10)之类的分区规则来控制分区的数量和分区中的部分数量。但是如何设置分区个数与分区中部分个数的比值,以便更有利于数据压缩和提高查询速度呢?模(id,10)分区方式会破坏数据一致性和数据压缩吗?
或者,我应该避免在clickhouse中创建维度表,而是创建一个严格满足要求的宽表吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题