join|ClickHouse vs StarRocks选型对比( 五 )


·在集群中建立临时表 , 将原表中的数据复制到临时表 , 再删除原表 。 当数据量较大时 , 或者表的数量过多时 , 维护成本较高 。 同时无法应对实时数据变更 。
·通过配置权重的方式 , 将新写入的数据引导到新的节点 。 权重维护成本较高 。
无论上述的哪一种方案 , 从时间成本 , 硬件资源 , 实时性等方面考虑 , ClickHouse都不是非常适合在线做节点扩缩容及数据充分布 。 同时 , 由于ClickHouse中无法做到自动探测节点拓扑变化 , 我们可能需要再CMDB中写入一套数据重分布的逻辑 。 所以我们需要尽可能的提前预估好数据量及节点的数量 。
StarRocks中的在线弹性扩缩容
与HDFS一样 , 当StarRocks集群感知到集群拓扑发生变化的时候 , 可以做到在线的弹性扩缩容 。 避免了增加节点对业务的侵入 。
StarRocks中的数据采用先分区再分桶的机制进行存储 。 数据分桶后 , 会根据分桶键做hash运算 , 结果一致的数据被划分到同一数据分片中 , 我们称之为tablet 。 Tablet是StarRocks中数据冗余的最小单位 , 通常我们会默认数据以三副本的形式存储 , 节点中通过Quorum协议进行复制 。 当某个节点发生宕机时 , 在其他可用的节点上会自动补齐丢失的tablet , 做到无感知的failover 。
在新增节点时 , 也会有FE自动的进行调度 , 将已有节点中的tablet自动的调度到扩容的节点上 , 做到自动的数据片均衡 。 为了避免tablet迁移时对业务的性能影响 , 可以尽量选择在业务低峰期进行节点的扩缩容 , 或者可以动态调整调度参数 , 通过参数控制tablet调度的速度 , 尽可能的减少对业务的影响 。
ClickHouse与StarRocks的性能对比
单表SSB性能测试
由于ClickHouse join能力有限 , 无法完成TPCH的测试 , 这里使用SSB 100G的单表进行测试 。
测试环境
测试数据
测试结果
从测试结果中可以看出来 , 14个测试中 , 有9个SQL , StarRocks在性能上要超过ClickHouse 。
多表TPCH性能测试
ClickHouse不擅长多表关联的场景 , 对于TPCH测试机 , 很多查询无法跑出 , 或者OOM , 目前只进行了StarRocks的TPCH测试 。
测试环境
测试数据
选用TPCH 100G测试集 。

join|ClickHouse vs StarRocks选型对比
文章图片

测试结果

join|ClickHouse vs StarRocks选型对比
文章图片

导入性能测试
无论是ClickHouse还是StarRocks , 我们都可以使用DataX进行全量数据的导入 , 增量部分通过CDC工具写入到MQ中在经过下游数据库消费即可 。
数据集
导入测试选取了ClickHouse Native Format数据集 。 1个xz格式压缩文件大概85GB左右 , 解压后原始文件1.4T , 31亿条数据 , 文件格式为CSV

推荐阅读