NoSQL数据库:关键分析和比较外文翻译资料

 2022-04-10 10:04

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料


NoSQL数据库:关键分析和比较

摘要

当前的研究探索并区分了NoSQL数据库存在的各种形式。它考察了NoSQL的需求,以及它们如何成为关系数据库的重要替代。NoSQL数据库可以分为四个主要分类:键值存储、图形数据库、宽列存储和文档存储。这些类别是在功能特性和非功能特性的基础上进行比较的。非功能特性包括性能、可伸缩性、灵活性、结构和复杂性。功能特性包括去规范化、连接、原子性、聚合和键。然后,为了进一步分析,从这些类别中选择一个数据库:MongoDB(文档存储)、Cassandra(宽列存储)、Redis (键值存储)和Neo4j(图数据库)。选择的数据库与他们的数据模型、CAP定理、分配律和其他因素进行了比较。通过对非功能特性进行比较,可以发现,如果需要高性能、灵活性和可伸缩性,并且如果我们以JSON格式表示数据,则可以使用文档存储。列存储可以用于半结构化数据,这需要高性能和可伸缩性。Redis是一种内部储存,在单碎片操作的情况下执行异常快。当涉及高度互联的数据和不断演进的数据模型时,可以使用图形数据库。MongoDB、Cassandra、Redis和Neo4j的比较得出的结论是,它们都遵循水平扩展,并且是自由模式的。除了Neo4j之外,其他的没有完全的ACID属性。对于数据库MongoDB、Redis和Cassandra来说,写和删除操作是快速的,而阅读操作在Cassandra中比较慢。在Neo4j的情况下,REST性能与MongoDB相似,而嵌入的性能相对较慢。我们还讨论了这些数据库如何在分布式环境中工作。

关键词:数据库 ; NoSQL ; 比较 ; 数据库系统;

一:介绍

分布式web应用程序和云计算的最新进展产生了大量数据,这些数据不能由单个节点系统来管理。因此,分布式存储提供了提供高可用性和可伸缩性的解决方案。分布式(非关系存储)的例子是Amazon和谷歌的Big Table(Bigtable是一个为管理大规模结构化数据而设计的分布式存储系统,它和GFS、MapReduce并称为谷歌技术'三宝'。)。

(一)关系型数据库

最初,每个记录都是手工维护的,但是技术的出现导致了这些年来的巨大变化。创建维护数据更容易的数据库。数据库从简单的文本文档到复杂得多的数据库。这些数据库必须定期改进,以消除任何冗余、不一致或不好的数据,以便有效地执行。最常见的、众所周知的存储该数据的概念是通过关系模型。结构化查询语言(SQL)从数据库池中提取相关数据。

因为其简单性,关系数据库是最常见的数据库类型。在RDBMS[26]中,数据被分解成几个表,这些表可以按照需求访问,而不必实际地对表进行更改。连接、聚合、添加、创建、检索和删除等操作在关系数据库中很容易执行,扩展或修改现有表也很容易。例如:SQL Server[23]、Oracle数据库[24]和MySQL[25]。

(二)、为什么建立NoSQL数据库?

日益增长的数据带来的主要挑战是它的不一致性。由于这个问题,近年来,需要一个非关系数据库来扩展行业的需求,同时必须非常高效。这就产生了NoSQL数据库,它具有高度的可伸缩性、高效,并且可以存储大量数据。

虽然RDBMS能够管理这三种数据,即结构化、半结构化和非结构化的,但需要人力和折衷,以实现对非结构化和半结构化数据的有效存储。RDBMS存储结构化数据,因为它们已经处于必需的状态。但是,存储半结构化数据涉及到一些复杂性。在存储之前,需要将半结构化数据转换为关系数据。而且,在非结构化数据的情况下,数据被保存为blob对象,而不是直接存储。

因此,为了满足数据的非一致性,一个新的思想被赋予了数据的存储,从而导致了NoSQL(Not only SQL)数据库的创建。

