什么是列式数据库?
列式数据库独立存储每个列的数据。这允许仅读取任何给定查询中使用的列的数据,从而减少磁盘读取量。代价是影响整行的操作会变得成比例地更加昂贵。列式数据库的同义词是列存储数据库管理系统。ClickHouse 就是这类系统的典型示例。
列式数据库的主要优势包括
- 仅使用众多列中少数几列的查询。
- 对大量数据进行聚合查询。
- 列级数据压缩。
以下是构建报表时传统行存储系统和列式数据库之间差异的示意图
传统行存储
列存储
列式数据库是分析应用程序的首选,因为它允许在表中拥有许多列以备不时之需,但在读取查询执行时间内无需为未使用的列付费(传统 OLTP 数据库在查询期间读取所有数据,因为数据存储在行中而不是列中)。面向列的数据库旨在进行大数据处理和数据仓库,它们通常使用低成本硬件的分布式集群进行本地扩展以提高吞吐量。ClickHouse 通过结合 分布式 和 复制 表来实现这一点。