关系数据库主要是以SQL为搜索引擎,也称做SQL关系数据库;与之相对的是NoSQL非关系数据库,它以键值数据库(Key-Value Store DB)为代表,Single DB就属于键值数据库。随着网络的不断发展,特别是超大规模和髙并发的社交网络的出现,传统的关系型数据库已经显得有些力不从心,暴露了很多难以克服的问题,这时非关系数据库应运而生。但是非关系数据库在处理ACID类问题时存在着一些先天性的不足,于是人们又开始尝试对传统的关系数据库进行修改,提髙它的可扩展性。这节将要介绍的Amazon RDS (Relational Database Service)就是这样一种技术。
SQL和NoSQL数据库的对比
下面对SQL和NoSQL数据库进行如下几个方面的对比。
(1)数据模型:SQL数据库对数据有严格的约束,包括数据之间的关系和数据的完整性。比如SQL数据库中某个属性的数据类型是确定的(如整型、字符串等),数据的范围是确定的(如0~1023等)。在NoSQL数据库中这些都没有,在Key-Value存储中,Key和Value可以是任意的数据类型。
(2)数据处理:传统的SQL数据库满足CAP原则(一致性(Consistency)、可用性(Availability),分区容忍性(Partition Tolerance))的C和A,所以在P方面很弱,进而导致传统数据库在可扩展性方面,面临很多问题。NoSQL数据库满足CAP原则的A和P,所以在C比较弱,进而使得非关系数据库无法满足ACID要求。
(3)接口层的区别:SQL数据库都是以SQL语言对数据进行访问的,一方面SQL语言提供了强大的査询功能,另一方面,目前所有的SQL数据库都支持SQL语言,移植性很高。NoSQL数据库对数据的操作都是通过一些API实现的,支持的査询功能很简单, 并且不同的数据库有不同的API,移植性较差。
(4)优势和劣势:SQL数据库具有髙的一致性,在ACID方面能力非常强,移植性很高,但在可扩展性方面能力较弱。NoSQL数据库最大的优点是非常高的可扩展性,可以通过増加服务器租用的数量不断提高存储规模,具有很强的并发处理能力,但缺乏数据一致性保证。另外由于分布在多个服务器上,所以跨表、跨服务器査询很困难。