大数据技术导论
上QQ阅读APP看书,第一时间看更新

4.1 NoSQL

4.1.1 NoSQL概述

NoSQL泛指非关系型的数据库。随着互联网Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战(见图4.2)。

图4.2 NoSQL概念演变

对于NoSQL并没有一个明确的范围和定义,但是它们都普遍存在以下共同特征:

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

2)无共享架构。共享架构将所有数据存储到远端服务器,通过网络访问,而NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

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

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

5)异步复制。和共享架构存储系统不同的是,NoSQL中的复制往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

可以说,NoSQL和SQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中可能会远远胜过关系型数据库。