大数据处理技术,从一开始追求硬件的综合和运算(排列组合)速度的极限,经过计算椎架的一代又一代发展、存储技术的发展,到最终SQL(关系型)模型的回归。早期大数据BigTable模型还是显得比较简陋,NewSQL中重新引入关系型模型使得数据更加容易处理,这当然也是由于数据压缩技术的发展所推动,体现的是技术自底向上不断抽象的结果。
2012年和2013年,谷歌相继发表Spanner和Fl两篇论文,让业界第一次看到了关系模型和NoSQL的扩展性在一个大规模生产系统上融合的可能性。分布式系统最头痛的问题是时钟问题,Spanner通过使用GPS时钟和原子钟两种硬件设备巧妙地解决了时钟同步的问题,即使两个数据中心隔得非常远,也能保证通过TrueTimeAPI获取的时间误差在10ms以内。F1构建在Spanner之上,是一款可容错可扩展的关系数据库管理系统,对外提供SQL接口,作为分布式并行数据库集群,F1本身不存储数据,而是将客户端的SQL翻译成对键值(Key-value, KV)的操作,调用Spanner来完成。Spanner和Fl的出现标志着第一个NewSQL在生产环境中提供服务,将SQL支持、ACID事务、水平扩展、异地机房容灾等功能在一套系统中提供。Spanner压1论文引起了广泛的关注,很快开始出现了追随者,如TiDB和CockroachDB。NewSQL系统虽然在的内部结构变化很大,但是它们有两个显著的共同特点:支持关系数据模型和使用SQL作为其主要的接口。目前NewSQL系统可通过架构、SQL引擎和数据分片分成三类。
1. 新架构
1.新架构
采用新架构的NewSQL系统是全新的数据库平台,使用两种不同的设计方法:
第一种设计的数据库工作在一个分布式集群的节点上,其中每个节点拥有一个数据子集。SQL查询被分成查询片段发送给自己所在的数据的节点上执行。这些数据库可以通过添加额外
的节点来线性扩展。现有的这类数据库有:Google Spanner、VoltDB, Clustrix、NuoDBo
第二种设计的数据库系统通常有一个单一的主节点的数据源。它们有一组节点用来做事务
处理,这些节点接到特定的SQL查询后,会把它所需的所有数据从主节点上取回来后执行SQL
查询,再返回结果。
2. SQL引擎
第二类是高度优化的SQL存储引擎。这些系统提供了 MySQL相同的编程接口,但扩展性
比MySQL内置的引擎InnoDB更好。这类数据库系统有:TokuDB、MemSQL等。
3.数据分片
关系型数据库不能满足每秒大量的数据操作和写入率。为了解决这个问题,NewSQL提供
了分片(sharding)的中间件层,数据库自动分割在多个节点运行。首先分析表schema得出分
片如何设置,然后开启多个关系型数据库实例,接着根据分片的配置导入导出数据,最后更新
程序代码支持分片配置。这类数据库包括:ScaleBase、dbShards.