What’s Really New with NewSQL?

摘要

NewSQL是真的优于传统的RDBMS,还是只是销售的噱头?

如果是真的优于传统的RDBMS,那么其科学依据是什么?

DBMS历史

1960年IBM’s IMS.

1970年IBM SYSTEM R, INGRES, Oracle.

1983年IBM DB2.

1990年MySQL,PG.

2000年,数据库中间件,中间件只能执行简单的操作,对于多表更新,多表连接无能为力。

2000年末,NOSQL,抛弃了事务特性和关系模型,取而代之的是最终一致性和替代模型,如KV,Document等模型 典型代表:Google BigTabel & Amazon Dynamo & MongoDB.

很多使用NOSQL的开发人员发现需要自己处理最终一致性,导致开发效率低下,NewSQL应运而生。

NewSQL定义

NewSQL同时包含NOSQL的可扩展性以及传统RDBMS的事务特性,关注于OLTP场景。

一些数据仓库如GP,关注于OLAP场景,不能称之为NEWSQL。

NewSQL的特点:

  1. 事务较短
  2. 每个语句涉及到的数据量很少
  3. 语句可重复性强

更技术的定义是:

  1. 使用lock-free并发控制
  2. share-nothing架构

NewSQL分类

大概分为三类:

  1. 采用新架构的全新系统
  2. 2000s左右的中间件系统
  3. DaaS

单节点的引擎替换不属于NEWSQL,比如TokuDB,ScaleDB等。这类系统基本都走进了衰落。

新架构

特点:

  1. 新架构基于share-nothing的方式,包含多节点并发控制,复制的容错技术,流量控制,以及分布式SQL执行器。
  2. 分布式执行器是此类系统的特性,各个节点可以交换数据,不用像中间件那样,所有数据必须经过中间件处理。
  3. 负责后端数据的分布,而不是依赖于一些分布式存储比如HDFS. SQL ON Hadoop我们不认为是NewSQL。

新架构的问题是:

  1. 使用的人太少
  2. 用户之前的工具和程序没法直接使用

透明中间件

优点是用户应用程序兼容性好。
缺点是每个节点后端存储使用现成的MySQL,优化程度有限。而且对于复杂查询处理难度很大。但是可以利用每个后端节点的执行器。

DaaS

大部分DaaS都是提供单点服务。这类称不上NewSQL。
Amazon的Aurora使用LSM提升了并发IO。
ClearDB只提供DaaS软件。
目前DaSS做的并不是特别好。

先进的架构

内存架构

内存性价比已经提升,大内存,价格降低,已经可以讲很大的数据量放进内存。
基于内存的优化可以不用再考虑对数据的等待,以及不用存在buffer pool的管理和非常繁重的并发控制模式。
目前内存数据库根据内部的内存追踪系统可以将部分内存swap到磁盘,从而达到可以处理的数据量大于实际内存容量的情况。

分片

通过指定分片列,对数据进行水平切分,分散到不同的数据节点。
尽量将相关联的数据分配到同一个切片,这样可以将执行下放到一个节点,而且不需要使用2PC来维护分布式事务的原子性。
NUODB和MemSQL使用异构架构。
NuoDB架构:

  1. Storage Manager SM 负责存储数据,将数据切分成atoms。
  2. Transaction Engine TE 是atom的内存镜像,每个atom只会出现在一个TE中。

MemSQL架构:

  1. 只负责执行的聚集节点
  2. 只负责存储的叶子节点

两个架构的区别在于数据的缓存。NuoDB TE会缓存atom,MemSQL的聚集节点不缓存数据,但是叶子节点会执行部分语句,
来减少返回给聚集节点的数据。
分片另一个方面是在线迁移功能,包括数据迁移以及数据的rebalance。
主要两种技术手段:

  1. virtual partition
  2. 根据range分区做更细粒度的balance.

并发控制

并发控制分为中心化和无中心化两种。
中心化存在一个中心事务协调器。
去中心化系统每个节点维护事务状态,需要和其它节点通信来发现事务冲突。
去中心化系统扩展性好,但是需要一个强同步的时钟系统,保证事务的全局顺序。
2PL两阶段锁,开销比较大,处理死锁复杂。目前大多NewSQL系统采用2PL + MVCC。修改操作加锁,读不加锁,使用基于Time Order的MVCC获取对应的版本数据即可。

二级索引

二级索引的分片方式和表的分片列不一致。
二级索引设计要点:

  1. 存储在什么位置
  2. 在事务中如何维护他们

所有的NewSQL系统都使用分片二级索引的方式。分片方式和复制方式的区别:

  1. 分片方式查找的时候可能找多个节点,更新只更新一个节点。
  2. 复制方式,只查找一个节点,更新的话,所有副本都要更新。

复制

数据库复制设计要点:保证各个节点数据的强一致性

  • 2PC消耗大
  • active-active 多点写方式,很难实现,不同节点的执行顺序可能不一致。
  • active-passive 单点写,给副本传递状态

宕机恢复

传统单机的宕机恢复是找到最近的检查点,从此检查点开始重新应用WAL日志。NewSQL不能简单使用单机的策略。
因为分布式数据库一个master宕机后,其replica会提升为master,原master重启后,不仅仅需要应用WAL,还需要与当前的master同步数据。

趋势

可预见的未来,数据库的发展是朝向HTAP,即OLTP+OLAP混合型的方向发展。

总结

本文标题:What’s Really New with NewSQL?

文章作者:Louis

发布时间:2017年09月13日 - 09:09

最后更新:2017年09月25日 - 14:09

原始链接:/2017/09/13/newsql/

许可协议: Louis-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。