
主流关系型分布式数据库选型与设计实战
2021-08-30 11:21:03笔者最早是作为MySQL DBA入行,从事了5年分布式数据库运维、自动化开发的工作,在大规模数据库集群的管理方面积累了经验
王宗瑞
阿里云 数据库交付架构师
9年互联网行业数据库从业经验,先后担任DBA、售前架构师、交付架构师岗位,在分布式数据库技术、数据库运维自动化领域经验尤为丰富,目前工作方向为信创领域的国产数据库改造、分布式改造。
笔者最早是作为MySQL DBA入行,从事了5年分布式数据库运维、自动化开发的工作,在大规模数据库集群的管理方面积累了经验;后来又先后从事云数据库售前解决方案和交付方案架构师的岗位,在于客户的研发和DBA交流合作的过程中,发现有不少同学被市面上玲琅满目的数据库品种,特别是分布式数据库搞得眼花缭乱,陷入选型困境。这里把自己在分布式数据库领域实际运维、架构和实施经验分享给大家,抛砖引玉,希望引起大家的共鸣。
主要从四个方面给大家做介绍:
一、数据库从集中式到分布式的演进
1、传统单机数据库
从狭义概念来讲,“数据库”就是OLTP场景的关系型单机数据库,诸如老牌的Oracle、DB2等商业数据库以及开源产品MySQL、PostgreSQL,主要解决两个业务问题:在线数据库的实时高效存取和事务保证。
传统单机数据库在基础能力之外,为满足特定业务场景,还支持诸多的数据库经典特性,如视图、触发器、外键约束、存储过程等等。坦率地说,传统单机数据库的容量和性能,足以满足绝大多数中小规模客户的需求;依托特定的软硬件条件,商业数据库甚至可以满足部分大规模客户的数据库使用需要。
但随着互联网时代的到来,业务数据呈暴发式增长,单机数据库在存储容量,和计算、吞吐上遇到了瓶颈。数据量的膨胀,拉高的不仅仅是存储成本,也提升了数据库运维难度和数据安全风险;高并发的业务场景,特别是高并发更新的场景,都需要充足的数据库计算资源和磁盘IO资源,单机数据库捉襟见肘。虽然可以通过业务对数据合理化拆分到多个数据库实例,来延缓单机资源见顶的时间,但需要不断付出高额的架构改造成本。
2、分布式数据库
在这种情况下,分布式数据库作为一种解决方案应运而生,基本思路都是将多台物理机资源组织起来,作为一个数据库对应用提供服务,理想情况下,高并发场景下的计算、存储io、网络io压力在物理机之间均衡。同时要求其具备资源横向和扩展能力(scale out),充分满足业务未来增长需求。

