NOSQL和可扩展的SQL

2012-04-13 02:25吕美英郭显娥
关键词:扩展性关系数据库键值

吕美英,郭显娥

(山西大同大学数学与计算机科学学院,山西大同 037009)

NOSQL和可扩展的SQL

吕美英,郭显娥

(山西大同大学数学与计算机科学学院,山西大同 037009)

随着互联网的发展,数据规模的不断扩大,对访问量,访问速度的越来越高的要求,NoSQL作为一种数据存储方式,得到越来越广泛的关注和应用,对传统的占据数据库市场主导地位近三十年的SQL数据库,也就是关系型数据库提出了极大的挑战。本文对现有的NoSQL数据存储技术的数据模型,技术发展和应用,以及SQL数据库发展的趋势和现状进行了综述,提出SQL和NoSQL在数据库市场中会根据系统的要求,主要是多版本并发控制,扩展性,一致性和速度要求等的不同而划分数据库市场。

NoSQL;可扩展的SQL;网络数据库

计算机应用离不开数据的管理和处理。数据的处理经历了三个阶段:手工管理、文件管理和数据库管理。数据库管理数据,使得大型的计算机应用成为可能。数据库技术始于上世纪60年代,随后发展迅速。尽管NoSQL数据库如层次数据库,图形数据库,和面向对象的数据库在60年代末就开发出来了[1],但是以SQL为主要的数据查询和操纵语言的关系数据库从上个世纪80年代起,成为了数据库技术的主流产品。关系数据库具有四个特性:ACID,即原子性,一致性,隔离性和持续性,且建立在严格的集合代数基础之上,有强大的查询功能。但是关系数据库也有致命的弱点,那就是数据结构规整,容错性和扩展性差,在分布式数据库和数据分片的情形下处理能力差,海量数据访问处理速度慢等。随着应用数据规模的扩大和互联网的发展,这些缺陷就变得不能容忍。为此,一些新型的易于横向扩展的NoSQL数据系统应运而生,如健值存储数据库,文档存储数据库,RDF(资源描述框架)数据库,大表数据库等。它们不再以SQL作为主要的查询语言,其优点是易于扩展,大规模海量数据处理速度快,容错性高,但同时这些系统在数据一致性上也大打折扣,不过,这并不对他们的使用造成太大的影响。很多大型的互联网网站都使用这种类型数据存储方式,如AMAZON的DYNAMO[2]和LINKEDIN使用的开源VOLDEMORT,GOOLGE的BIGTABLE[3]和FACEBOOK的CASSANDRA[4]等。与此同时,关系数据库本身也在发展,产生了可扩展的关系数据库,即SCALABLE SQL,一些大型的社交网站如FACEBOOK,MYSPACE,TWITTER和一些商务和银行系统,其核心的数据存储仍是基于SQL的[5]。本文讨论了一些可扩展的SQL和一些NoSQL数据存储系统的特点和不足,对它们未来的发展做出了展望。

1 NoSQL数据存储

NoSQL,意味着不仅仅SQL,或者不仅仅非关系型数据存储。在关系数据库作为主流的时代,非关系型的数据库大都加上了SQL支持,如面向对象的数据库发展为关系对象数据库,XML数据库也受到了SQL2003的扩展支持[6]。但是随着互联网技术的发展和由之产生的海量、分布式、分片数据存储和访问,NoSQL数据存储异军突起,成为了当今绝大多数互联网公司的主流。连当今世界最大的关系数据库公司ORACLE也推出了自己的NoSQL解决方案[7-8]。下面,我们对NoSQL的数据模型作一概括:

1.1 Key-Value(键值)存储模型

