关系型与非关系型数据库(3)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关系型与非关系型数据库(3)

胡经国

5、非关系型数据库共同特点

虽然NoSQL并没有一个明确的范围和定义,但是它们都普遍具有以下一些共同特点:

⑴、不需要预定义模式

不需要事先定义数据模式和预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。

⑵、无共享架构

相对于将所有数据存放于存储区域网络中的全共享架构,NoSQL往往将数据划分后存储在各个本地服务器上。因为,从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

⑶、弹性可扩展

可以在系统运行的时候,动态增加或者删除节点。不需要停机维护,数据可以自动迁移。

⑷、分区

相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且,通常分区的同时还要做复制。这样,既提高了并行性能,又能保证没有单点失效的问题。

⑸、异步复制

与RAID(Redundant Arrays of Independent Disks,磁盘阵列)存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。其缺点是并不总是能保证一致性。这样的方式在出现故障的时候,可能会丢失少量的数据。

链接:异步复制

异步复制技术是指在写被响应到主机之前,数据必须被承诺存储在单独的一级站点而不是存储在二级站点。当网络容量允许时,数据传向二级站点。

⑹、BASE

相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。

链接:BASE:最终一致性和软事务

所谓最终一致性,就是不保证在任意时刻任意节点上的同一份数据都是相同的;但是随着时间的迁移,不同节点上的同一份数据总是在向趋于相同的方向变化。也可以简单的理解为:在一段时间后,节点间的数据会最终会达到一致状态。

软事务(待查)

链接:ACID

ACID,是指数据库事务正确执行的四个基本要素的英文的缩写,包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。事务(Transaction)正确执行,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

隔离性:在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。

持久性:在事务完成以后,该事务对数据库所作的更改便被持久地保存在数据库中,而不会被回滚。

目前主要有两种方式实现ACID:第一种是Write Ahead Logging(预写日志),也就是日志式的方式;第二种是Shadow Paging(影子分页)。

链接:Write Ahead Logging

Write Ahead Logging(WAL,预写日志)技术,是数据库中一种高效的日志算法。对于非内存数据库而言,磁盘I/O操作是数据库效率的一大瓶颈。在相同的数据量下,采用WAL日志的数据库系统在事务提交时,磁盘写操作只有传统的回滚日志的一半左右,大大提高了数据库磁盘I/O操作的效率,从而提高了数据库的性能。

链接:Shadow Paging

相对于WAL技术,Shadow Paging(SP,影子分页)技术实现起来比较简单,消除了写日志记录的开销,恢复的速度也快。Shadow Paging的缺点在于事务提交时要输出多个块。这使得提交的开销很大,而且以块为单位,很难应用到允许多个事务并发执行的情况——这是它致命的缺点。

NoSQL数据库并没有一个统一的架构;两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长。成功的NoSQL必然特别适用于某些场合或者某些应用;在这些场合中会远远胜过关系型数据库和其它的NoSQL。

6、非关系型数据库使用范围

NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J,InfoGrid,Infinite Graph。因此,NoSQL数据库在以下的这几种情况下比较适用:

⑴、数据模型比较简单;

⑵、需要灵活性更强的IT系统;

⑶、对数据库性能要求较高;

⑷、不需要高度的数据一致性;

⑸、对于给定key(键),比较容易映射复杂值的环境。

链接:数据接口

接口可以比喻为一个通道,两个相互独立的程序,通过这个接口通道,实现数据传输,信息交流。当然这个两个程序都必须遵守这个接口规定的一些标准,只有共同遵守这个接口标准,才能进行正常的数据传输和通信。

链接:复杂值

Javascript(一种直译式脚本语言)的数据类型可以分为两种:原始类型和引用类型。原始类型也称为基本类型或简单类型;而引用类型也称为复杂类型。与此相对应,它们的值也分别被称为原始值和复杂值。

其中,复杂值可以由很多不同类型的Javascript对象组成。复杂对象在内存中的大小是未知的,因为复杂对象可以包含任何值,而不是一个特定的已知值。

7、NoSQL数据库优势劣势分析

⑴、NoSQL数据库优势分析

NoSQL数据库主要有以下优势:

①、扩展简单

典型例子是Cassandra(一套开源分布式NoSQL数据库系统)。由于其架构类似于经典的P2P(对等计算或对等网络),因而能够通过简单添加新的节

相关文档
最新文档