2022-01-24 01:30:56 +00:00
|
|
|
|
---
|
2022-08-26 19:07:59 +00:00
|
|
|
|
slug: /zh/faq/general/columnar-database
|
2022-01-24 01:38:00 +00:00
|
|
|
|
title: 什么是列存储数据库?
|
2022-01-24 01:30:56 +00:00
|
|
|
|
toc_hidden: true
|
2022-04-10 23:08:18 +00:00
|
|
|
|
sidebar_position: 101
|
2022-01-24 01:30:56 +00:00
|
|
|
|
---
|
|
|
|
|
|
2022-01-24 01:38:00 +00:00
|
|
|
|
# 什么是列存储数据库? {#what-is-a-columnar-database}
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2023-03-26 14:08:19 +00:00
|
|
|
|
列存储数据库独立存储每个列的数据。这只允许从磁盘读取任何给定查询中使用的列的数据。其代价是,影响整行的操作会按比例变得更昂贵。列存储数据库的同义词是面向列的数据库管理系统。ClickHouse 就是这样一个典型的例子。
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2022-01-24 01:41:03 +00:00
|
|
|
|
列存储数据库的主要优点是:
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2022-01-24 01:38:00 +00:00
|
|
|
|
- 查询只使用许多列其中的少数列。
|
2023-03-26 14:10:52 +00:00
|
|
|
|
- 聚合对大量数据的查询。
|
|
|
|
|
- 按列压缩。
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2022-01-24 01:38:00 +00:00
|
|
|
|
下面是构建报表时传统的面向行系统和柱状数据库之间的区别:
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2022-01-24 01:38:00 +00:00
|
|
|
|
**传统行存储**
|
2023-03-26 14:15:23 +00:00
|
|
|
|
![传统行存储](https://clickhouse.com/docs/assets/images/row-oriented-3e6fd5aa48e3075202d242b4799da8fa.gif)
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2022-01-24 01:38:00 +00:00
|
|
|
|
**列存储**
|
2023-03-26 14:15:23 +00:00
|
|
|
|
![列存储](https://clickhouse.com/docs/assets/images/column-oriented-d082e49b7743d4ded32c7952bfdb028f.gif)
|
2022-01-24 01:30:56 +00:00
|
|
|
|
|
2023-03-26 14:08:19 +00:00
|
|
|
|
列存储数据库是分析应用程序的首选,因为它允许在一个表中有许多列以防万一,但不会在读取查询执行时为未使用的列付出代价。面向列的数据库是为大数据处理而设计的,因为和数据仓库一样,它们通常使用分布式的低成本硬件集群来提高吞吐量。ClickHouse 结合了[分布式](../../engines/table-engines/special/distributed.md)和[复制式](../../engines/table-engines/mergetree-family/replication.md)两类表。
|