Key-Value模型由键和其相应的值组成,是结构最简单,使用最方便的NoSQL数据模型。它支持简单的key(键)对value(值)的存储和提取,这能够满足绝大多数网络平台数据存储的需要。Key-Value模型通常是由HashTable实现的,所以无法进行范围查询,因而其后就出现了有序的Key-Value模型。有序Key-Value可以支持范围查询。虽然有序Key-Value模型能够解决范围查询的问题,但是其Value(值)依然是无结构的二进制码或纯字符串,通常我们只能在应用层去解析相应的结构。使用键值存储的NoSQL非常多,有Dynamo,Openlink的Virtuoso,Oracle Coherence,LevelDB,Memcache DB,Redis,Kyoto Cabinet,Berkeley DB,IBM的InformixC-ISAM等。

1.2 类BigTable(也称为Extensible-record,或wide-column stores)的数据模型

此种数据存储能够支持结构化和半结构化的数据,包括列,列簇,时间戳以及版本控制等元数据的存储,其基本的数据模型是行和列,而且行和列可以在多个节点上同时进行水平和垂直的扩展分割。行以主码按范围而非HASH来分片,因而一定范围内的查询,就不需要遍历各个节点。列则以列簇的方式分散在多个节点上,用户可以决定那些列放在一起最方便。流行的开源的Apache HBase,Apache Cassandra都属此类,此外,还有Hypertable,Accumulo,SimpleDB等都是这种数据库。

1.3 文档型存储

文档是以XML,YAML,JSON,BSON等形式以及一些二进制形式如PDF和MS Word,Excel等被编码和封装的,文档型存储没有模式,最早始于Lotus Notes.MongoDB,CouchDB都是在Lotus的基础上发展起来的[9]。文档型存储相对到类BigTable存储又有两个大的提升。一是其Value(值)支持复杂的结构定义,二是支持数据库索引的定义。除了支持主码数据访问外,文档型存储可以通过索引来快速访问记录的属性。因为所有的数据都在一个文档内,因而不需要数据连接和多对象事务处理,这使得数据的集群化更为容易,扩展性能更强[10]。全文索引模型是文档型存储的一个变种。它们的区别在于文档型存储的索引主要是按照字段名来组织的,而全文索引模型是按字段的具体值来组织的。支持全文索引的NoSQL包括:Apache Lucene,Apache Solr。

1.4 图数据库模型

也可以看作是从Key-Value模型发展出来的一个分支,不同的是它的数据之间有着广泛的关联,并且这种模型支持一些图结构的算法,以节点和边(关系)模式进行存储,非常适合社交网络使用,如Neo4j,FlockDB等。

NoSQL与关系型数据库的差别,简单总结如下:

(1)NoSQL数据库的数据模型通常与实际需求更贴近,没有固定的格式,可以灵活插入数据和新的属性。

(2)使用NoSQL数据模型,通常需要对存储的内部结构和实现算法有一定的了解。

(3)使用NoSQL数据库,通常要自己处理数据结构解析和数据的冗余复制问题。

(4)对于关系型数据库来说,对数据分级存储的处理并不强。但是对图数据库,或者说其它的NoSQL数据库来说,对数据的分级处理都是预先考虑的。

(5)NoSQL通常部署在多台服务器上,并对数据进行分片和复制,这和部署在多台服务器上的SQL不一样,它们不依赖互相复制来保持同步,因而数据的一致性通常都较SQL差。

由此,我们不难看出,尽管很多的NoSQL数据存储都有简单的查询平台可供编程和使用,但是大多为一次一记录的方式[11],而且使用不同的编程语言去访问数据[12],比成熟的SQL数据库,即非过程化的一次一集合的关系数据库来说,操控要难的多。

2 可扩展的SQL数据库

