clickhouse
ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,是基于 MPP 架构的分布式 ROLAP (Relational OLAP)分析引擎主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告,可以支持任意指标、任意维度并秒级给出反馈。最大的特色是高性能的向量化执行引擎,而且功能丰富、可靠性高。
OLAP(On-Line Analytical Processing)翻译为联机分析处理,专注于分析处理,从对数据库操作来看,OLAP是对数据的查询;
OLTP(on-line transaction processing)翻译为联机事务处理,专注于事务处理,从对数据库操作来看,OLTP主要是对数据的增删改。
特点
列式存储、多样化引擎、高吞吐写入能力
使用MergeTree基于分区、索引,在查询时候缩小数据范围。
ClickHouse 之所以如此快,是因为它在设计和实现时采用了多种技术和优化策略:
1.列式存储:ClickHouse采用列式存储,这种方式可以提高数据压缩比,减少I/O访问,从而加速查询速度
2.数据分区:ClickHouse支持将数据分成不同的分区,可以减少数据扫描的范围,提高查询速度
3.数据本地化:ClickHouse可以将数据存储在本地磁盘上,避免了数据网络传输的开销
4.数据压缩:ClickHouse支持多种数据压缩算法,可以降低磁盘I/O访问和网络传输的数据量
5.向量化计算:ClickHouse使用SIMD指令集和CPU缓存来实现向量化计算,这样可以在处理大数据集时提高计算速度
6.并行查询:ClickHouse支持并行查询,可以将一个查询分成多个子查询,同时执行,从而加速查询速度
7.多级缓存:ClickHouse支持多级缓存,可以将热数据存储在内存中,减少磁盘I/O访问
综上所述,ClickHouse采用多种优化技术,如列式存储、数据分区、数据本地化、数据压缩、向量化计算、并行查询和多级缓存等,使得它具有出色的查询性能和扩展性
Doris
Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。
MPP 即 Massively Parallel Processing,大规模并行处理,即海量数据并发查询.
也是列式存储的
Doris 数据模型的一个显著特点是 Key 列全局唯一,因此存在相同 Key 值的不同 Value。Join性能更好。
clickhouse更优的方面
性能更佳,导入性能和单表查询性能更好,同时可靠性更好
功能丰富,非常多的表引擎,更多类型和函数支持,更好的聚合函数以及庞大的优化参数选项
集群管理工具更多,更好多租户和配额管理,灵活的集群管理,方便的集群间迁移工具
Doris更优的方面
使用更简单,如建表更简单,SQL标准支持更好, Join性能更好,导数功能更强大
运维更简单,如灵活的扩缩容能力,故障节点自动恢复,社区提供的支持更好
分布式更强,支持事务和幂等性导数,物化视图自动聚合,查询自动路由,全面元数据管理
那么两者之间如何选择呢?
业务场景复杂数据规模巨大,希望投入研发力量做定制开发,选ClickHouse
希望一站式的分析解决方案,少量投入研发资源,选择Doris
另外, Doris源自在线广告系统,偏交易系统数据分析;ClickHouse起源于网站流量分析服务,偏互联网数据分析,但是这两类场景这两个引擎都可以覆盖。如果说两者不那么强的地方,ClickHouse的问题是使用门槛高、运维成本高和分布式能力太弱,需要较多的定制化和较深的技术实力,Doris的问题是性能差一些可靠性差一些,下面就深入分析两者的差异。
kylin
Kylin 是基于 Hadoop 的 MOLAP (Multi-dimensional OLAP) 技术,核心技术是 OLAP Cube;与传统 MOLAP 技术不同,Kylin 运行在 Hadoop 这个功能强大、扩展性强的平台上,从而可以支持海量 (TB到PB) 的数据;它将预计算(通过 MapReduce 或 Spark 执行)好的多维 Cube 导入到 HBase 这个低延迟的分布式数据库中,从而可以实现亚秒级的查询响应;最近的 Kylin 4 开始使用 Spark + Parquet 来替换 HBase,从而进一步简化架构。由于大量的聚合计算在离线任务(Cube 构建)过程中已经完成,所以执行 SQL 查询时,它不需要再访问原始数据,而是直接利用索引结合聚合结果再二次计算,性能比访问原始数据高百倍甚至千倍;由于 CPU 使用率低,它可以支持较高的并发量,尤其适合自助分析、固定报表等多用户、交互式分析的场景。
优势场景方面:ClickHouse 通常适合几亿~几十亿量级的灵活查询(更多量级也支持只是集群运维难度会加大)。Kylin 则更适合几十亿~百亿以上的相对固定的查询场景。
ROLAP 与 MOLAP 与 HOLAP 之间的区别
ROLAP 与 MOLAP 与 HOLAP 是表示逻辑数据模型的数据仓库的相关术语。
ROLAP 是指关系数据的关系在线分析处理。
MOLAP 被称为多维在线分析处理,它通过多个数据维度来实现,特点是数据立方体。
HOLAP 被称为混合在线分析处理,适用于 ROLAP 和 MOLAP 概念。
数据仓库中的数据存储和数据安排、设计的视图访问取决于 OLAP 实现的类型。ROLAP SQL 是查询技术,而 MOLAP 使用稀疏矩阵,而 HOLAP 使用 SQL 和稀疏矩阵技术。