技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

NoSQL 的列式数据模型

dbmsmysqldatabase

为了高效地容纳各种数据并满足日益增长的数据存储需求,人们越来越倾向于使用非常规数据库类型。关系数据库多年来一直是标准。然而,随着市场的发展和存储成本的下降,非关系数据库正变得越来越流行。

列式数据库非常适合这种情况。这些 NoSQL 数据库专为具有挑战性的复杂查询而设计。与关系数据库相比,列式数据库将数据存储在列中而不是行中。通过组合这些列可以创建子组。

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

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

列式数据库中会发生什么

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

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

每行的关联列数及其名称可能不同。换句话说,数据库的列并不都具有相同数量的行。尽管它们可能具有相似的名称,但每列实际上都包含在一行中,并不跨越所有行。

面向行的模型

S No.

Teacher Name

Department

ID

01

BK Sarkar

CSE

12

02

Supreeti kaur

MECH

13

03

Sridher Patnaik

ECE

14

04

Bhaskar karn

HMCT

15

面向列的模型

S No.

Teacher Name

ID

01

BK Sarkar

12

02

Supreeti kaur

13

03

Sridher Patnaik

14

04

Bhaskar karn

15

S No.

Department

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 数据库并非旨在用作广泛的存储形式,因为它们通常是为了满足特定需求而创建的。


相关文章