什么是列存储数据库?

发布于

列存储数据库是一种使用面向列的模型存储数据的数据库。

列存储数据库也可以称为:

  • 列数据库
  • 列族数据库
  • 面向列的数据库
  • 宽列存储数据库
  • 宽列存储
  • 列式数据库
  • 柱状店

列存储数据库的结构

列存储数据库使用称为键空间的 概念。键空间有点像 关系模型中的模式。键空间包含所有列族(类似于 关系模型中的表),其中包含行,其中包含列。

像这样:

包含列族的键空间图。

包含列族的键空间。

以下是对列族的详细介绍:

宽列存储数据库中的列族关系图。

包含 3 行的列族。每行包含自己的一组列。

如上图所示:

  • 一个列族 由多行组成。
  • 每行 可以包含与其他行不同的列数。并且这些列不必与其他行中的列相匹配(即它们可以有不同的列名、数据类型等)。
  • 每列 都包含在其行中。它不像关系数据库那样跨越所有行。每列包含一个名称/值对以及一个时间戳。请注意,此示例使用 Unix/Epoch 时间作为时间戳。

以下是每一行的构造方式:

宽列存储数据库中的行和列图。

以下是该行中每个元素的细分:

  • 行键。每行都有一个唯一的键,这是该行的唯一标识符。
  • 列。每列包含一个名称、一个值和时间戳。
  • 名称。这是名称/值对的名称。
  • 价值。这是名称/值对的值。
  • 时间戳。这提供了插入数据的日期和时间。这可用于确定最新版本的数据。

一些 DBMS 扩展了列族概念以提供额外的功能/存储能力。例如,Cassandra具有_复合列_的概念,它允许您将对象嵌套在列中。

列存储数据库的好处

列式数据库的一些主要优势包括:

  • 压缩。列存储在数据压缩和/或分区方面非常有效。
  • 聚合查询。由于它们的结构,列式数据库在聚合查询(例如 SUM、COUNT、AVG 等)方面表现得特别好。
  • 可扩展性。列式数据库具有很强的可扩展性。它们非常适合大规模并行处理 ( MPP ),其中涉及将数据分布在大型机器集群(通常是数千台机器)上。
  • 快速加载和查询。列式存储可以非常快速地加载。十亿行表可以在几秒钟内加载。您几乎可以立即开始查询和分析。

这些只是使列式数据库成为处理 大数据的组织的流行选择的一些好处。

NoSQL 与关系型

一些供应商和服务提供商(例如AWS)将列式数据库称为 NoSQL,理由是它们与关系数据库模型不同。

然而,其他人不同意。Steve Sarsfield( AnzoGraph产品副总裁)曾在 Vertica 工作,他解释说:

从用户的角度来看,列式数据库的元数据看起来与 RDBMS 完全相同。您执行模式管理的方式与 Oracle 大致相同。在大多数情况下,它 100% 符合 SQL 并符合 100 ACID(与许多 NoSQL 不同)。NoSQL 数据库往往是键值存储或文档存储。柱状也不是。

列存储 DBMS 示例