当前位置: 首页 > 科技观察

NoSQL数据库类型说明:列式数据库

时间:2023-03-14 18:09:12 科技观察

为了满足日益增长的数据存储需求,以最高效的方式容纳数据多样性,企业越来越倾向于选择非标准数据库类型。多年来,企业主要使用关系数据库。然而,随着需求的变化和存储价格的下降,人们开始转向非关系数据库。列式数据库符合这种描述。这些是NoSQL数据库,专为高度分析、复杂的查询任务而构建。与关系数据库不同,列式数据库将数据存储在列中而不是行中。收集这些列以形成子组。这类数据库的键名和列名是不固定的。同一列族或列族中的列可以有不同的行数,并且可以保存不同类型的数据和名称。当需要大数据模型时,最常使用这些数据库。它们对数据仓库很有用,或者在需要高性能或处理密集查询时很有用。列式数据库是如何工作的关系数据库有一个固定的模式,它们有行表和列表。宽列数据库具有相似但不同的模式。它们也有行和列。但是,它们不是固定在表中,而是具有动态模式。每列单独存储。如果存在相似(相关)的列,则将它们关联到列族中,然后将这些列族与其他列族分开存储。行键是每个列族的第一列,充当行的标识符。此外,之后的每一列都有一个列键(名称)。它标识行中的列,启用对列的查询。一个值和一个时间戳出现在列键之后,指示数据何时被输入或修改。与每一行关联的列数或它们的名称可能会有所不同。换句话说,并非列族的每一列都具有相同的行数。事实上,即使它们可能共享它们的名称,但每一列都包含在一行中并且不会跨越所有行。接触过关系型数据库的人都知道,关系型数据库中每一列的行数都是一样的,恰好有些字段有空值,或者看起来是空的。对于宽列数据库,这些行不是空的,只是不存在于特定的列中。列族存在于键空间中。每个键空间都包含一个完整的NoSQL数据存储,并且具有与模式对关系数据库类似的作用或重要性。但是,由于NoSQL数据存储没有集合结构,因此键空间表示包含数据存储设计及其自身属性集的无模式数据库。当今最流行的列式数据库之一是MariaDB。作为MySQL的分支创建,它功能强大且可扩展,可以处理许多不同的用途和大量查询。ApacheCassandra是柱状数据库的另一个例子,它处理跨多个服务器的海量数据负载,使数据高度可用。其他数据库包括专为分析而设计的ApacheHBase、Hypertable和Druid。这些数据库为Outbrain、Spotify和Facebook等平台的某些功能提供支持。ColumnFamilyType标准色谱柱系列。这种列族类型类似于表;它包含一个键值对,其中键是行键,值存储在列中,使用它们的名称作为标识符。超列家族。超列表示列数组。每个超级列都有一个名称和一个值,将超级列映射到几个不同的列。相关超列关联在单行超列系列中。与关系数据库相比,这就像数据库中的几个不同的表。想象一下,能够查看单个行的列和值,跨许多不同表的单个标识符,并能够将它们全部存储在一个地方:这就是超级列族。列式数据库的优点可扩展性。这是企业使用此类数据库存储大数据的主要优势和主要原因之一。可以根据数据库的大小分布在数百台不同的机器上,支持海量并行处理。这意味着它可以使用多个处理器同时处理同一组计算。压缩。它们不仅具有无限可扩展性,而且还擅长压缩数据,从而节省存储空间。反应灵敏。最短的加载时间和快速的查询执行,因为它们旨在支持大数据并且适合分析。列式数据库的缺点在线事务处理。对于联机事务处理,这些数据库的效率不是很高,不如联机分析处理。这意味着它们不是很擅长更新事务,而是旨在分析它们。这就是为什么我们看到这些数据库用于保存业务分析所需的数据,而关系数据库将数据存储在后端。增量数据加载。如上所述,通常使用列式数据库进行分析,即使在处理复杂查询时也可以快速检索数据,因为数据在列中密切相关。虽然增量数据加载并非不可能,但列式数据库不会以最有效的方式执行它们。首先需要扫描列以识别正确的行,然后需要进一步扫描以找到需要覆盖的修改数据。特定于行的查询。与上面提到的缺点一样,这一切都归结为同一个问题,即为正确的目的使用正确类型的数据库。对于特定于行的查询,您引入了扫描列以识别行然后定位要检索的数据的额外步骤。访问分布在多个列中的单个记录需要花费大量时间,而访问单个列中的分组记录则更快。频繁的特定于行的查询会减慢列式数据库的速度并导致性能问题,这肯定会违背数据库的目的,即帮助快速获取所需信息的目的。NoSQL数据库主要设计用于特定用途,不应用作通用类型的存储。宽列数据库是基于列而不是基于行的,主要用于存储和查询大数据。此类别中有许多不同的数据库可用,在寻找最合适的数据存储解决方案时,您应该探索它们的功能。