在NewSql之前,我们接触了Sql,NoSql(Not only Sql),NewSql。NewSql 被定义为下一代数据的发展方向,他是对各种新的可扩展/高性能数据库的简称,兼具Nosql数据库的海量存储管理能力和关系数据库的ACID特性和SQL便利性。简单的来说:SQL+NoSQL=NewSQL。NewSQL系统虽然在的内部结构变化很大,但是它们有三个显着的共同特点,它们都支持关系数据模型;它们都使用SQL作为其主要的接口;满足分布式数据库特点。
一、发展历程:
NewSQL一词是由451 Group的分析师Matthew Aslett在研究论文中提出的。2012~2013年Google 相继发表了Spanner和F1两套系统的论文,让业界第一次看到了关系模型和NoSQL的扩展性在一个大规模生产系统上融合的可能性。
1.Google于2012年发表论文《Spanner: Google’s Globally-Distributed Database》描述一个全球分布式系统,其特点包括:可扩展性、自动分片、容错性、一致性复制、外部一致性,和数据广域分布等,提供多行事务、外部一致性、跨数据中心的透明故障转移等功能
2.2014年-2017年是NewSql数据库大发展时代,在这期间各大公司纷纷构建了自己的NewSql数据库。Amazon Aurora于2014年10月开发并提供的托管关系数据库服务;微软2014年发布Azure DocumentDB,支持对任意文档的SQL查询;CockroachDB 2014年1月编写发布第一个CockroachDB迭代版本;CockroachDB,2016年开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,其结合传统 RDBMS 和 NoSQL 特性。Alibaba,2015年商业数据库的OceanBase。Oracle: 2017年发布自治数据库云。
3.2017年,Google发表论文《Spanner: Becoming a SQL System》,描述查询执行的切分、瞬态故障情况下查询重新执行、驱动查询做路由和索引查找的范围查询,以及改进的基于块的列存等分布式查询优化技术。
4.2018年,Amazon发表《Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes》 描述如何通过不变量和利用局部瞬态来避免大多数情况下的分布式共识问题。
二、系统分类
NewSQL系统虽然在的内部结构变化很大,主要表现在支持关系数据库事务特性和SQL机制已经支持分布式数据库特性上。可以从架构,SQL引擎,分片模式三个角度进行了解。
新架构:代表数据库有Google Spanner, VoltDB, Clustrix, NuoDB.这类数据库工作在分布式节点集群上,数据分片存储,SQL查询在不同节点上分片计算。
SQL引擎:代表数据库有TokuDB, MemSQL。这类数据库有高度优化的SQL引擎。
透明分片:代表数据库有ScaleBase,dbShards, Scalearc。系统提供分片中间件层,数据看看自动分割在多个节点运行。