Apache ShardingSphere权威指南
上QQ阅读APP看书,第一时间看更新

1.3.2 SQL、NoSQL和NewSQL

说到SQL时,大家马上想到的是“古老”的关系数据库,它们在过去20年中始终支持高级服务。然而,关系数据库已开始尽显疲态,很多人都认为它们难以满足企业当前面临的需求。鉴于此,灵活的数据库行业巨头已采取积极措施,力图重塑其既有产品或提供新的解决方案。

NoSQL就是一个这样的例子。它是非关系数据库的始作俑者,提供了存储和检索非关系数据(如键值对、图、文档、宽列)的机制。然而,很多NoSQL产品都为支持可用性和分区容错性而牺牲了一致性:考虑到新时代的重要关切,NoSQL实现了高可用性和弹性伸缩,但不支持事务,也不具备SQL的标准优点。Couchbase、HBase、MongoDB及其他NoSQL数据库的成功,充分表明了人们对这种做法的支持。NoSQL数据库有时也强调如下两点:它们不仅是SQL(Not Only SQL),也认识到了传统SQL数据库的价值。出于这种认识,NoSQL数据库逐步吸纳了主流SQL产品的一些优点。

NewSQL可被定义为这样一种关系数据库管理系统(relational database management system,RDBMS):致力于让NoSQL系统是可伸缩的,可用于执行联机事务处理(online transaction processing,OLTP)任务,同时具备传统数据库系统的原子性、一致性、隔离性和持久性(atomicity, consistency, isolation, and durability,ACID)特性。

对于NewSQL,学术界和数据库行业还在讨论中,因此前述的说法并非最终的定义。有关这方面的一项出色资料是论文“What's Really New with NewSQL”,它致力于根据架构和功能对数据库进行分类。所有宣称自己为NewSQL产品的数据库都致力于在一致性、可用性和分区容错性(capability, availability, and partition tolerance,CAP)定理之间取得良好的平衡。然而,什么样的数据库产品可归类为NewSQL呢?