首页 理论教育 云计算中NoSQL概念简介

云计算中NoSQL概念简介

时间:2023-11-26 理论教育 版权反馈
【摘要】:在了解NoSQL概念之前,先介绍下与其息息相关的关系型数据库。1970年,关系型数据库之父埃德加·科德于发表《A Relational Model of Data for Large Shared Data Banks》一文,首次提出关系模型的概念。因此,以CAP理论[1]和BASE理论为基础的NoSQL数据库开始出现。NoSQL摆脱了传统的关系型数据库与ACID理论的限制。NoSQL数据库在存储海量数据上的性能优势,是传统关系型数据库所不具备的。

云计算中NoSQL概念简介

在了解NoSQL概念之前,先介绍下与其息息相关的关系型数据库

关系型数据库是建立在关系模型基础上的数据库,借助于集合代数数学概念和方法来处理数据库中的数据。所谓关系模型,就是把世界看作由实体(Entity)和联系(Relationship)组成的,其中实体是指在现实世界中客观存在并可相互区别的事物。1970年,关系型数据库之父埃德加·科德于发表《A Relational Model of Data for Large Shared Data Banks》一文,首次提出关系模型的概念。他指出现实世界中的各种实体以及实体之间的各种联系均可用关系模型来表示。

简单说来,关系型数据库就是由多张能互相联接的二维行列表格组成的数据库,可以用选择、投影、连接、并、交、差、除、增、删、查、改等方法来实现对数据的存储和查询(图7-1)。标准数据查询语言SQL(Structured Query Language)是一种基于关系数据库的语言,这种语言可以执行对关系型数据库中数据的检索和操作。如今虽然对关系型数据库有一些批评意见,但它还是数据存储的传统标准。

图7-1 关系型数据库

关系型数据库严格遵循ACID理论。所谓ACID理论,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的所必须具备的四个特性:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

(1)A-Atomicity-原子性

一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有被执行过一样。

(2)C-Consistency-一致性

在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

(3)I-Isolation-隔离性

数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(Read committed)、可重复读(Repeatable read)和串行化(Serializable)。

(4)D-Durability-持久性

事务处理结束后,对数据的修改就是永久的,即便系统出现故障也不会丢失数据。(www.xing528.com)

现代计算系统每天在网络上都会产生庞大的数据量。这些数据有很大一部分是由关系型数据库来处理,其严谨成熟的数学理论基础使得数据建模和应用程序编程更加简单。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

随着信息化的浪潮互联网的兴起,传统的关系型数据库在一些业务上开始出现问题。首先,对数据库存储的容量要求越来越高,单机无法满足需求,很多时候需要用集群来解决问题,而关系型数据库由于要支持JOIN,UNION等操作,一般不支持分布式集群;其次,在大数据大行其道的今天,很多数据都“频繁读和增加,不频繁修改”,而关系型数据库对所有操作一视同仁;最后,互联网时代业务的不确定性导致数据库的存储模式也需要频繁变更,不自由的存储模式增大了运维的复杂性和扩展的难度。因此,以CAP理论[1]和BASE理论为基础的NoSQL数据库开始出现。

NoSQL(NoSQL=Not Only SQL),意为“不仅仅是SQL”,也称为非关系型数据库,是一系列与关系型数据库这种典型模型有较大差异的数据管理系统的统称,其中最主要的差异在于它不使用SQL作为基本的查询语言。NoSQL摆脱了传统的关系型数据库与ACID理论的限制。NoSQL数据库对数据的存储大多数采用Key-Value的方式,没有固定的表结构(即数据再没有固定的长度、类型和固定的格式等),也没有烦琐的连接操作。NoSQL数据库在存储海量数据上的性能优势,是传统关系型数据库所不具备的。

Infosys Technologies的首席技术架构师Sourav Mazumder给出了非关系型数据库的一个比较严谨的描述:

①使用可扩展的松散耦合类型数据模型来对数据进行逻辑建模;

②为遵循CAP原理的跨多节点数据分布模型而设计,支持水平伸缩;

③拥有在磁盘和(或)内存中的数据持久化能力;

④支持多种“Non-SOL”接口来进行数据访问。

NOSQL数据库通常满足BASE约束,即:

①Basic Availability(基本可用),是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

②Soft-state(软状态/柔性事物),是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。

③Eventual consistency(最终一致性),是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。最终数据是一致的就可以了,而不是时时一致。

由此可见,与关系型数据库的ACID强约束相比,BASE约束要松散一些,但灵活性有优势,因此在云计算环境下越来越依赖NoSQL系统也就不足为奇了。当然,一些对数据有ACID要求的系统还是应该首选关系型数据库。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