探索中国CIO人才现状 | 第四季调研报告
SQL与NoSQL在大数据时代都将大有作为
2013-07-09  作者:机房360 

  随着大数据的热潮,非关系型数据库NoSQL在近两年也受到了更多人的关注,有人还提出NoSQL将主导未来的大数据分析领域。而事实上,SQL与NoSQL之间其实就是互补的关系,未来双方在大数据和云计算时代都将会有很大的发展空间。


  CAP理论指的是:Consistency(一致性)、Availability(可用性)、TolerancetonetworkPartitions(分区容错性),任何分布式系统只可能同时满足二点,没法三者兼顾。架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。


  从应用上来说,除了满足CA性能传统关系型数据库(RDBMS)30多年来得到长足发展外,满足AP和CP性能的CouchDB和谷歌的BigTable等应用在近几年也都发展很快。BigTable发展于2004年,现在成为高效、可扩展、用来储存或更改资料的谷歌文件系统。GoogleReader、GoogleMaps、GoogleBookSearch、MySearchHistory、GoogleEarth、Blogger.com、GoogleCodehosting、Orkut、YouTube以及Gmail等都应用了BigTable。BigTable作为非关系型数据库的产品,虽然不支持JOIN这样的SQL语法,但其优势在于扩展性和性能。CouchDB是用Erlang开发的面向文档的数据库系统,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向Web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。


  传统关系型数据库适合私有云建设


  据了解,关系型(SQL)分布式数据库的理论基础是ACID模型。ACID是Atomicity(原子性),Consistency(一致性),Isolation(隔离性),andDurability(持久性)的缩写。事务的原子性(Atomicity)是指事务中包含的所有操作要么全做,要么全不做(allornone)。一致性(Consistency)是指在事务开始以前,数据库处于一致性的状态,事务结束后,数据库也必须处于一致性状态。事务隔离性(Isolation)要求系统必须保证事务不受其他并发执行的事务的影响。而持久性(Durability)是指一个事务一旦成功完成,它对数据库的改变必须是永久的,即便是在系统遇到故障的情况下也不会丢失。数据的重要性决定了事务持久性的重要性。


  通过SQL数据库的ACID可以知道传统的关系型数据库因为通用性设计带来了性能上的限制,但可以通过集群提供较强的横向扩展能力,其较强的并发读写能力、数据强一致性保障、很强的结构化查询与复杂分析能力和标准的数据访问接口非常适合企业私有云数据库平台的建设。包括甲骨文Oracle数据库、IBMDB2和微软SQLServer、SAPSybase在内的主流关系型数据库产品已经发展了二三十年,产品非常成熟,但在性能和伸缩性上仍有可发展和增强的空间。2012年甲骨文的Oracle12c、IBM的DB210和微软的SQLServer2012都将是非常值得期待的数据库产品。


  NoSQL适合特定的应用领域


  (NoSQL)分布式数据库和关系型(SQL)分布式数据库的ACID理论基础是相对的,(NoSQL)分布式数据库的理论基础是BASE模型。BASE来自于互联网的电子商务领域的实践,它是基于CAP理论逐步演化而来,核心思想是即便不能达到强一致性(Strongconsistency),但可以根据应用特点采用适当的方式来达到最终一致性(Eventualconsistency)的效果。2002年来自eBay的DanPritchett在《BASE:AnAcidAlternative》文章中正式提出了BASE概念。


  BASE是BasicallyAvailable、Softstate、Eventuallyconsistent三个词组的简写,是对CAP中CA应用的延伸。BASE的含义包括:BasicallyAvailable:基本可用;Softstate:软状态/柔性事务,即状态可以有一段时间的不同步;Eventualconsistency:最终一致性;BASE是反ACID的,它完全不同于ACID模型,牺牲强一致性,获得基本可用性和柔性可靠性并要求达到最终一致性。而从NoSQL的理论基础可以知道,非关系型数据库具有很强的弹性和扩展能力,但在数据一致性方面。