一、背景
我们最初当时的ClickHouse的版本还是在1.x的时代,partition还不支持自定义,只能按月来划分。我们组内的数据存储还是按天来分表设计,例如“XXXX_20200612”。在后面升级了新版本的ClickHouse以后,新业务才开始慢慢使用上parition by day的模式,但是使用的ENGINE也只有MergeTree。
在今年年初我们对几份数据的存储架构进行了改造,记录一下改造过程。
二、改造
1、数据A
(1)旧架构
最早的表engine还是使用MergeTree的,并且因为不同的查询时间跨度有不同的数据时间粒度表,所以会在流式计算落地5min时间粒度的表后,再启一个离线计算从5min聚合计算出1h、1h聚合计算出12h的得到另外2张表。
这样子带来的问题就是由于有一个离线计算的存在,导致每次都需要从CH拉取一小时、十二小时的数据进行计算,离线查询的时候对于集群的稳定性挑战很大。
(2)新架构