一般认为当前的分布式数据库可细分为分布式数据库中间件和原生分布式数据库两种类型,各大数据库厂商概莫能外。
分布式数据库中间件,架构为自下而上,即将单机数据库实例作为底层存储节点组合起来,求作为proxy层,将海量数据的分库分表逻辑对应用屏蔽起来(理想情况下,实践中,应用完全不清楚分布式逻辑很难做到sql优化设计)底层存储资源的扩容也让应用无感知,典型的ShareNothing架构。
原生分布式数据库,也就是前几年盛行一时的NewSQL数据库,架构是上下一体的,计算层和存储层耦合较为紧密,计算层OLTP数据库为SMP架构,分布式可实现负载均衡和高可用,OLAP数据库多位MPP架构,利用并行处理对复杂查询加速;存储层常采用ShareNothing架构对IO资源进行隔离,多副本之间采用分布式一致性算法在数据可用性和一致性之间做出平衡。因为计算层和存储层一体化设计,往往更容易兼容更多传统单机数据库的产品特性。
3、云原生数据库
这是近几年来比较热门的一个数据库分类,常常与分布式数据库发生混淆,但二者之间天然存在差别。
云原生本质上是充分利用云计算基础设施的高性能、高可靠性和高弹性能力研发云上产品的一种方式。在专门以云计算资源为基础研发的数据库,才是云原生数据库,如AWS的aurora、阿里云的PolarDB,它们能带来近乎传统单机数据库的特性支持和使用体验,同时具备资源(计算、存储)快速弹性伸缩的能力,资源虽然是分布式的,但数据库架构的实质依然是scale up。
与云基础设施的强耦合,是云原生数据库区别于分布式数据库的最大特点。
4、不同场景下的分布式数据库选型
一些业务场景下,往往不需要采用分布式数据库方案,避繁就简,有更轻量级的解决方法:
二、分布式数据库分类
从应用场景角度看,市面上的分布式数据库可分为OLTP、OLAP和、非机构&专有领域NOSQL三个大类,这也是大多数云厂商数据库产品页面的常用分类。
1、OLTP数据库
Mycat和PlarDB-X(之前的DRDS)系出同源,最早都是淘宝的数据库中间件TDDL,一个开源,一个是商业产品。
2、OLAP数据库
OLAP数据库往往要处理海量数据的复杂分析,采用MPP架构,天然需要分布式架构,数据分片,进行并行计算加速。
3、非机构化&专有领域NoSQL
缓存领域,Codis类似TP数据库中间件的方案。
宽列数据库(bigtable)往往用于存储海量非机构化数据,需要高写入吞吐,天然需要分布式架构应对。
在时序数据库和图数据库领域,并非全部产品都是分布式的,但这两种场景涉及的数据量如果增长较快,分布式架构是其加分项。
三、关系型分布式数据库最佳实践
1、分布式数据库中间件
1)场景一
分布式数据库中间件使用的前提是,数据已经进行过充分合理的垂直拆分
最佳实践是,业务、数据具有天然水平拆分特点,如个人网盘,天然适合用户id拆分,电商买家库,天然适合买家id拆分,电子社保卡,天然适合卡号拆分
有高并发更新的大数据表,适合水平拆分,与他关联的小表做广播表,不许关联的单表不要拆分
2)场景二
平滑扩容能力,是分布式中间件的核心技术竞争力,业务无感是最高境界,但很难真正做到
扩容时可操作的数据粒度是把双刃剑,业务灵活性和运维便利度,不可兼得
拆分键级别的数据迁移与扩容,是解决数据库热点问题的良药
扩容的最高境界,是底层数据节点和中间件计算层的自适应弹性伸缩,目前看来,与云原生数据库相结合是解决之道
3)场景三
此方案主要是对分布式数据库中间件路由灵活性的考验
访问实效性和频率允许条件下,归档库或归档存储甚至可以是冷设备,需要时可自动加电加载
可以为归档库的OLAP访问,配置专属MPP架构的中间件proxy层,既达到并行计算加速效果,又实现了资源与OLTP业务隔离,避免争抢

