中国信通院 潜水
  • 2发帖数
  • 2主题数
  • 0关注数
  • 0粉丝
开启左侧

中国信通院唐浩等:分布式数据库技术及发展趋势研究

[复制链接]
中国信通院 发表于 2021-2-9 10:40:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
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.


作者简介

唐 浩
中国信息通信研究院云盘算与大数据研究所综合部主任,研究方向为互联网网络技能和信息技能创新应用,包括新型网络基础办法、大数据技能应用。
姜春宇
中国信息通信研究院云盘算与大数据研究所大数据与区块链部副主任,大数据技能标准推进委员会办公室主任,研究方为大数据技能应用、数据库技能、数据资产管理、数据流通。
田稼丰
中国信息通信研究院云盘算与大数据研究所大数据与区块链部工程师,大数据技能标准推进委员会数据库工作组副主任,研究方向为数据库、大数据技能。


论文引用格式
唐浩, 姜春宇, 田稼丰. 分布式数据库技能及发展趋势研究[J]. 信息通信技能与政策, 2020(11): 86-90.


本文刊于《信息通信技能与政策》2020年第11期


                               
登录/注册后可看大图

主办:中国信息通信研究院



《信息通信技能与政策》是工业和信息化部主管、中国信息通信研究院主办的专业学术期刊。本刊定位于“信息通信技能前沿的风向标,信息社会政策探究的思想库”,聚焦信息通信领域技能趋势、公共政策、国家/产业/企业战略,发布前沿研究成果、焦点题目分析、热点政策解读等,推动5G、工业互联网、数字经济、人工智能、区块链、大数据、云盘算等技能产业的创新与发展,引导国家技能战略选择与产业政策制定,搭建产、学、研、用的高端学术交换平台。



                               
登录/注册后可看大图
http://ictp.caict.ac.cn/

精彩评论12

林毛鱼 发表于 2021-2-9 11:53:40 | 显示全部楼层
咋感觉信通院无所不能啊,啥都搞
秀才atgeneral 发表于 2021-2-10 23:22:11 | 显示全部楼层
转发了
花无缺6453 发表于 2021-2-10 23:40:05 | 显示全部楼层
转发了
资深架构师学习笔记 发表于 2021-2-10 21:51:26 | 显示全部楼层
转发了
狗带coding 发表于 2021-2-10 08:46:35 | 显示全部楼层
转发了
5126 发表于 2021-2-10 08:28:20 | 显示全部楼层
转发了
yinlonglu2018 发表于 2021-2-10 08:49:29 | 显示全部楼层
转发了
tomxx 发表于 2021-2-10 07:14:38 | 显示全部楼层
转发了
容灾备份IT民工 发表于 2021-2-9 11:19:53 | 显示全部楼层
转发了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城