ClickHouse 是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。最早由俄罗斯 IT 公司 Yandex 为 Yandex.Metrica 网络分析服务开发,在 2016 年基于宽松式的 Apache2.0 许可证发布。
ClickHouse 具有诸多优势。在性能方面,采用列式存储和多线程并行计算,能够在大数据量(TB 级别)下实现秒级的查询响应,如在相同的服务器配置与数据量下,平均响应速度是 Vertica 的 2.63 倍、InfiniDB 的 17 倍、MonetDB 的 27 倍、Hive 的 126 倍、MySQL 的 429 倍、Greenplum 的 10 倍、Spark 的 1 倍。它支持对数据的实时插入和查询,可以实现对实时数据的分析与监控。同时,提供了多种压缩算法,能够在不影响查询速度的前提下,将数据存储空间需求大幅降低,节省存储成本并提高数据读取效率。ClickHouse 采用分布式架构,可以通过添加节点实现计算和存储能力的水平扩展,无论是处理单台服务器的数据,还是跨越多台机器进行数据分布式处理,都能高效运作。还支持标准 SQL 查询,拥有丰富的函数、窗口函数和多种数据类型,方便数据分析人员和开发者快速上手。
在存储方面,ClickHouse 采用列式存储,将同一列的数据存储在一起。这样在执行只涉及部分列的查询时,可以显著减少 I/O 操作和数据读取量,从而大幅提升查询效率。允许对数据进行水平分区和分片,通过将数据划分到不同的节点或磁盘上存储,能够进一步提升查询效率和并行处理能力。
此外,ClickHouse 在数据压缩和存储方面采用了许多创新技术和策略。比如列式存储格式,由于相同类型的数据在列中是连续存储的,可以更好地利用数据的统计特性进行压缩。使用多种数据压缩算法,包括 LZ4、Zstd 和 Delta 压缩等。还使用了数据字典压缩技术,对于一些列中具有重复值的情况,可以将重复的值存储在字典中,并使用字典索引来代替真实的值。支持稀疏列的存储和压缩,将大量的 NULL 值或默认值压缩为一个位图,节省存储空间。同时,支持数据的分区存储和分布式存储,可以根据数据的一些特征进行分区,以便更好地组织和管理数据,并且可以在多个节点上进行数据的分布式存储,提高数据的可用性和查询性能。
clickhouse 的性能优势有哪些
ClickHouse 具有多方面的性能优势。首先,它