NoSQL的列式数据模型


为了有效地适应各种数据并满足不断增长的数据存储需求,使用非常规数据库类型的趋势正在上升。关系数据库多年来一直是标准。然而,随着市场的演变和存储成本的下降,非关系数据库正变得越来越流行。

列式数据库适合这种情况。这些NoSQL数据库专为具有挑战性、复杂的查询而设计。与关系数据库不同,列式数据库按列而不是按行存储数据。通过组合这些列来创建子组。

这种类型的数据库具有可移动的键和列名。同一列族或列组的成员之间可以存储的行数和数据类型各不相同。

当需要大型数据模型时,最常使用这些数据库。它们对于数据仓库非常有用,并且在需要高性能或处理苛刻的查询时也很有用。

列式数据库中发生了什么

关系数据库作为具有行和列的表工作,并具有预定的模式。宽列数据库的模式类似但不同。它们也包括列和行。然而,它们具有动态模式,而不是固定在表中。每一列都单独保存。如果存在相关的或相似的列,则将它们组合成列族,然后将其与其他列族分开存储。

每个列族的初始列(称为行键)充当行标识符。此外,每个后续列都有一个列键(名称)。它允许通过识别行内的列来查询列。列键之后是值和时间戳,提供数据条目或修改时间的记录。

每行的关联列数及其名称可能不同。换句话说,数据库的列并不都具有相同数量的行。与空着不同,在宽列数据库中,对于给定列,这些行根本不存在。

行定向模型

序号

教师姓名

系别

ID

01

BK Sarkar

CSE

12

02

Supreeti Kaur

MECH

13

03

Sridher Patnaik

ECE

14

04

Bhaskar Karn

HMCT

15

列定向模型

序号

教师姓名

ID

01

BK Sarkar

12

02

Supreeti Kaur

13

03

Sridher Patnaik

14

04

Bhaskar Karn

15

序号

系别

ID

01

CSE

12

02

MECH

13

03

ECE

14

04

HMCT

15

熟悉关系数据库的人知道,每一列都具有相同数量的行,尽管某些列有时具有空值或看起来为空。与空着不同,在宽列数据库中,对于给定列,这些行根本不存在。

键空间中包含列族。类似于模式对关系数据库的功能或意义,每个键空间都包含一个完整的NoSQL数据存储。键空间表示一个无模式数据库,具有数据存储的设计及其自己的一组属性,而NoSQL数据存储没有预定义的结构。

MariaDB是目前最流行的列式数据库之一。它作为MySQL的一个分支而开发,目标是可靠且可扩展,能够处理各种用途和大量查询。Apache Cassandra是另一个列式数据库示例,它可以跨多个服务器处理大型数据负载,并使数据高度可用。此列表中的其他名称包括专注于分析的Druid、Hypertable和Apache HBase。这些数据库支持Outbrain、Spotify和Facebook等网站的特定方面。

列族类型

a)标准列族

这种列族类型具有键值对,其中行键作为键,值使用其名称作为标识符存储在列中,就像表一样。

b)超级列族

超级列表示一个列数组。每个超级列都由一个名称和一个值表示,该值映射到许多不同的列。通过将相关的超级列连接到单行下,形成超级列族。这类似于关系数据库中多个独立表的视图。如果您可以在一个位置存储单行的所有列和值——跨多个不同表的单个标识符——那么您将获得超级列族。

列式数据库的优势

可扩展性。这是一个显著的优势,也是使用这种类型的数据库来存储海量数据的主要理由之一。它提供大规模并行处理,并且可以分布在数百个不同的服务器上,具体取决于数据库的大小。这意味着它可以使用多个处理器同时执行相同的计算集。

压缩。它们不仅无限可扩展,而且还可以有效地压缩数据以减少存储需求。

响应迅速 鉴于它们旨在保留海量数据并对分析有用,因此加载时间很少并且查询执行速度很快。

列式数据库的缺点

联机事务处理。这些数据库对于联机分析处理比联机事务处理有效得多。这意味着虽然它们旨在检查事务,但它们在更新事务方面并不是特别有效。这就是为什么通常看到它们包含业务分析所需的数据,而数据存储在后端的关联数据库中。

增量数据加载如前所述,列式数据库经常用于分析。由于数据紧密地保存在列中,因此即使处理复杂的查询,也很容易获取它们。即使增量数据加载是可行的,列式数据库也不是处理它们的最佳方法。首先必须通过扫描列来找到正确的行,然后必须再次扫描这些列以找到需要覆盖的更改后的数据。

按行查询。这完全取决于为正确的目标使用正确的数据库类型,就像上面列出的可能的缺点一样。通过使用特定于行的查询,您会添加一个额外步骤来识别行,方法是扫描列,然后查找要获取的数据。访问单个列中的捆绑记录比获取分散在多个列中的单个记录更快。在列式数据库中,它专门设计用于帮助您快速获取所需的信息,频繁的特定于行的查询可能会导致性能问题,从而降低数据库的速度,从而削弱其用途。

结论

关系数据库多年来一直是标准。列式数据库适合这种情况。这种类型的数据库具有可移动的键和列名。它们对于数据仓库非常有用,并且在需要高性能或处理苛刻的查询时也很有用。NoSQL 数据库并非旨在用作广泛形式的存储,因为它们通常是为了满足特定需求而创建的。

更新于:2023年4月6日

845 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告