从Clickhouse迁徙到Doris 数据仓库性能大优化
从一个OLAP数据库迁徙到另一个数据库是一项艰难的工程。即使能找到一些有用的数据工具,您或者仍会犹疑能否对数据架构启动大手术,由于不确定如何运作。
本文分享如何从ClickHouse迁徙到Doris的环节,包含为什么须要更改,须要留意什么以及如何比拟两个数据库在各自环境中的性能。
这里有一家电子商务SaaS提供商,其数据系统提供实时和离线报告、客户宰割和日志剖析服务。最后,他们为这些不同的目的经常使用了不同的OLAP引擎:
这三个组件都有各自的痛点:
由于它们共同上班,这种架构或者太难以导航,由于它须要在开发、监控和保养方面了解一切这些组件。此外,每次用户裁减集群时,他们必定中止集群并迁徙一切数据库和表,这不只是一个渺小的义务,而且会对业务形成渺小的搅扰。
Apache Doris填补了这些空白。
因此,方案启动迁徙。
ClickHouse是旧数据架构中的重要性能瓶颈,也是最后想要启动更改的要素,因此从ClickHouse开局。
表创立语句
这里构建了自己的SQL重写工具,可以将ClickHouse表创立语句转换为Doris表创立语句。该工具可以智能口头以下更改:
查问语句
雷同,也有工具可以将ClickHouse查问语句转换为Doris查问语句。这是为了预备ClickHouse和Doris之间的比拟测试。转换中的关键思考要素包含:
Apache Doris提供了宽泛的数据写入方法。关于实时链接,驳回Stream Load从NSQ和Kafka摄取数据。
关于大型离线数据,测试了不同的方法,以下是论断:
Spark-Doris-Connector是一种更通用的方法。它可以处置少量数据并确保写入稳固性。关键是找到正确的写入速度和并行性。
Spark-Doris-Connector还支持Bitmap。它准许您将Bitmap数据的计算上班负载移动到Spark集群中。
Spark-Doris-Connector和Flink-Doris-Connector都依赖于Stream Load。CSV是介绍的格局选用。用户的数十亿行测试标明,CSV比JSON快40%。
Spark Load方法应用Spark资源启动数据洗牌和排名。计算结果放在HDFS中,而后Doris间接从HDFS读取文件(经过Broker Load)。这种方法十分适宜大规模数据摄入。数据越多,摄入速度越快,资源应用率越高。
这里比拟了两个组件在SQL和衔接查问方案上的性能,并计算了Apache Doris的CPU和内存消耗。
Apache Doris在16个SQL查问中的10个中体现优于ClickHouse,最大的性能差距比例凑近30。总体而言,Apache Doris比ClickHouse快2~3倍。
关于衔接查问测试,经常使用了不同大小的主表和维表。
测试包含齐全衔接查问和过滤衔接查问。齐全衔接查问衔接主表和维表的一切行,而过滤衔接查问经常使用过滤器检索特定卖家ID的数据。结果如下:
主表(40亿行):
主表(250亿行):
主表(960亿行):
Doris在一切查问中都体现出相对较快的性能,而ClickHouse不可口头一切查问。
在CPU和内存消耗方面,Apache Doris在一切大小的衔接查问中都坚持稳固的集群负载。