NoSQL数据库已经成为关系数据库的重要替代品,我们根据可伸缩性、可用性和容错性等特性来选择它们。它们不遵循所有RDBMS所采用的常规表/行/列方法。NoSQLs主要被称为分布式或非关系数据库。它们支持水平的可伸缩性,因此增加了服务器的数量,而不是升级RDBMS中所发生的系统的硬件。

(三)、NoSQL的重要性

NoSQL[16][39]数据库旨在管理大型、多样和不断变化的数据集。它们通常用于分布式系统或云数据库。在NoSQL数据库中避免了僵化的方案和许多其他限制。它们最初是作为数据库引入的,以提供对长期存在的关系数据库的替代。对于这些NoSQL数据库,可伸缩性、容错和可用性是最重要的决定因素。它们不遵循RDBMS的严格模式方法[26]。在关系数据库中,NoSQL具有一定的优势,因为它们能够高效地处理大数据,提供高速度,并且能够处理各种复杂的数据。由于它们是水平可伸缩的,管理它们也更简单,这可以通过将新节点添加到集群中来实现,从而有效地处理负载。为了避免失败,因为数据在多个服务器之间分布,所以即使一个失败了,其他的仍然处于工作状态,因此可以很容易地继续错误节点的工作。这保证了在数据库中不存在单点故障,并且描述了一个NoSQL数据库的真实容错。在数据和功能方面,它还具有内置冗余的能力。

有四种通用类型的NoSQL数据库,每个数据库都有自己的属性:

图数据库:这类数据库的基础是图论。例:Neo4j[27]和Titan[28]。

键值储存:在这个数据库中,我们将数据存储在两个部分,即key和value。例:Redis[29], DyanmoDB [30], Riak [31].

列存储:这里,数据以数据列的形式存储。例:HBase[32],BigTable[18][20]和Cassandra[33]。

文档数据库:这个数据库是键值存储的高级版本。这里将值保存为以复杂结构形式(如JSON)形式的数据的文档。例MongoDB [34] and CouchDB[35].

CAP[19]定理解释了对所有数据库的限制。它声明,任何人都只能从三个特性中任选两个,缩写为CAP,其中C代表一致性,A代表可用性,P代表分区公差。布鲁尔定理的主要表述是:对于任何共享数据系统,可以从这些属性中存在最多两个属性[36]。

二:文献调查

图1描述了我们对来自VLDB、IEEE、ACM和SIGMOD等不同来源的论文进行了调查,这些论文被分为六个组(NoSQL、SQL/RDBMS、Redis、MongoDB、Cassandra和Neo4j),并对每个组进行了关键分析。

图一:相关论文的分类

NoSQL:

NoSQL,Not only SQL,是不遵循关系数据库指南的分布式数据模型。它支持巨大的数据存储、水平缩放和大规模并行数据处理[9]。NoSQL也支持无法用SQL[17]表示的数据。

因此,NoSQL数据库被广泛采用,取代了传统的SQL数据库,特别是在我们管理大量数据的场景中[13]。NoSQL是为了克服关系数据库的缺点而开发的。因此,许多公司投资研究这些数据库的领域[9]。现在,NoSQL数据库也可以通过中间件来实现ACID属性[3]。NoSQL数据库依赖于底层存储系统服务和功能[8]。

RDBMS/SQL

关系数据库是最常见的数据库类型,因为它的简单性。在RDBMS[26]中,数据被分成多个表,这些表通常以它们的规范化形式来提高效率。在访问数据时,可以根据用户的需求重新组装。结构化查询语言(SQL)包括四种类型的查询,分别是数据定义语言(DDL)、数据控制语言(DCL)和数据操作语言(DML)。每个人都有自己的一组查询,这些查询被执行来定义数据,比如创建表、控制变化表等等,根据使用更新、嵌入等的需求来操作现有数据,并使用诸如回滚、提交等查询来定义事务的控制。NoSQL的详细比较和RDBMS数据的有效性等功能,查询语言、数据类型、数据存储、模式、灵活性、可伸缩性和在NOSQL中,ACID遵从性[40]通常被呈现为只支持单个记录事务和最终一致性副本系统,假定事务是可交换的。这样,ACID事务就会因为性能而受到影响[41]。

