徐述 汪彦 曾海洋 王吉祥
摘要:本文综述了大数据应用下的分布式数据库现状;介绍了基于大数据的新型分布式数据库NewSQL的定義,特点与分类;提出了NewSQL以及分布式数据库的发展趋势是HTAP NewSQL。
关键词:大数据;分布式数据库;NewSQL;OLTP;HTAP
中图分类号:TP311.138 文献标识码:A 文章编号:1007-9416(2018)08-0051-02
随着Internet和大数据的发展,分布式数据库的数据管理和处理面临新的挑战。分布式数据库进入了大数据应用下的大规模分布处理阶段。
1 大数据应用下的分布式数据库
1.1 大数据
大数据是指PB或更高数量级的数据,包括结构化、半结构化和非结构化的数据,其规模或复杂程度超出了传统数据库和软件技术所能管理和处理的数据集范围[1]。大数据具有巨量(Volume)、多样(Variety)、快变(Velocity)和价值(Value)4V特征[2]。
大数据的应用主要集中在两个领域,一是大数据分析,是对传统数据仓库的延展,将更多的数据挖掘、更复杂的分析算法通过大数据技术来实现;二是在线大数据访问,将更长期的数据做到在线化、将所有大量相对静态的数据从昂贵的存储设备下放到大数据平台,提供给更多的渠道进行并发实时访问[3]。许多实际的大数据应用二者兼有。
1.2 分布式数据库
分布式数据库具有CAP理论,系统中数据一致性C(consist-ency)、系统可用性A(availability)、网络分区容错性P(partition tolerance)三者不可兼得,满足其中任意两项便会损害第三项[2]。例如,大多数网站分布式数据库架构选择(如京东)满足A P,对C要求低一些。
但是,无法放弃强事务和一致性需求的应用不能使用NoSQL,例如财务、订单系统等处理复杂关联性数据的企业级应用。采用NoSQL会迫使程序员在应用开发过程中花费大量精力来处理一致性以提高执行效率。要解决这个问题,要么使用更强大的单节点机器来垂直扩展,要么开发数据分片中间件来支持事务。两种方案都代价大,在此类应用环境下NewSQL出现了。
2 NEWSQL
NewSQL[4]一词是由451 Group分析师Matthew Aslett提出的,代指对传统数据库做出挑战的一类新型分布式数据库系统。
2.1 NEWSQL定义
NewSQL是一类现代关系型的分布式数据库,旨在为OLTP读写负载提供NoSQL系统下相同的扩展性能,同时提供事务的ACID保证[4]。NewSQL是融合了NoSQL系统和传统数据库事务管理功能的新型分布式数据库系统,具有与NoSQL相同的可扩展性、支持关系模型和大规模并发事务、使用SQL而非API修改数据库状态。
2.2 NEWSQL特征
(1)主内存存储。使用内存作为主存储的好处是执行时间短,系统不必假设事务需要访问的数据不在内存中,系统的性能更好。
(2)分区/分片无共享分布式架构。分布式NewSQL水平扩展方案都是将数据库分割成不相交的数据集,这称之为分区或者分片。
(3)并发控制多使用MVCC协议或组合方案。在NewSQL系统中使用最广泛的协议是分散式的多版本并发控制(MVCC)协议,或者两阶段锁(2PL)协议与MVCC的组合方案。多版本控制使事务在其他事务同时更新同一数据时也能成功完成,也避免了只读长事务阻塞写操作。
(4)次级索引支持快速查询。次级索引是针对表中非主键的属性集建立的索引,支持主键以外的快速查询。
新架构NewSQL系统(见3.1)都是分散式的,使用分区次级索引。每个节点存储索引的一部分,而不是完整的索引。查询可能需要跨越多个节点来查找数据,但如果是更新索引,只需修改一个节点。不支持次级索引的NewSQL系统,开发人员使用分布式缓存来间接实现次级索引。
3 NEWSQL分类
3.1 新型架构NewSQL
这类NewSQL系统是全新架构的,设计者摆脱原有系统的束缚从新开始设计。这个分类的NewSQL都采用分布式架构,对无共享资源进行操作,并包含多节点并发控制,复制容错,流控制和分布式查询处理等组件。
新型架构NewSQL的优点是:(1)系统的所有部分都可以针对多节点环境进行优化,如查询优化、节点间通信优化等。(2)自主管理主存储。(3)NewSQL可以使用比HDFS基于块的复制方案更为复杂灵活的复制方案。
此类NewSQL的代表有Clustrix, Cockroach,Google Spanner,H-Store,VoltDB等。
3.2 透明数据分片中间件NewSQL
这类NewSQL重新实现数据分片基础架构,并在此基础上开发数据库中间件。中间件负责分配查询、协调事务、管理数据位置、复制和跨节点数据分区。对应用来说中间件就是一个逻辑上的数据库。
这类NewSQL的优点是应用无需做任何修改。
其缺点是:(1)采用面向磁盘存储架构,很难通过提升CPU核数和内存容量向上扩展。(2)中间件方法会导致在分片节点上执行复杂查询的时候出现冗余查询和优化操作,这时查询在中间件执行一次,在各个单节点上会再执行一次。
3.3 DBaaS NewSQL(数据库即服务NewSQL)
即云服务提供商的NewSQL方案。用户不需要在本身硬件设备或云端虚拟机上安装和维护数据库管理系统。DBaaS提供商负责维护所有的数据库物理机及其配置,包括系统优化、复制等。交付给用户的只是一个连接DBaaS NewSQL URL,并且基于新型架构的DBaaS才是DBaaS NewSQL。
4 NewSQL趋势——HTAP NewSQL
4.1 HTAP
HTAP是新一代基于內存的数据处理模式,可以在不需要数据复制的情况下同时执行OLTP和OLAP。内存技术的进步使得标准业务应用采用HTAP成为可能[5]。HTAP通过分析新数据和历史数据的组合来完成知识推断,获得决策信息。相较传统商业智能只能基于历史数据进行操作,HTAP要更为先进。
在数据库应用里有三个方法支持HTAP:
(1)部署两个数据处理系统,一个专门处理事务,另一个处理分析查询;
(2)λ架构系统。使用单独的批处理系统(如Hadoop)计算历史数据,使用流处理系统(如Storm)来提供输入数据视图;
(3)更好的方法是使用HTAP NewSQL。
4.2 HTAP NewSQL
HTAP NewSQL是一个单一的分布式数据库系统,既支持高吞吐、低延迟的OLTP工作负载,又允许在事务和历史数据上运行复杂的OLAP查询。HTAP NewSQL结合了近年来OLTP(如内存存储、无锁执行)和OLAP(如列式存储)领域的技术。
5 结语
NewSQL数据库系统并不是与现有的系统架构完全不同,而是将以前独立地在某些数据库系统中得到实现的技术纳入一个单一平台的系统。伴随着更廉价而丰富计算资源的出现,NewSQL系统的应用范围和前景也会更为广泛。
参考文献
[1]申德荣,于戈,王习特,等.支持大数据管理的NoSQL系统研究综述[J].软件学报,2013,24(8):1786-1803.
[2]王珊,萨师煊.数据库管理系统概论(第5版)[M].北京:高等教育出版社,2017.
[3]王涛.大数据技术下,分布式数据库何去何从?[J].金融科技时代,2017,(4):26-31.
[4]M Aslett. What's Really New with NewSQL?[J].ACM,2016,45(2),45-55.
[5]H Plattner. A common database approach for OLTP and OLAP using an in-memory column database[C]. Acm Sigmod International Conference on Manageme of Data. Providence,Rhode Island,USA,2009 :1-2.