acm-header
登录

ACM通信

BLOG@CACM

理解NoSQL数据库类型:列


NoSQL已经发展成为传统SQL数据库管理方法的流行补充。通过打破关系模式,NoSQL允许使用强大的功能,否则这些功能将不可用或难以实现。换句话说,它具有高度的横向可扩展性和灵活性,通常会夸奖预算或突破CI / CD项目。

四个主要的NoSQL数据库存储/系统:

1.键值

最简单的NoSQL类型是键值存储**,它为每个给定的项分配值和名称/键。Redis就是这类系统的一个例子。

2.文档

**文档存储**使用复杂的数据模式,称为带有关联键对的文档。MongoDB使用该数据库系统。

3.图

**图形数据库**用于一般用途,特别是非结构化数据和社交网络。Neo4j是一个流行的系统示例。

4.列

**列存储**依赖于列数据模式而不是行数据模式,在其他方面功能类似于关系数据库表。HBase和Apache Cassandra是两个系统示例。

定义:列数据库

虽然列存储将数据组织成列,但它们的操作方式基本上与关系数据库中的表相同。然而,它保留了更多的灵活性,特别是在快速获得跨多个或所有表的元数据洞察方面,没有性能损失;例如,找出你所有男性顾客的平均年龄。

没有必要创建性别或年龄的复合索引,这可能需要gb或tb的查询工作;只调查与查询相关的列。相比之下,SQL数据库将扫描无数元组:表示数百万行/列。

也称为键空间的概念,列被分组为列族,每个列族包含行和进一步的列。一种理解方法是将它看作具有列分支的行的主干。不同的层次在水平上相互超连接,因此称为柱状族。

在每一行中,可以使用更多的列,每个列都有自己的标题、大小(不需要统一的标准)和链接。每个列都存在于特定的行中,可以为其分配名称、时间戳(在数据输入到数据库时戳上戳)和值对。行键是促进列查询的唯一标识符。这里有一个最新的最流行和最新的名单wide-store /列数据库(参见该链接的第一部分)。

列数据库的优点

柱状数据库有以下几个主要好处:

  • 横向可伸缩性对于列存储数据库来说是极好的。虽然关系系统非常擅长为OLTP事务最大化严格的垂直(基于行)设计,但列数据库可以水平扩展到几乎无限。跨大范围的机器集群使用,甚至数千台;非常适合大规模并行处理和OLAP。

  • 通过扩展,聚合查询比关系数据库更快,适合于需要快速完成大量查询的项目。加载以十亿为单位的行可以在几秒钟内完成,允许几乎即时的查询。

  • 压缩做得非常好,因此列存储是一种有效的存储形式。在一个列中存储大量的信息,减少磁盘大小和资源级别。

  • 灵活性高。列之间不需要镜像。它是对非结构化数据的补充,可以轻松地连接或删除列,而不需要分离整个数据库。应该注意的是,输入完全新的记录查询将需要对所有表进行更改。

总的来说,列数据库在报告和分析方面做得很好:您可以在不需要昂贵的基础设施的情况下存储大量数据,而且查询速度很快。

列数据库的限制

列数据库在其他情况下自然也有缺点:

  • 由于柱状数据设计的水平特性,OLTP应用程序与柱状存储不兼容。由于这个原因,关系数据库仍然是银行机构和个人会计的首选,至少在典型的日常事务中是这样。

  • 设计和索引模式既费力又复杂。最终,这种解决方案的能力将不如一般关系数据库更容易完成的功能。最好避免增量数据加载,因为它的性能很低。

  • 安全的影响。由于缺乏本机安全特性,所有NoSQL数据库都更容易受到在线攻击。如果网络安全非常重要,那么应该考虑使用关系模型的方法,或者尽可能定义您的模式。

列数据库只在NoSQL中可用吗?

在结束之前,需要注意的是,列存储并不是NoSQL专有的。您经常听说,列数据库与关系模型非常不同,因此它们完全属于NoSQL领域。

这并不一定是真的,而且NoSQL vs SQL辩论通常是相当复杂的。

列存储数据库是传统SQL方法的虚拟镜像。例如,键空间允许模式管理,尽管NoSQL通常被认为是无模式的。元数据通常可以与传统关系模型相同。最讽刺的是,列存储通常遵从SQL和ACID。

更引人注目的是,虽然大多数NoSQL数据库要么使用键存储库,要么使用文档存储库,但列存储库两者都不使用。

总而言之,专栏书店,就像图形数据库在两个世界之间踩点微妙的界限。

结论

列存储提供了一种非常强大的解决方案,具有自然限制。例如,基本的金融事务仍然依赖于关系数据库,因为对磁盘的写入操作既垂直又通过行进行。但是,列中的一致性和隔离保证较少,其中行需要多次重写。

也就是说,专栏商店是最常用和最流行的数据设计之一。

亚历克斯·威廉姆斯是一个拥有超过15年经验的全栈开发人员,并且拥有英国托管数据


没有发现记录

登录为完全访问
»忘记密码? »创建ACM Web帐号
Baidu
map