文档存储(MongoDB):

MongoDB位于CAP定理的CP端。MongoDB支持format BSON[37],它是JSON[38],具有动态模式的文档,使数据集成变得更容易和更快。MongoDB的一些常见特性是,它有一个面向文档的存储层和294 2017年关于智能国家的计算和通信技术的国际会议(IC3TSN),用于在服务器之间复制数据[15]。在MongoDB和其他NoSQL数据库中,在SQL数据库中不需要额外的实现决策。这些决定对数据库的性能有影响[12]。使用MongoDB的其他优点包括易于复制、MapReduce和集群[11]。

列存储(Cassandra):

Cassandra居住在CAP定理的AP一边。它提供了用户可伸缩性,因为它具有线性可伸缩性和可用性,而且不影响其性能。Cassandra能够很容易地管理大量的数据服务器,同时保持高可用性,而不存在任何单点故障。[6][10]

键值存储(Redis):

Redis驻留在CAP定理的CP端。Redis keyvalue数据存储,可以选择数据持久性。它是一个内存NoSQL数据库,Redis支持各种数据结构服务器,如字符串、列表、集、散列和排序集。它可以使用轻松的主从结构来复制。

图形数据库(Neo4j):

Neo4j使用了标记属性图模型。在Neo4j中,节点和边缘可以具有与它们相关联的属性。节点可以进一步与标签关联,标签根据它们的角色对它们进行分类。Neo4j是一个完全ACID事务兼容的图形数据库。它可以作为独立的服务器(REST接口)或嵌入的表单[22]。

三:NOSQL数据库的比较分析

(一)、基于功能和非功能需求的NoSQL数据库比较。

表1:基于非功能特性的不同NoSQL数据库

数据模型

查询的性能

数据的可伸缩性

模式的灵活性

数据库的结构

值的复杂性

键值存储

主键与某些值

没有

列存储

行包含多个列

文档存储

变量(高)

一般

以树形表示JSON。

图表存储

变量

变量

图形实体的关系

表1基于其非功能特性,如查询性能、数据的可伸缩性、模式的灵活性、数据库的结构和值的复杂性,对键值存储、列存储、文档存储和图形数据库进行了比较。表1描述了一个简单的数据,可以很容易地表示为键值对;可以选择键值存储,因为它将提供高性能、可伸缩性和灵活性。如果该值可以在列中表示,并且是半结构化的,那么列存储就是合适的数据库,因为它将提供高性能和可伸缩性。如果数据可以以JSON格式表示,那么应该首选文档存储,因为它具有高性能、灵活性和通常高的可伸缩性。如果我们需要存储可以用图论表示的数据,或者数据具有很强的相关性,那么我们使用图存储模型来提供高稳定性,但是性能和可伸缩性是可变的。

表2比较了NoSQL数据库的四类功能的基础特性,如反规范化,单总(添加多个组合键一键),原子性、无序性,派生表(可以在主类的基础上创建一个表,这有助于根据多维索引进行排序),组合键,复合聚合,聚合,聚合和分组,邻接列表(每个节点都被设计成一个个人主义的记录,可以容纳直系祖先或后代的数组),嵌套集和连接。

如果我们想在数据库中使用组合键、连接或派生表操作,则应该避免键值存储。

如果我们想要使用非规范化、无序键、组合键、复合聚合、连接或数据库中的派生表操作,则应该避免文档存储。

如果我们想要使用无序的键、聚合和组、邻接表、嵌套的集合或在数据库上连接操作,那么应该避免使用宽列存储。

如果我们想要执行反规范化,应该使用图表存储。

表2:基于功能特性的不同NoSQL数据库

全文共21183字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[14275],资料为PDF文档或Word文档,PDF文档可免费转换为Word

特性

键值存储

文档存储

列存储

图表存储

1

反规范化

适用

不适用

适用

不适用

2

单总

适用

适用

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。