在互联网技术的发展中,由之产生的海量、分布式、分片数据存储和访问,给传统的SQL数据库带来了冲击和挑战。在此背景下,基于改善关系数据库的扩展性的产品和技术就产生了。其实,绝大多数的关系数据库都具有一定的扩展性,如ORACLE的RAC。但是这并不能满足WEB环境下的应用。如TWITTER在使用NoSAL CASSANDRA的同时,其核心的数据系统依然是MYSQL,但是在MYSQL上增添了新的功能,使其能满足扩展性的要求;VMware的SQL Fire可以建造在SQL关系数据库上,使其具有扩展性,是能管理数据备份和分区表的云端产品。此外还有开源的作为MySQL一部分的MySQL Cluster,高性能可扩展的运行在分布式服务器RAM上的关系数据库VoltDB,可扩展到上百个节点,具有自动切片和备份功能且支持所有ACID特性的Clustrix,使用多服务器集群实现其扩展性的ScaleDB,建立在 MySQL上的可对多个单节点MySQL数据库进行表切片,并自带部分SQL语法分析器的ScaleBase,使用MVCC(多版本并发控制)和分布式对象存储的NimbusDB等等[13]。这些可扩展的SQL数据库的共同特点就是在传统的SQL数据库上,加上一些软件,使传统的SQL数据库在满足传统的ACID特性的基础上,能应用在多并发,高访问率的网络上。这是SQL数据库发展的一个重要的特点。

3 未来数据存储的发展

NoSQL数据存储的流行,不会很快就消失。NoSQL数据存储系统的简单,灵活,和优异的扩展性,使其在网络系统这一市场上独占鳌头,这一市场的特点是,具有成千上万的用户读写应用和相对简单的数据模式。尽管关系数据库的扩展性得到了改善,尽管NoSQL数据存储的稳定性,可靠性还有待于进一步验证和改善,但是它仍将在网络应用中独具优势。ERIK MEIJER和GAVIN BIERMAN提出了大多数的键值型的NoSQL数据存储的数据模型为类似于SQL的参照外码和主码的SQL模型的CoSQL,即双SQL模型,称键值型NoSQL就是CoSQL(Dual SQL)[14]。就像关系数据库建立在由E.F.Codd提出的集合代数基础上一样,他们提出了一个基于集合的Monads的关系代数理论,这就使得适用于键值型NoSQL和SQL两种数据库的共同的查询语言成为可能,而这可能会改变NoSQL市场的格局,使其由进入推出门槛低,很多的小供应商提供差异化的,实现技术不同的多样化产品的垄断市场向和关系数据库相类似的独占型市场转化。众所周知,关系数据库市场中,只有少数的竞争对手,如Oracle,IBM,Microsoft,MySQL等。

GOOGLE在BIGTABLE上建了MEGASTORE,使得其NoSQL的BIGTABLE在很多方面都类似于一个可扩展的关系数据库[15],它具有和SQL非常接近的数据库语言,支持层次化的访问路径和有限的数据连接。2011年四月,Citrusleaf发布了适用于广告市场实时投标的新的数据库技术Citrusleaf 2.0。Citrusleaf 2.0是一个键值存储的NoSQL实时数据库,具高可靠性,线性可扩展性,在大容量,数据密度大的网络和移动环境中性能卓越,但是它能提供SQL数据库所具有的ACID性能。Quest Software Inc.发布了支持Hapood的Apache Hive的开源NoSQL工具Toad。适用于云数据库的Toad为NoSQL数据库的Hive系统提供了一个用户友好的SQL接口,方便开发者用SQL来查询数据,迁移和更新非关系数据。此系统也支持Apache Hbase,Amazon SimpleDB,Miscroft Azure,Apache Cassandra,以及所有的ODBC关系数据库。上面我们已经介绍了很多可扩展性的关系数据库。由此可以看出NoSQL和SQL数据存储之间的差距在缩小:NoSQL趋于提供一个统一的SQL接口,而SQL则致力于能够用于多节点的可分片的数据存储中,同时不失其ACID特性。

CAP理论认为在网络数据共享的系统中,数据只能满足一致性(consistency),高可用性(high availability)和分区容忍性(partition tolerance)中的两个性能。University Berkeley的Eric Brewer认为,CAP实际上仅仅在数据库的设计中设下了一个很小的限制,即完美的可用性和一致性在分区的存在下是非常少见的[16]。可扩展的SQL和NoSQL上SQL层的建立,就是在数据库的分区容忍性的基础上,保持了包括一致性在内的ACID特性。尽管如此,NoSQL和SQL依然是在各自的应用领域内具有不可替代性。

