NewSQL的分类
NewSQL是指一类关系型数据库,即有NoSQL的扩展性,又支持ACID事务。
NewSQL分成三类:New Architecture、Transparent Sharding Middleware、Database-as-a-Service。
New Architecture
分布式设架构设计,一般是share-nothing的架构,支持mutli-node concurrency control、fault tolerance through replication、flow control、distributed query processing。因为针对分布式环境设计,所以可以做的优化空间更多,比如查询优化、节点间通信(不必依赖中间件中心节点)等。该思路下一般(Spanner不是)要自己管理数据存储和分布,以支持将请求发到数据而不是将数据带到请求节点。
因为是全新的架构,兼容和系统生态会是一个大问题。以我看到的情况,坦白地说,这些工作都是偏离core-tech之外的dirty work。
典型系统:Clustrix、Google Spanner、H-Store、HyPer、MemSQL、NuoDB、Pivotal GemFire XD、SAP HANA、VoltDB。
Transparent Sharding Middleware
中间件思路下,有一个中心组件用来路由请求、协调事务(应该是协调完成分布式事务)、管理数据分布、副本复制、数据在节点间分区。每个节点上都运行一个单机版的数据库实例,上面有一个组件用于该实例与中心组件交互。整个集群对外是一个逻辑实例。
优势:应用往往已经很适合这种架构,所以不需要做什么改动。
劣势:单节点上的传统数据库是面向磁盘设计的,针对大内存和多核机器无法高效利用;另外就是复杂查询的查询计划和优化在中间件和各节点上会有重复工作。
典型系统:dbShards、MariaDB MaxScale、ScaleArc、ScaleBase。
Database-as-a-Service
云数据库
典型系统:Amazon Aurora、ClearDB