2、原生分布式数据库
1)场景一
2)场景二
3)场景三
四、关系型分布式数据库总结与展望
一句话总结:技术没有银弹,不存在最好的数据库产品、一劳永逸的分布式数据库架构方案,只有针对具体业务场景的最适合的方案。
分布式数据库中间件,特别适合数据具有天然分片特征的场景,但在SQL研发上有要求,避免非拆分键查询和分布式事务,不然吞吐会非常差。
原生分布式数据库,适合对资源弹性伸缩,可用性和强一致性要求高的场景,与传统数据库的兼容度好,但架构往往不典型,运维难度略高,使用上分布式执行计划的优化也需要技巧。
值得一说到的是,分布式中间件产品现在通过自适应分区表,数据一致性hash,统一binlog服务等新特性的研发,越来越像原生分布式数据库靠拢;原生分布式数据库同样,不能完全摆脱实现数据透明水平拆分的中间件方案,相信二者的边界未来会逐渐模糊。
运维原生分布式数据库的架构与传统数据库差异较大,需要相关人才的积累,使用经验的沉淀和分享,这也是其拥抱开源社区,努力发展技术生态的重要原因。
Q1:分布式最终数据一致性的常用做法和最佳实践有哪些?
A1:这个问题我举一个分布式中间件的例子吧。我熟悉的一个分布式中间件,它最早实现决分布式事务采用的是柔性事务的方式。这个方式本质上是由这个中间件自身来在每次执行事务时候,记录每条SQL的undo日志、redo日志。一旦发现问题之后,它自己根据情况,决策重试还是回滚,在这个过程中就存在数据中间状态.在这过程中查询,就会查询到数据是不一致的。但通过它的undo日志和redo日志的机制,能够保证每笔事务的数据最终状态是一致的。同时他们也发现,这个柔性事务虽然在查询延迟、SQL吞吐上表现非常好,也能保证最终一致性,但对很多客户的较苛刻的数据一致性要求,比如金融行业、电商行业交易的一些场景是不能很好满足的。所以这个方案他们是作为分布式事务一种备选项,同时他们也实现了XA事务作为分布式事务的补充方案,并进一步向全局逻辑时钟事务时的方案靠拢,最后是这么做的。所以总结来说,最终数据一致性仅能满足一部分也业务场景的的需求!通用的,理想的分布式事务方案应该是强一致性的。
Q2:中间件的分布式数据库,针对业务的一些复杂多条件查询,有一些经验可以分享一下吗?
A2:这个问题在文章中其实有所涉及,中间件的分布式数据库目前的一些优秀产品已经具备了全局二级索引的能力。也就是说它可以支持有限的多维度查询。例如,我的主数据是基于订单id进行拆分的,但现在我想安装卖家id或买家id来进行查询怎么办?我可以通过这种方式来进行:去创建卖家id或买家id的二级索引,由二级索引来保存买家id或卖家id和订单id之间的映射关系。同时为了进一步改善性能,我还可以在我的全局二级索引里覆盖更多字段,根据二级索引查询时的一些要求来避免回表。通过这样的方式来解决多维度查询的问题。
Q3:在分布式数据库中网络分区问题遇到过吗?
A1:这个问题应该是关于原生分布式数据库的。原生分布式数据库如果你采用之前所谓的半同步、强同步等一些方式,或者在基于zookeeper做一致性的分区的容错的情况下,其实会遇到脑裂等一些问题。但基本上现在的原生分布式数据库采用的都是基于Poxos类的分布式一致性的协议来做的方案,这种方案最大的特点在于:只要不是多数派的节点出现故障,少数派的节点出现故障之后,多数派的节点就会自然而然地选主出来,快速地对外恢复服务,并且保证数据的一致性。而少数派一旦发现网络分区,知道自己是少数派没办法进行选举之后,就会自然地对外停止服务。通过这样的方式来避免网络分区和脑裂的问题。
新轩逸安装什么导航好
日产新轩逸导航一体机不破坏原车线路,专车专用,专配专用线插,收音机专用接口 新轩逸车载导航适用于日产新轩逸车型,是日产新轩逸最佳车载导航的选择 富威二代日产新轩逸专用导航可选配专用倒车可视摄像头 富威导航安装位置:不拆除原车CD机 ,在原车中控台上方储物盒位置装上7寸显示屏本日产新轩逸导航一体机保留原车功能 新轩逸车载导航导航高保真音质 富威二代日产新轩逸专用导航导航触摸手写输入操作,苹果滑动界面,时尚大方,提升使用体验感 富威导航主要功能:保留原车CD,收音机功能,手机蓝牙免提功能,MP3/MP4功能 日产新轩逸导航一体机采用最新地图,高清3D立体实景路口,路口清晰不走错路;电子狗提醒,减少罚单 德道汽车导航-实体店保障 德道汽车导航是广州一家最专业的DVD导航销售与服务商,具有专业知识,拥有长期合作的DVD导航工厂合作关系,我们把产品从工厂直达消费者,让用户获得更优惠的价格,更有保障的售后服务。 德道位于全国专业的汽车用品配件专业市场--广州永福路,广州德道在永福路永福中心一楼,是永福路黄金地带,方便客户找到我们,实体店门口提供多个车位,方便车主。 德道汽车导航-专业专注12年 德道汽车导航由一批多年从事GPS导航产业人才组成,熟悉GPS的各种应用:航空、航海、测量、授时、汽车。 德道汽车导航,了解各个厂家的品质与售后服务,对市场上的产品非常了解,选择最合适的产品,性价比最高的,售后有保障的产品介绍给消费者,没有最好,只有最合适。 我们以客户为中心,对客户负责,让客户买得放心,用得舒心。 德道汽车导航-强大安装团队 德道汽车导航拥有一支强大专业的安装团队,有多年从事汽车导航音响的技师组成,有着丰富的汽车导航实战经验。 DVD导航安装技术娴熟,处理问题经验丰富,不管是导航现场安装,还是电话指导安装DVD导航。 从导航产品安装及导航使用过程出现的问题都可以向我们的安装技师咨询。 售前能够清晰了解你的需求,给你介绍最合适你爱车的DVD导航,售后无后顾之忧。 德道汽车导航-厂家授权销售商 德道汽车导航在广州有着良好的口碑,来店安装的很多是老客户带新客户,这主要来自我们的优质服务及合理的产品价格,加上强大的销售安装团队,在很多厂家都有很好的知名度。 国内主流的DVD导航厂家都找到我们合作,并授权我们销售。 通过厂家的授权,我们具有竞争力的产品价格,有保障的产品售后服务,把这些优势带给我们的客户。 卖一台机,就打开一扇窗,打开一扇窗,进来一群朋友。 德道汽车导航-专业服务 德道汽车导航为打造更好的售后服务,专业打造一套ERP系统,包括:售前售后服务系统,只要你打电话来,我们就知道你所购买产品的记录,从而更快的提供服务,记录下你的需求。 我们的服务团队经过专业培训,为你提供更周到的售后服务。 同时我们还增设投诉系统,接受你的检阅,提升我们的服务水平。 给我们一次机会,我们将做得更好!
大数据云计算好不好学习?
大数据专业还是很好学习的,当前,国家大数据战略实施已经到了落地的关键时期,大数据技术产业创新发展、大数据与实体经济深度融合、以及大数据安全管理与法律规制等方面都进入了攻坚阶段大数据领域的人才需求主要围绕大数据的产业链展开,涉及到数据的采集、整理、存储、安全、分析、呈现和应用,岗位多集中在大数据平台研发、大数据应用开发、大数据分析和大数据运维等几个岗位。当前整个IT行业对于大数据人才的需求量还是比较大的
SQL server 2000 和 2005有什么区别?
数据库管理10个最重要的特点特点 描述数据库镜像通过新数据库镜像方法,将记录档案传送性能进行延伸。 您将可以使用数据库镜像,通过将自动失效转移建立到一个待用服务器上,增强您SQL服务器系统的可用性。 在线恢复使用SQL2005版服务器,数据库管理人员将可以在SQL服务器运行的情况下,执行恢复操作。 在线恢复改进了SQL服务器的可用性,因为只有正在被恢复的数据是无法使用的,而数据库的其他部分依然在线、可供使用。 在线检索操作在线检索选项可以在指数数据定义语言(DDL)执行期间,允许对基底表格、或集簇索引数据和任何有关的检索,进行同步修正。 例如,当一个集簇索引正在重建的时候,您可以对基底数据继续进行更新、并且对数据进行查询。 快速恢复新的、速度更快的恢复选项可以改进SQL服务器数据库的可用性。 管理人员将能够在事务日志向前滚动之后,重新连接到正在恢复的数据库。 安全性能的提高SQL Server 2005包括了一些在安全性能上的改进,例如数据库加密、设置安全默认值、增强密码政策、缜密的许可控制、以及一个增强型的安全模式。 新的SQL Server Management StudioSQL Server 2005引入了SQL Server Management Studio,这是一个新型的统一的管理工具组。 这个工具组将包括一些新的功能,以开发、配置SQL Server数据库,发现并修理其中的故障,同时这个工具组还对从前的功能进行了一些改进。 专门的管理员连接SQL Server 2005将引进一个专门的管理员连接,即使在一个服务器被锁住,或者因为其他原因不能使用的时候,管理员可以通过这个连接,接通这个正在运行的服务器。 这一功能将能让管理员,通过操作诊断功能、或Transact—SQL指令,找到并解决发现的问题。 快照隔离我们将在数据库层面上提供一个新的快照隔离(SI)标准。 通过快照隔离,使用者将能够使用与传统一致的视野观看数据库,存取最后执行的一行数据。 这一功能将为服务器提供更大的可升级性。 数据分割数据分割 将加强本地表检索分割,这使得大型表和索引可以得到高效的管理。 增强复制功能对于分布式数据库而言,SQL Server 2005提供了全面的方案修改(DDL)复制、下一代监控性能、从甲骨文(Oracle)到SQL Server的内置复制功能、对多个超文本传输协议(http)进行合并复制,以及就合并复制的可升级性和运行,进行了重大的改良。 另外,新的对等交易式复制性能,通过使用复制,改进了其对数据向外扩展的支持。 有关开发的10个最重要的特点特点 描述 框架主机使用SQL Server 2005,开发人员通过使用相似的语言,例如微软的Visual C# 和微软的Visual Basic,将能够创立数据库对象。 开发人员还将能够建立两个新的对象——用户定义的类和集合。 XML 技术在使用本地网络和互联网的情况下,在不同应用软件之间散步数据的时候,可扩展标记语言(XML)是一个重要的标准。 SQL Server 2005将会自身支持存储和查询可扩展标记语言文件。 2.0 版本从对SQL类的新的支持,到多活动结果集(MARS),SQL Server 2005中的将推动数据集的存取和操纵,实现更大的可升级性和灵活性。 增强的安全性SQL Server 2005中的新安全模式将用户和对象分开,提供fine-grain access存取、并允许对数据存取进行更大的控制。 另外,所有系统表格将作为视图得到实施,对数据库系统对象进行了更大程度的控制。 Transact-SQL 的增强性能SQL Server 2005为开发可升级的数据库应用软件,提供了新的语言功能。 这些增强的性能包括处理错误、递归查询功能、关系运算符PIVOT, APPLY, ROW_NUMBER和其他数据列排行功能,等等。 SQL 服务中介SQL服务中介将为大型、营业范围内的应用软件,提供一个分布式的、异步应用框架。 通告服务通告服务使得业务可以建立丰富的通知应用软件,向任何设备,提供个人化的和及时的信息,例如股市警报、新闻订阅、包裹递送警报、航空公司票价等。 在SQL Server 2005中,通告服务和其他技术更加紧密地融合在了一起,这些技术包括分析服务、SQL Server Management Studio。 Web服务使用SQL Server 2005,开发人员将能够在数据库层开发Web服务,将SQL Server当作一个超文本传输协议(HTTP)侦听器,并且为网络服务中心应用软件提供一个新型的数据存取功能。 报表服务利用SQL Server 2005, 报表服务可以提供报表控制,可以通过Visual Studio 2005发行。 全文搜索功能的增强SQL SERVER 2005将支持丰富的全文应用软件。 服务器的编目功能将得到增强,对编目的对象提供更大的灵活性。 查询性能和可升级性将大幅得到改进,同时新的管理工具将为有关全文功能的运行,提供更深入的了解。 有关商业智能特征的10个最重要的特点特点 描述分析服务SQL SERVER 2005的分析服务迈入了实时分析的领域。 从对可升级性性能的增强、到与微软Office软件的深度融合,SQL SERVER 2005将帮助您,将商业智能扩展到您业务的每一个层次。 数据传输服务(DTS)DTS数据传输服务是一套绘图工具和可编程的对象,您可以用这些工具和对象,对从截然不同来源而来的数据进行摘录、传输和加载(ETL),同时将其转送到单独或多个目的地。 SQL SERVER 2005将引进一个完整的、数据传输服务的、重新设计方案,这一方案为用户提供了一个全面的摘录、传输和加载平台。 数据挖掘我们将引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简单起来。 报表服务在SQL SERVER 2005中,报表服务将为在线分析处理(OLAP)环境提供自我服务、创建最终用户特别报告、增强查询方面的开发水平,并为丰富和便于维护企业汇报环境,就允许升级方面,提供增进的性能。 集群支持通过支持容错技术移转丛集、增强对多重执行个体的支持、以及支持备份和恢复分析服务对象和数据,分析服务改进了其可用性。 主要运行指标主要运行指标(KPIs)为企业提供了新的功能,使其可以定义图表化的、和可定制化的商业衡量标准,以帮助公司制定和跟踪主要的业务基准。 可伸缩性和性能并行分割处理,创建远程关系在线分析处理(ROLAP)或混合在线分析处理(HOLAP)分割,分布式分割单元,持续计算,和预制缓存等特性,极大地提升了SQL Server 2005中分析服务的可伸缩性和性能。 单击单元当在一个数据仓库中创建一个单元时,单元向导将包括一个可以单击单元检测和建议的操作。 预制缓存预制缓存将MOLAP等级查询运行与实时数据分析合并到一起,排除了维护在线分析处理存储的需要。 显而易见,预制缓存将数据的一个更新备份进行同步操作,并对其进行维护,而这些数据是专门为高速查询而组织的、它们将最终用户从超载的相关数据库分离了出来。 与Microsoft Office System集成在报表服务中,由报表服务器提供的报表能够在Microsoft SharePoint门户服务器和Microsoft Office System应用软件的环境中运行,Office System应用软件其中包括Microsoft Word和Microsoft Excel。 您可以使用SharePoint功能,订阅报表、建立新版本的报表,以及分发报表。 您还能够在Word或Excel软件中打开报表,观看超文本连接标示语言(HTML)版本的报表。
发表评论