什么是列存储数据库?
发布于
列存储数据库是一种使用面向列的模型存储数据的数据库。
列存储数据库也可以称为:
- 列数据库
- 列族数据库
- 面向列的数据库
- 宽列存储数据库
- 宽列存储
- 列式数据库
- 柱状店
列存储数据库的结构
列存储数据库使用称为键空间的 概念。键空间有点像 关系模型中的模式。键空间包含所有列族(类似于 关系模型中的表),其中包含行,其中包含列。
像这样:
包含列族的键空间。
以下是对列族的详细介绍:
包含 3 行的列族。每行包含自己的一组列。
如上图所示:
- 一个列族 由多行组成。
- 每行 可以包含与其他行不同的列数。并且这些列不必与其他行中的列相匹配(即它们可以有不同的列名、数据类型等)。
- 每列 都包含在其行中。它不像关系数据库那样跨越所有行。每列包含一个名称/值对以及一个时间戳。请注意,此示例使用 Unix/Epoch 时间作为时间戳。
以下是每一行的构造方式:
以下是该行中每个元素的细分:
- 行键。每行都有一个唯一的键,这是该行的唯一标识符。
- 列。每列包含一个名称、一个值和时间戳。
- 名称。这是名称/值对的名称。
- 价值。这是名称/值对的值。
- 时间戳。这提供了插入数据的日期和时间。这可用于确定最新版本的数据。
一些 DBMS 扩展了列族概念以提供额外的功能/存储能力。例如,Cassandra具有_复合列_的概念,它允许您将对象嵌套在列中。
列存储数据库的好处
列式数据库的一些主要优势包括:
- 压缩。列存储在数据压缩和/或分区方面非常有效。
- 聚合查询。由于它们的结构,列式数据库在聚合查询(例如 SUM、COUNT、AVG 等)方面表现得特别好。
- 可扩展性。列式数据库具有很强的可扩展性。它们非常适合大规模并行处理 ( MPP ),其中涉及将数据分布在大型机器集群(通常是数千台机器)上。
- 快速加载和查询。列式存储可以非常快速地加载。十亿行表可以在几秒钟内加载。您几乎可以立即开始查询和分析。
这些只是使列式数据库成为处理 大数据的组织的流行选择的一些好处。
NoSQL 与关系型
一些供应商和服务提供商(例如AWS)将列式数据库称为 NoSQL,理由是它们与关系数据库模型不同。
然而,其他人不同意。Steve Sarsfield( AnzoGraph产品副总裁)曾在 Vertica 工作,他解释说:
从用户的角度来看,列式数据库的元数据看起来与 RDBMS 完全相同。您执行模式管理的方式与 Oracle 大致相同。在大多数情况下,它 100% 符合 SQL 并符合 100 ACID(与许多 NoSQL 不同)。NoSQL 数据库往往是键值存储或文档存储。柱状也不是。


