列式数据库

列式数据库是一种 DBMS,它以列而不是行的格式存储数据,并针对分析工作负载进行了优化

什么是列式数据库?

列式数据库,也称为列向数据库或面向列的数据库,是一种将数据以列而不是像传统数据库那样以行形式存储在磁盘上的数据库。

早期的数据库是为被归类为在线事务处理 (OLTP) 的标准业务工作负载而设计的。基于行的关系数据库非常适合这种类型的工作负载,因为查询通常需要使用同一行中的多个值,因此将所有数据彼此相邻地存储在磁盘上效果很好。

这方面的一个例子是返回网页上关于特定产品的所有信息,或者获取用户个人资料页面的所有用户信息。将整个行顺序地存储在磁盘上,允许在一次寻道中从磁盘检索所有数据。

然而,对于分析工作负载,只需要一行中的几个列值,但用户想要数据库中每一行的该值,基于行的存储效率不高。数据库被迫扫描整个数据集,然后丢弃大量不需要的数据,才能获得像列的平均值这样简单的东西。

这种类型的工作负载称为在线分析处理 (OLAP)。为了在这种类型的查询中获得更好的性能,解决方案是设计面向列的数据库,允许用户只获取满足其查询所需的数据列,而不必扫描整行不必要的数据。

使用列式数据库的优势

那么,为什么要费心设置和管理另一个数据库呢?开发者不是为了好玩而这样做,他们这样做是因为面向列的数据库为各行各业的企业提供了一些主要优势。让我们来看看列数据库的几个主要优势。

性能

列数据库最明显的卖点首先是性能。但是我们谈论的性能差异有多大呢?如前所述,与关系数据库相比,这不是一个小量,而是数量级。Clickhouse 是一个流行的开源列数据库,它为流行的数据库提供了一套在相同硬件上进行查询的 基准测试套件,结果如下

  • 比 PostgreSQL 快 195 倍
  • 比 MySQL 快 570 倍
  • 比 MongoDB 快 755 倍

clickhouse benchmarks screenshot

虽然没有哪个基准测试是完美的,但这个基准测试让我们了解了在一个包含约 1 亿条记录和 42 种不同类型的分析查询的数据集上的性能,以测试数据库在生产中常用的全方位分析查询(如分组、排序和聚合数据点)方面的性能。

成本节约

为列数据库提供如此出色性能的相同优化的一个明显好处是,它们可以在更少的硬件上获得更好的性能。在许多企业运营的规模下,这可以节省数百万美元的硬件和存储成本。

提高生产力和洞察力

对于许多分析查询,列式数据库可以将性能提高几个数量级。这使得开发人员和业务分析师更容易迭代和创新他们使用数据的方式。反过来,这使他们更有效率,因为在许多情况下,列式数据库在几秒钟内返回查询结果,而标准数据库可能需要几分钟或几小时。

InfluxDB 作为列式数据库

InfluxDB 现在提供云原生、实时、列式数据库,用于时序数据和工作负载。InfluxDB Cloud 基于 Rust 和 Apache Arrow 构建,提供列式数据库的性能和优化优势,以及原生的 SQL 查询(通过 Apache Datafusion)和无限的 基数

常见问题解答

列式数据库如何存储数据?

列式数据库以列而不是基于行的格式存储数据。

列式数据库是关系型数据库还是 NoSQL 数据库?

对于哪些特定构建定义了 NoSQL 数据库,有不同的看法,而列式数据库本身也可能差异很大。一些仅将基于行的系统更改为基于列的系统的列式数据库可能仍然是关系型的,而其他类型的可变列式数据库则被归类为 NoSQL。

列式数据库还有哪些其他名称?

列式数据库也可能被称为面向列的数据库或列数据库。

列式数据库是 NoSQL 数据库吗?

这里是数据库行业中的术语变得有点复杂的地方。任何类型的数据库设计(例如面向列的数据库),如果不是传统的关系数据库设计,有时都会被称为 NoSQL。

然而,与某些键值存储和其他设置不同,传统面向列的数据库中的数据仍然通常根据位置而不是身份进行组织。因此,一些纯粹主义者认为,传统的、更简单的列式数据库本身不是 NoSQL 设计。

另一方面,某些类型的面向列的数据库可以被描述为 NoSQL。

例如,以宽列存储数据库格式为例,其中列的命名和格式可能因行而异。如果这种类型的列式数据库类似于键值存储系统,则该数据库构建可能在本质上符合 NoSQL 的条件。

此外,重要的是要查看列式数据库如何存储数据,以及列式数据库是否保留了 ACID 设计的组件。

在传统数据库中,ACID 提供原子性、一致性、隔离性和持久性。一些其他数据库构建放弃了其中几个要求以提供更好的性能。另一种替代系统出现了,称为 BASE(基本可用性、软状态、最终一致性),NoSQL 列式数据库模型可能会使用它来代替。

因此,不强制执行 ACID 的 NoSQL 数据库可能与另一种类型的列式数据库从根本上不同,后者仅将行要求更改为列要求,而没有取消关系数据库的其他方面。

为了避免吹毛求疵,面向列的数据库设计的支持者可能会说,无论它是否是 NoSQL,它确实从过去几十年流行的早期关系数据库设计中进行了创新。

掌控您的运营,并将存储成本降低 90%

免费开始使用 运行概念验证

无需信用卡。

quote-shape

相关资源


DBU logo

免费 InfluxDB 培训

通过免费的自定进度和讲师指导的培训,快速开始您的 InfluxDB 之旅。

dbu-illustration