作者简介
唐 浩
中国信息通信研究院云计算与大数据研究所综合部主任,研究方向为互联网网络技术和信息技术创新应用,包括新型网络基础设施、大数据技术应用。
姜春宇
中国信息通信研究院云计算与大数据研究所大数据与区块链部副主任,大数据技术标准推进委员会办公室主任,研究方为大数据技术应用、数据库技术、数据资产管理、数据流通。
田稼丰
中国信息通信研究院云计算与大数据研究所大数据与区块链部工程师,大数据技术标准推进委员会数据库工作组副主任,研究方向为数据库、大数据技术。
论文引用格式
唐浩, 姜春宇, 田稼丰. 分布式数据库技术及发展趋势研究[J]. 信息通信技术与政策, 2020(11): 86-90.
分布式数据库技术及发展趋势研究
唐浩 姜春宇 田稼丰
(中国信息通信研究院云计算与大数据研究所,北京 100191)
摘要:数据库是高效组织、存储、管理数据的软件,2000年后数据库开始了分布式之旅来应对海量数据存储、高并发读写任务等挑战。经过20多年的发展,业界在数据库的分布式化方面产出了大量理论和产品。介绍了分布式数据库发展的背景、核心技术、典型产品和未来技术的发展趋势。
关键词:分布式数据库;分布式事务;数据复制;数据分区
1 引言
数据库是高效组织、存储、管理数据的软件,是构建信息世界的基础工具。从第一款商业化关系数据库诞生开始,数据库管理系统已经走过40多年的历史,在发展过程中分化为面向事务处理和面向分析决策的数据库,在商业产品之外,诞生了开源的数据库,并逐渐成为一个主流方向。数据库管理系统起初都是单机形式,主要服务于银行、航空公司、宇航局等大型企业,2000年后随着在线业务的蓬勃发展,很多系统都面临处理高并发、大数据量、超高峰值等挑战,数据库开始了分布式之旅来应对这些挑战,这条路先从分析场景开始,然后扩展到事务处理领域。这两者面临的难度截然不同,分布式分析数据库主要解决海量数据的存储、查询分析的需求,主要是应对扩展性、高可用等挑战;而分布式事务数据库主要解决分布式事务的问题。
2 分布式数据库发展历程
20世纪80年代,伴随着关系数据库理论的诞生,BM和Oracle两家公司开始提供商业化的数据库产品,服务于各类大型企业。初期的数据库都是单机软件,跑在专有的硬件之上,比如IBM的大机、小型机,如果业务量或者数据量增加,只能进行垂直扩展,即采用增加CPU、存储的方式。这套体系的优点是非常稳定,缺点是开放性不够,与通用x86服务器体系之上的开发环境兼容性差,另外当业务量增长过快时,其扩展能力有限,而且这套系统的造价非常昂贵。
2000年以后,随着互联网在线业务的发展,业务系统访问的并发度呈指数级上升,海量数据计算和分析需求越来越普遍,传统单机系统在业务支撑、成本、开放性等方面均面临巨大挑战,数据库垂直扩展的模式也无法维系。以支付业务为例,随着在线购物、在线缴费方式的普及,支付业务系统的并发量迅速增长,尤其是在“双十一”“618”“春节抢红包”等场景下,每秒有上百万笔支付交易。互联网企业开始探索新的水平扩展的方案,最常见的就是应用系统通过分库分表进行解决。但是,这种解决方案的应用系统需要做大量改造,需要感知数据存储位置,增加了运维的复杂性,并因此出现了中间件的方式,如Mycat等。这种方式虽实现了数据对应用的透明,但未解决数据库运维的痛点。
随着大数据技术的发展,以Hadoop、Greenplum为代表的非结构化大规模数据处理技术崛起,这些技术主要采用Shared-nothing架构,在分析领域率先实现了分布式的扩展,分析的主要任务是数据的查询,其应对的挑战主要是海量数据的存储、计算,对于事务的要求较低。2010年后,谷歌Spanner、Tidb采用Paxos或Raft等一致性协议来解决中间件方案的单点瓶颈问题,这为事务数据库的分布式化提供了新的理论依据。
3 分布式数据库核心技术
分布式数据库是指数据在物理上分布而在逻辑上集中管理的数据库系统。分布式数据库的主要特点有3个:一是透明性。对于用户来说,分布式数据库相当于一个单机数据库,屏蔽了底层多节点、数据物理分散、副本一致性等细节问题;二是数据冗余性。分布式数据库通过多副本来实现系统可靠性和可用性,当某一节点中的数据不可用时,其他数据副本可以继续保证业务的连续性,还可以对数据就近计算,减少网络消耗,提升性能;三是易扩展性。分布式数据库能够通过水平扩展来提升整体的处理能力,数据可以被动态地分布到新增节点之上,消除数据倾斜。分布式数据库的核心技术包括数据复制,即不同副本之间的数据同步机制;数据分区,即如何将海量数据分布到不同节点中;分布式事务,即解决多节点面临的原子性、一致性、隔离性、持久性挑战。
3.1 数据复制
数据复制是一种实现数据备份的技术,可以保证存储在不同节点上的同一份数据是一致的。这样当一个节点发生故障后,可以从其他存储该数据的节点获取数据,避免数据丢失,进而提高了系统的可靠性。
在一个分布式系统中,一致性、可用性、分区容错性三者不可兼得。其中,一致性指在分布式系统中所有数据备份在同一时刻的值是否一致;可用性指分布式系统中一部分节点发生故障,集群能否继续响应客户端的读写请求;分区容错性是指在分布式系统遇到网络分区的情况下,仍然可以响应用户的请求。在实际情况中,网络通信是不可靠的,分布式系统必须具备分区容错性,那么分布式系统必须选择在发生分区后,是中止服务等待数据同步来保证一致性,还是继续提供服务,忽略各个节点可能的数据不一致性。
对于分布式数据库的数据复制技术来讲,需要在一致性和可用性之间做出权衡,一般来说一共有同步复制、异步复制、半同步复制3种数据复制技术。同步复制要求主备节点都完成更新,才告知用户更新成功;异步复制只需要主节点更新成功,便立即返回,不需要等待备节点更新完成;而半同步复制则要求主节点更新完成,并且有一个或半数以上的备节点更新完毕,才返回更新成功。这3类技术都有其合适的使用场景,均广泛应用于分布式数据库中。
3.2 数据分区
单台机器很难应对海量的数据或者很高的并发查询,需要把数据拆分到多个节点上,在多个节点上进行存储和处理,这种技术叫做数据分区也称为数据分片。数据分区的主要目的是提高可扩展性,使数据分散到多个分区,如果对单个分区进行查询,每个节点都只对自己所在的分区进行独立查询。
数据分区有水平分区、垂直分区两种类型,水平分区是将表的内容按照某种规则分散到多个节点上,每个节点包含表的部分数据,比如按照月来切分数据;垂直分区是按照业务将不同的表分布到不同的节点,或者表的不同列放到不同节点。关于分区的方式主要有基于关键字区间分区、基于关键字哈希值分区两种,其中基于关键字区间分区首先对关键字进行排序,每个分区只负责一段范围内的关键字,这种方式能够提供良好的区间查询特性,缺点是会导致热点;基于关键字哈希值分区能够将关键字均匀地分配到多个分区中,每个分区负责一定范围的哈希值,可解决数据倾斜和热点问题,但其区间查询效率较低。
随着时间的推移,数据库的分区面临着负载倾斜、热点等问题,需要进行分区的再度平衡,目前主要有固定数量的分区、动态分区、按节点比例分区等策略可供选择。
3.3 分布式事务
事务主要是ACID,分别代表原子性、一致性、隔离性与持久性。分布式事务是对跨两个或多个数据存储库(尤其是数据库)执行的一组操作。它通常在由网络连接的独立节点之间进行协调,但也可能跨越单个服务器上的多个数据库。经过多年的发展,业界已衍生出多种分布式事务解决方案,比如两阶段提交、TCC方案、基于消息的方案等。两阶段提交是一种在多节点之间实现事务原子提交的算法,用来确保所有节点要么全部提交,要么全部中止[1]。
两阶段提交引入协调者这个新角色,将执行过程分为准备和执行两个阶段[2]。当应用程序准备提交事务时,协调者开启阶段并向所有节点发送一个准备请求,询问他们是否可以提交,并等待参与者的回复。如果所有参与者答复“是”,表明都已经准备好,协调者开启阶段2即执行提交。如果有任何参与者回复“否”,则表示有节点没有准备好,那么协调者在阶段2中向所有节点发送放弃提交的消息。两阶段提交的一次成功执行如图1所示。
图1 两阶段提交的一次成功执行
TCC方案由Guy Pardon提出,是Try、Confirm、Cancel的简称,采用补偿机制,分为3个阶段:Try阶段主要是对业务系统做一致性检查,预留执行所需要的资源;Confirm阶段直接开始执行,并使用Try阶段预留的资源;如果业务执行失败,则进入Cancel阶段,释放所有占用的资源,并回滚Confirm阶段执行的操作[3]。
4 典型分布式数据库产品
2000年以后,分布式数据库发展迎来了热潮,各类分布式数据库百花齐放,从数据模型角度可以将分布式数据库分为关系型和非关系型两类,分布式关系型数据库按照使用场景又可以被分为面向事务和面向分析两类。下面着重介绍3款典型的分布式数据库产品。
4.1 Greenplum
Greenplum是Pivotal公司的产品,在开源单机数据库PostgreSQL的基础上进行了分布式的改造,采用无共享架构,每个节点的CPU、内存等资源都是独立的。一个Greenplum集群通常由一个主节点、一个备主节点和多个从节点构成,节点之间通过高速网络连接[4]。作为分布式分析数据库的典型代表,Greenplum首先具备高线性扩展能力,采用无共享架构容许随时增加机器的节点,数据和计算任务可以被动态地扩展到新增加节点上;其次具备高可用性,通过主备的模式和数据冗余来保障整个系统的高可用性;而且还能提供很好的通用性和兼容能力,除了可支持PostgresSQL语法外,还可支持多种SQL标准,包括SQL92、SQL99、SQL2003等,并且对JDBC、ODBC、Python API也有良好的支持。除此之外,Greenplum还拥有支持数据模型的多态扩展、对事务有较好支持、开放性好等优点。
4.2 Spanner
Spanner是谷歌开发的分布式数据库,底层采用的是键值数据模型,经过10年的演进,增加了强类型模式系统、SQL查询引擎和其他特性,并逐渐向关系型系统靠近[5]。作为一个全球分布的数据库,Spanner提供了几个独特的创新点。首先,应用程序可以对数据的复制配置进行细粒度的动态控制,应用程序可以指定数据分布在哪些数据中心、数据与用户之间的距离、副本之间的距离以及需要维护多少副本[6]。为平衡不同数据中心的资源,系统还可以在不同数据中心之间动态地移动数据;其次,通过实现全球时钟同步,Spanner提供外部一致的读取和写入,以及在时间戳上跨数据库的全局一致性读取;最后,在事务方面,Spanner采用了复制的预写Redo日志,副本间通过Paxos一致性协议来对每个日志条目的内容达成共识,并且使用悲观锁定和时间戳的组合来控制并发。
4.3 JanusGraph
图数据库是一种以图结构(点和边)进行存储和查询的数据库,是近期热度最高的数据库方向。JanusGraph是一个分布式的图数据库,可以自由地扩展节点,能够将数千亿个顶点和边的图存储在集群上,通过支持图计算框架Apache TinkerPop来提供图数据库(OLTP)和图分析系统(OLAP)的能力,不仅支持实时、数千用户并发遍历图,还能提供图分析查询的功能[7]。JanusGraph使用Gremlin作为查询语言,其存储依赖于第三方的分布式存储系统(如Cassandra或Hbase),因此可能会造成额外的维护成本。由于JanusGraph开放性较好,与大数据生态结合紧密,采用分布式的架构,并拥有既支持事务又支持分析的特点,所以是目前非常受欢迎的图数据库开源项目,未来有很大的发展空间。
5 分布式数据库技术发展趋势
随着云计算、人工智能、新型硬件的发展,数据库的架构随之发生变化。为适配云的发展,计算和存储分离成为一个必然趋势,诞生了诸多云原生数据库。而人工智能技术的演进为数据库集群的运维、调优提供了新的思路。新的网络、存储、芯片的迭代更新进一步推动了数据库架构的变化,众多数据库厂商都在积极尝试利用新的硬件能力来提升性能。
5.1 计算存储分离
分布式系统大多采用无共享架构,在这种架构下,数据可以“就地计算”,减少了网络开销。其缺点也非常明显,由于计算资源和存储资源是紧耦合的,所以在能力扩充方面需要同时进行,从而势必产生资源浪费。在存算分离架构下,存储层和计算层可以根据需求分别进行扩展,一是解决了混合计算存储带来的资源浪费问题,也可以更好地与云平台融合,适应云计算的发展趋势;二是无损容灾将数据库容灾问题转化为更加成熟的分布式存储系统的容灾问题,而类Paxos协议在分布式存储中被广泛使用[8]。例如,Snowflake数据仓库最早提出了独特的存储、计算以及管理服务分离的架构,使得计算层与缓存层并不强耦合[9]。在数据库端,国内外云厂商近两三年来都研发了存算分离的产品,包括AWS的Aurora、阿里巴巴的PolarDB、腾讯的CynosDB等,为存储和计算带来了更好的扩展自由度和更佳的性能。
5.2 智能化运维
分布式数据库通常部署在几十台到上千台的机器上,集群故障的概率非常高,给运维人员带来了很大的挑战,而利用机器学习和统计学的手段来管理数据库集群成为当前研究的热点。Oracle自治数据库能自动进行修补、升级和调优,因此无需人工干预或停机[10];阿里巴巴的PolarDB利用智能化的技术来调优数据库,比如进行慢SQL优化、对缓存大小进行调优、进行热点消除和故障检测[11]。
5.3 新型硬件
新型硬件的发展为分布式数据库的架构带来了新的变化。分布式系统初始避免数据的搬移,减少网络的IO的开销,随着RDMA等高速网络的发展,网络IO逐渐不再是瓶颈,从存储向计算端搬移数据的效率变快了,数据湖等统一的数据存储层出现了。此外,大内存和高速硬盘渐渐普及,NVM等非易失内存的发展,很可能颠覆计算机系统的结构,内存计算的潜力会慢慢爆发,分布式数据库也在跟进内存计算的方向。在芯片层,数据库之前以CPU为调度核心,随着GPU、FPGA、ASIC等芯片的发展,以及人工智能、物联网、复杂分析、高性能计算等多样性的任务负载出现,数据库出现了利用异构芯片能力来应对不同任务的趋势,最大化地提升了效率。
6 结束语
随着互联网在线业务的不断发展,信息技术向产业互联网延伸,开源理念不断深入,国内分布式数据库市场迎来了发展的春天。本文描述了分布式数据库的 发展历程,介绍了分布式数据复制、分布式事务、数据分区3类核心技术,对3款典型的分布式数据库产品进行了详细的解读,阐述了其特性和创新点。最后,结合云计算、人工智能和硬件的发展情况展望了未来分布式数据库技术发展的趋势。相信随着时间的累计和海量应用的支持,国产分布式数据库产品的前景一定 会越来越好。
参考文献
[1] Philip A. Bernstein, Vassos Hadzilacos. Nathan goodman: concurrency control and recovery in database systems[M]. Addison-Wesley Longman Publishing Co., Inc., 1987.
[2] Samaras G, Britton K, Citron A, et al. Two-phase commit optimizations in a commercial distributed environment[J]. Distributed & Parallel Databases, 1995, 3(4):325-360.
[3] 方意, 朱永强, 宫学庆. 微服务架构下的分布式事务处理[J]. 计算机应用与软件, 2019,36(1):158-164.
[4] 冯雷, 姚延栋, 高小明, 等. Greenplum: 从大数据战略到实现[M]. 机械工业出版社, 2019.
[5] Dale Woodford, Dale Woodford, Dale Woodford, et al. Spanner: becoming a SQL system[C]//Acm International Conference on Management of Data. ACM, 2017.
[6] Corbett J C, Dean J, Epstein M, et al. Spanner: Google’s globally-distributed database[J]. ACM Transactions on Computer Systems, 2012,31(3):8.
[7]JanusGraph. Distributed, open source, massively scalable graph database[EB/OL]. [2020-08-10]. https://janusgraph.org/.
[8] Alexandre Verbitski, Tengiz Kharatishvilli, Xiaofeng Bao, et al. Amazon aurora: on avoiding distributed consensus for I/Os, commits, and membership changes[R]. The 2018 International Conference, 2018.
[9] Dageville, Beno, Cruanes, et al. The snowflake elastic data warehouse[R]. Proceedings of the 2016 International Conference on Management of Data, 2016.
[10] Oracle. Oracle autonomous database technical overview[R/OL]. [2020-08-10]. https://www.oracle.com/cn/a/ocom/docs/database/oracle-autonomous-database- technical-overview.pdf.
[11] Li F. Cloud-native database systems at Alibaba: opportunities and challenges[J]. Proceedings of the VLDB Endowment, 2019,12(12):2263-2272.
Research on distributed database technology and its development trend
TANG Hao, JIANG Chunyu, TIAN Jiafeng
(Cloud Computing & Big Data Research Institute, China Academy of Information and Communications Technology, Beijing 100191, China)
Abstract: Database is an efficient software for organizing, storing and managing data. In 2000, the distributed database began to deal with massive data storage, high concurrent read and write tasks, etc. With more than 20 years of development, the industry has produced a lot of theories and products in the field of distributed database. This paper introduces the background, core technology, typical products and future technology development trend of distributed database.
Key words: distributed database; distributed transaction; data replication; data partition
本文刊于《信息通信技术与政策》2020年第11期
主办:中国信息通信研究院
《信息通信技术与政策》是工业和信息化部主管、中国信息通信研究院主办的专业学术期刊。本刊定位于“信息通信技术前沿的风向标,信息社会政策探究的思想库”,聚焦信息通信领域技术趋势、公共政策、国家/产业/企业战略,发布前沿研究成果、焦点问题分析、热点政策解读等,推动5G、工业互联网、数字经济、人工智能、区块链、大数据、云计算等技术产业的创新与发展,引导国家技术战略选择与产业政策制定,搭建产、学、研、用的高端学术交流平台。
《信息通信技术与政策》官网开通啦!
为进一步提高期刊信息化建设水平,为广大学者提供更优质的服务,我刊于2020年11月18日起正式推出官方网站,现已进入网站试运行阶段。我们将以更专业的态度、更丰富的内容、更权威的报道,继续提供有前瞻性、指导性、实用性的优秀文稿,为建设网络强国和制造强国做出更大贡献!
http://ictp.caict.ac.cn/
主要栏目
🔷 专家论坛
🔷 专题
🔷 产业与政策
🔷 技术与标准
推荐阅读
你“在看”我吗?

