NewSQL的概念几乎是在NoSQL之后立即流行起来的。GoogleBigtable和AWSDynamo奠定了NoSQL技术的基础,而GoogleSpanner&F1引领了NewSQL技术的发展。本文首先讨论了NoSQL和NewSQL的概念和类别,然后结合一些行业观点讨论了它们的适用场景和未来的演进趋势,并比较了它们的优缺点。NoSQL众所周知,NoSQL已经是一个非常宽泛的概念。现在被大家广泛认可的NoSQL这个词,起源于2009年在旧金山举办的一次Meetup。Meetup的描述信息如下:Thismeetupisabout“opensource,distributed,nonrelationaldatabases”。您是否遇到过传统关系数据库的局限性?不介意用查询语言换取可扩展性吗?或者,也许您只是喜欢尝试闪亮的新事物?无论哪种方式,这次聚会都是为你准备的。传统RDBMS的可扩展性能力有限,是NoSQL技术出现的关键因素。本次Meetup的主题中涉及到Cassandra、HBase、MongoDB、CouchDB、HyperTable等开源技术,Meetup描述信息中提到的“开源、分布式、非关系型数据库”提供了NoSQL技术的精炼示例.的描述。那时,SQL几乎就是RDBMS的代名词。自然而然,Non-SQL也成了Non-Relational的代名词。随着近几年的快速发展,SQL逐渐被应用到更广泛的领域。因此,SQL不再是RDBMS的专属特性,SQL能力也被引入到NoSQL技术体系中。由此产生的Not-虽然Only-SQL的概念看起来不言自明,但它确实给出了更合理的解释。无论如何,“开源、分布式、非关系型数据库”定义大多数NoSQL技术的边界仍然是合理的,但“开源”是一个可选特性,而“分布式”和“非关系型”则不是。它是典型NoSQL技术的基本特征。大多数NoSQL技术削弱了对ACID语义和复杂关系查询的支持,采用更简洁或更专业的数据模型,优化读写路径以换取更高的读写性能。NewSQLNewSQL可以说是传统RDBMS和NoSQL技术相结合的产物。以下是Wiki中对NewSQL的定义:NewSQL是一类现代关系数据库管理系统,旨在为联机事务处理(OLTP)读写工作负载提供与NoSQL系统相同的可扩展性能,同时仍保持ACID保证传统的数据库系统。因此,典型的NewSQL技术可以理解为分布式关系型数据库,能够支持分布式事务是一个基本前提。NoSQL和NewSQL在技术栈上有很多重叠,但是在是否支持关系模型和对复杂事务的支持上有明显区别。在一些地方,NewSQL也被归类为Not-Only-SQL,即NewSQL技术也包含在NoSQL概念体系中。这种说法虽然有道理,但是却让NoSQL这个词过于笼统。行业观点近日,TimescaleDB联合创始人AjayKulkarni曾发表如下文章:《为什么SQL正在击败NoSQL,以及这对数据的未来意味着什么》,文章标题话题性十足,要点总结如下:许多新兴技术已经在拥抱SQL,比如AWSAurora、GoogleSpanner、Kafka也已经支持SQL接口等。大多数NoSQL技术定义了一个独立且不完整的查询语言接口(DSL)。尽管一些NoSQL技术提供了SQL-Like接口,但它们与标准SQL接口的兼容性极差。NewSQL的兴起,并开始积极拥抱标准的SQL接口。Spanner就是一个典型的例子。初始版本的Spanner对SQL语法的支持非常有限,近年来对SQL语法的支持不断完善。在当今时代,数据的价值越来越大,SQL仍然是不同数据源之间的标准接口。SQL语法的支持是未来数据分析工作的绝对瓶颈。作者完全同意本文的主要观点,但不同意标题中给出的误导性内容。SQL的回归并不意味着NoSQL技术将被完全取代,如下文评论AjayKulkarni在文章中的观点:“SQLisnotbeatingNoSQL.NoSQLisevolving”分析大体一致,除了一个主要缺陷.卷土重来的不是SQL,而是NoSQL正在变身提供一个熟悉的接口的回归。SQL恰恰是NoSQL技术不断演进的结果。在讨论分布式存储技术时,简单地将其归为NoSQL或NewSQL是不合理的。Bigtable/HBase/Dynamo是典型的NoSQL技术,而Spanner/CockroachDB和国内的TiDB可以归类为典型的NewSQL技术,但是和Kudu一样,它的存储引擎层是典型的NoSQL技术,在此基础上提供完整的SQL能力和复杂的事务支持,所以它兼顾了NoSQL和NewSQL的很多特性,更像是一种结合了两者的技术。因此,NoSQL或NewSQL的简单二分法是不合理的。很多技术都在不断地将两者结合起来。至于合理的平衡点在哪里,就看这个分布式存储技术要解决的核心问题了。什么。当我们谈论NoSQL时,更多的是在谈论一种分布式的、非关系型的数据存储技术,而当我们谈论NewSQL时,我们更多的是在谈论一种分布式的关系型数据库技术。在使用NoSQL或NewSQL来对一种技术进行分类时,更多的考虑可能是这种技术是什么样的。比如提供了标准的SQL接口和复杂的事务能力,那么先用NewSQL这个词来形容比较合适,但该技术背后的存储引擎可能是基于NoSQL技术实现的。***总结在解释完NoSQL和NewSQL的概念以及两者的范围之后,回到本文标题中提出的***。这个***好像是个假***,因为两者也在慢慢进化/融合。因此,对这个***有疑问的人,更多的是针对下面的***:分布式关系数据库技术会取代分布式非关系数据存储技术吗?分布式关系数据库技术在分布式事务和关系模型中的加强导致数据吞吐量/并发能力的减弱。借助NuoDB提供的NuoDB和Spanner/Cockroach的基准对比结果(“BenchmarkingGoogleCloudSpanner,CockroachDB,andNuoDB”)进一步说明了这一点:上图中的NewSQLBenchmarkWorkloaddefinition:A–Heavyupdate(50%读取,50%更新)B–大部分读取(95%读取,5%更新)C–只读(100%读取)D–读取最新插入(90%读取,10%插入)E–扫描latestinserted(90%read,10%insert)F–Read-modify-write(50%read,50%update)可以看出无论是哪种工作负载,Spaner和CockroachDB的吞吐量都很低。NuoDB虽然也可以归入NewSQL的范畴,但它也大量借鉴了NoSQL技术。对事务机制和持久化机制进行分层,更好地利用缓存技术,是性能得到质的提升的关键。在上图中的一些工作负载中,NuoDB的吞吐量几乎已经达到了主流NoSQL技术的吞吐量水平,但是仍然可以看出,在读写比例相等或者写多读少的场景下,NuoDB的吞吐量是高于主流的NoSQL技术。明显的差距。因此,分布式关系数据库技术和分布式非关系数据存储技术仍然针对不同的应用场景。前者主要针对传统RDBMS的一些应用场景,而分布式非关系数据存储技术更适合高吞吐、高并发的新兴应用场景。随着物联网、车联网的不断普及,分布式非关系数据存储(NoSQL)技术也将带来更大的价值。两者将走向进一步融合,也将走向更彻底的分离。
