文章目录
- Doris与ClickHouse 对比
- 相同点
- Doris优点
- Doris缺点
- 总结
Doris与ClickHouse 对比
之前公司有使用过一段时间的Clickhouse。最近在学习Doris 这里记录下学习过程中的一些对比。
相同点
- 都是可以用来存储海量数据的MPP数据库,都有着良好的查询性能,且都支持毫秒级别的条件查询。
- 都扩展了一些一般数据库本身不具备的外部数据导入能力。比如不需要额外的导入工具就可以对各种的外部数据源,比如消息队列,文件系统,以及其他各种数据库的数据接入能力,且都支持数据源的全量和增量两种数据接入方式。
- 都提供了适应不同场景的表引擎。比如都用不具备功能性的普通表引擎,具备去重功能的去重表引擎,满足聚合功能的聚合表引擎。
- 都具备对特定业务需求进行预计算的能力。也就是物化视图功能,能提前将那些查询条件固定,但是查询比较耗时的操作,通过物化视图的提前计算从而极大的加速查询效率。
- 都有着相对完善的生态。都对当下的一些主流的计算组件有比较好的支持。比如都支持Spark和Flink,以及其他常用的数据组件。
Doris优点
- 支持全中文官方文档。相比较ClickHouse, Doris的官方文档可以支持全中文,对于中文用户来说非常友好,可以节省大量的学习时间。而Clickhouse虽然也支持中文文档,但是支持的内容有限没有英文版的全面。
- 支持天然的分布式集群。相比较ClickHouse ,Doris是一个天然的分布式集群,跟Hadoop 一样数据会默认的保存到多台机器中,且默认会有冗余备份,对开发者来说使用成本很低。而ClickHouse想要实现分布式表是需要开发者自己手动的去在每台机器上去配置分片的分布情况,而且数据如果想要实现冗余还要借助Zookeeper在建表时实现冗余策略。
- 支持丰富的索引功能。除了建表时数据会根据建表时的key设置创建默认的内置索引外还可以后续通过添加用户索引来满足对一些字段的加速查询。比如bitmap索引,布隆过滤器索引等。
Doris缺点
- 提供的功能还不够成熟。虽然Doris提供的功能有很多,但其实还是有一些坑。比如虽然支持Spark,但是支持Spark 的版本比较少。而且使用过程中遇到过一些Bug。比如就算用匹配版本的 Spark Structured Streaming 到Doris 表时发现,根据官方文档的代码示例会抛出各种异常,最后只能通过修改原码改变写入策略才能搞定。
- 虽然支持物化视图。但是和ClickHouse 比起来弱很多,比如不支持基础表的join,而且不能对基础表字段运用非聚合函数。
- 聚合表模型功能有所欠缺。只支持最普通的sum,replace,max,min。相比与ClickHouse的聚合表引擎功能差的比较多。
4.字段类型支持不够丰富。相比与ClickHouse,比如IP数据类型目前Doris 还不支持
总结
相比较ClickHouse,Doris 是一款更容易使用且更容易维护的数据库。但是从查询支持的功能性以及极致的查询效率来看总体上时不如ClickHouse的