[1]Leavitt,Nea.Will NoSQUL Databases Live Up to Their Promise Computer[J].2010,43(2):12-14.

[2]Giuseppe DeCandia.Dynamo:Amazon's Highly Available Key-value Store.21st ACM Symposium on Operating Systems Principles[C].Stevenson,WA,2007.

[3]Fay Chang.Bigtable:A Distributed Storage System for Structured Data,Seventh Symposium on Operating System Design and Implementation[C].Seattle,WA,2006.

[4]Charles Babcock.Cassandra Scores Big Wins For′NoSQL′Team[J].Informationweek,2010(1259):16.

[5]Michael Rys.How do large-scale sites and applications remain SQL-based?[J].Communications of the ACM,2011,54(6):48-53.

[6]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社,2006.

[7]Brooks,Jason.Oracle Gives NoSQL Market a Boost[J].E Week,2011,28(17):8.

[8]Guy Harrison.Oracle Joins the NoSQL Movement[J].Database Trends and Applications,2011(12):31.

[9]Guy Harrison.NoSQL and Document-Oriented Databases[J].Database Trends and Applications,2010(12):32.

[10]Eelco Plugge.The Definitive Guide to MongoDB:The NoSQL Database for Cloud and Desktop Computing[M].New York:Springer-Verlag,2010.

[11]Michael Stonebraker.SQL Databases v.s.NoSQL Databases[J].Communications of the Acm,2010,53(4):10-11.

[12]Jason Brooks.Does NoSQL Matter to Your Company?[J].EWeek,2011(19):18-19.

[13]Rick Cattell.Scalable SQL and NoSQL Data Stores[J].ACM SIGMOD Record,2010,39(4):12-27.

[14]Erik Meijer,Gavin Bierman.A Co-Relational Model of Data for Large Shared Data Banks[J].Communication of the ACM,2011,54(4):49-58.

[15]Rick Cattell.Scalable SQL and NoSQL Data Stores,ACM SIGMOD Record[J],2010,39(4):12-27.

[16]Eric Brewer.CAP Twelve Years Later:How the“Rules”Have Changed[J].Computer,2012(2):23-29.

〔责任编辑 高海〕

NOSQL and Scalable SQL

LU Mei-ying,GUO Xian-er
(School of Mathematics and Computer Science,Shanxi Datong University,Datong Shanxi,037009)

With the development of web-bases applications,the users create huge quantities of data.Yet they demand high speed accessibility despite of the fast growing traffic.NoSQL databases have

a great deal of attention and are adopted by some famous web-based companies,which challenges greatly the traditional SQL databases,the relation database systems that dominate the database market in the past thirty years.This paper reviews the data model,technical development and application of the NoSQL databases,and the trend of a number of SQL databases.It states that SQL and NoSQL each has its own application niches and is used based on the system requirements,mainly,multi-version concurrency control,scalability,consistency,and speed tolerance,etc.

NoSQL,Scalable SQL,Web-based Data Store

O175.12

A

1674-0874(2012)05-0015-04

2012-03-15

吕美英(1967-),女,山西大同人,硕士,工程师,研究方向:数据库原理与应用。

猜你喜欢
扩展性关系数据库键值
关系数据库在高炉数据采集系统中的应用
非请勿进 为注册表的重要键值上把“锁”
提高初中阶段学生英语扩展性阅读能力策略分析
一键直达 Windows 10注册表编辑高招
高中物理如何充分利用扩展性栏目
比ITX还小华擎推首款Mini—STX主板
网络教学平台的扩展性研究
基于索引结构的关系数据库关键词检索
一种基于数据图划分的关系数据库关键词检索方法
注册表值被删除导致文件夹选项成空白