近期,由国家工业信息安全发展研究中心发布了2022年《分布式数据库发展趋势研究报告》。报告从数据库产业发展、分布式数据库产品价值、面临调整、技术路线、发展趋势、发展方向等多角度阐述了分布式数据库的诸多问题。本文,从个人角度谈谈对上述研究报告的解读。
1、背景篇:不鸣则已、一鸣惊人
伴随着数字化转型深化,企业对于数据的重视程度逐步加深。伴随着以云计算、5G、IOT、人工智能、区块链等新兴技术的发展,催着更多新兴数据场景的出现。这其中直观带来的就是数据规模呈现几何级增长、数据结构复杂度与日攀升。
根据第三方机构的预测数据,全球数据存储量在未来几年将呈现爆炸式增长。除去数据规模外,在从数据采集、存储、传输、展现、分析和优化等方面都对数据的载体数据库提出了更高的要求。希望以此更好地实现企业对数据资产治理、增值与科学决策,数据高可靠高可用、数据在线分析等诉求,进一步发挥数据价值。上述诉求可以说为数据库提出了更高的要求,但传统数据库架构在超大规模、高并发、实时处理、数据安全等方面明显力不从心,此外高昂建设成本也难以迎合数字化时代的潮流趋势。相较于传统数据库,新兴分布式数据库的优势都凸显出来。
突破规模化存储能力
传统单机或集中式架构下,承载的数据规模受限于本地磁盘或可对接的外部存储空间。虽然后者可做到大规模(如PB级),但其建设周期长、扩展不灵活、投入成本高且依然还会面临IO的性能瓶颈。而分布式架构数据库,天然具有的数据分片能力,是有效解决超大规模数据承载的利器。
突破高性能计算瓶颈
作为承载计算的主要资源,CPU、内存资源对计算尤为重要。在传统单机或集中式架构下,上述资源仅能通过Scale UP方式进行扩展,其扩展能力有限,无法整合更多资源参与计算。而分布式架构数据库,通过网络可汇聚更多计算资源参与其中,形成更大规模的算力支持。在高并发、高性能计算领域更有优势。
填补数据分析能力短板
数据分析,是数据使用的重要方向之一,过去通常是由数据仓库等技术承载。这种在线数据库与离线数据仓库的架构,能在一定程度上解决数据分析问题,但在实时性、一致性、成本等方面存在短板。理想的方式在单一系统完成,但传统架构受限于资源,无法完全提供。而分布式架构数据库,通过其算力的整合可满足混合负载的业务压力,大幅度提升分析时效性,并减少数据冗余,灵活性大大提高。
提升可用性与安全性
传统架构下,数据库可用性更多取决于单点(或存储),设计上往往通过冗余硬件保护等方式去提升;但受限于架构约束难以达到非常高的可用性。针对数据安全,也通常是通过主备复制、备份等手段完成,但难以保证数据在线安全,需要窗口期完成恢复。分布式架构具备的存算分离、多副本、弹性扩展等能力,可有效提升整体可用性和数据安全。用户可根据需要,灵活调整架构,提升可用性和安全性。
优化成本模型实现按需扩展
传统架构数据库的成本相对高昂,这主要是由于其架构限制,向上扩展相对容易,水平扩展比较困难。为了保证快速的业务发展,通常在项目设计初期就需要按最大容量进行规划或为了更高的可靠性需要付出高额的成本。而分布式架构数据库则不同,其架构天然就支持灵活扩展能力(包括存储、计算),并可实现低成本的高可用解决方案(多副本)。上述能力,将有效降低企业在构建系统时的投入,特别是在面对快速、多变业务的场景更是如此。
2、技术篇:百花齐放、百家争鸣
从上图可见,分布式数据库已经发展多年,特别是近些年来已经逐步成熟并落地使用。从大的技术路线来看,可大致分为几种类型:
路线:分布式中间件+单机数据库
这一技术路线是在单机数据库系统上进行改造,主要解决计算存储的扩展性问题。上层为一组无状态计算节点,基于分片规则提供SQL解析,请求转发和结果合并的能力。下层为增强的单机数据库,提供单机数据库的存储和执行能力。这一架构通过数据在逻辑层的切割,可近似线性地对计算性能和存储容量进行扩展,具有可规模化扩展的能力。
路线:分布式存储构建
这一技术路线是通过构建分布式共享存储实现扩展,采用非对称计算节点,大部分公有云数据库是这条路线。这条路线有限地解决扩展性问题,跨地域数据一致性主要依赖分布式存储引擎。共享存储能够跨多个节点提供读写,上层的计算部分是无状态的一组节点组成。当有写能力的计算节点出现故障时,会自动从可用的读节点中自动选出一个作为写节点,实现写能力的高可用。
路线:原生分布式
这一技术路线是原生分布式数据库,各计算节点提供对等的读写服务。这条路线是根据分布式一致性协议做底层设计,与传统数据库有本质区别。原生分布式数据库将分布式存储、事务、计算有机的结合在一起,数据由系统自动打散并存储多个副本,通过一致性协议保证多个副本和事务日志的一致性,对分布式事务、全局MVCC等支持更为彻底。整个分布式结构是包裹在集群内部的,应用对此无感知。
3、 趋势篇:石以砥焉、化钝为利
随着分布式架构数据库在众多场景使用,再享受到其带来的收益之外,也对这一新架构产品提出了更多的挑战。这些挑战也为未来分布式数据库发展指明了方向。
(1)融合化原生设计
如上面谈到的分布式数据库存在不同路线,不同路线产品差异明显。从长期发展来看,不同路线产品呈现逐步融合的现象,各家各取所长,不断丰富产品能力。一方面相较于单机或集中式架构,分布式架构产品仍然存在诸多短板,可理解为基础能力补齐;另一方面用户对于分布式能力也提出了更高的要求,可理解为扩展能力增强。
- 基础能力补齐
在分布式架构下,相较于单机或集中式架构,仍存在大量短板问题。这些会直接影响到用户的使用体验。如分布式事务的一致性保证问题,对于单机较容易实现的ACID,分布式环境中出现了更多的难题。分布式数据库将需要处理的事务进行拆分,再部署到不同的服务器上进行处理,理想状况下,整个过程需要全局一致性协议的保护,而分库分表两阶段的方式在一些意外情况下容易出现问题。再比如,分布式架构多采用存算分离架构,其天然会带来分层间网络开销问题,如何解决低延迟需求值得考虑。 - 扩展能力增强
随着分布式数据库的使用,如何使用好这一架构成为核心。例如在分布式场景下,如何做好数据分片的智能化。分布式通过分库分表进行数据拆分,从而各表的数据量保持在阈值以下,从而应对高并发和海量数据,但如何高效的、高质量的进行分片,还需再探索。此外,作为以一种新架构产品,分布式数据库所具备的弹性扩缩容、按需扩展、海量支持、多副本细粒度控制等课题,都是值得深入挖掘。
(2)负载一体化设计
企业级应用的业务场景通常可以分为联机交易和实时分析两种,通常称为OLTP和OLAP的业务应用。由于是不同的应用场景,很多企业往往会选择多款数据库产品分别支持。这种组合式的解决方案要求数据在不同产品间进行流转,数据的同步过程就带来了时间延迟和数据不一致的风险,而且还会产生冗余数据,成本开销被迫提高,这在一定程度上限制了企业的发展。分布式数据库的出现,为企业解决上述问题带来了契机,这也是近年来HTAP(混合负载)的兴起,其旨在打破事务处理和分析之间“壁垒”。未来分布式数据库都应具备混合负载能力,即在支持高并发、事务性请求的同时,也对分析型的复杂查询提供了良好的支持,实现计算、I/O资源互不干扰。通过在线交易和分析互不影响,一站式地解决企业级应用的各种需求,从而大幅度降低成本,同时提高了企业决策的效率。
(3)云与云原生设计
根据全球知名咨询公司Gartner指出,“到2022年,75%的数据库将被部署或迁移到云平台…”云化无疑代表了未来。数据库作为IT基础设施,如何与云环境融合成为大家的问题。特别是分布式数据库,其架构需要大量资源构建。如何通过与云的结合,有效解决灵活部署、弹性扩缩容、资源管理乃至如何更好地利用云基础资源做到真正的云原生,这些都是分布式数据库需要考虑的。因此在分布式数据库产品设计层面就要充分适配云环境、兼容更多云技术,从而添加更多资源管控、多部署形态、云原生资源利用等云化方面的能力。
(4)高可用一致性设计
作为数据库的基本能力要求,服务高可用和数据一致性一直是企业选择数据库的重点考察要求。特别是随着数字化转型,更多数据参与到企业业务流转中,这些都对如可用性提出更好要求。传统数据库架构,在满足7×24小时的服务不中断和数据零丢失方面往往已经超出其可承受能力,或者即使能解决其成本也十分高昂。分布式数据库具备的分层、多组件、多节点架构成为解决高可用的基础,有效控制故障范围、主动发现自愈等手段可大幅提升服务可用性。同时,其多副本机制为数据一致性安全提供可能,这也是相较于传统架构的突破,可做到数据更为精细粒度的一致性,满足各种数据场景下对一致性的不同等级要求。
(5)软硬结合异构设计
硬件和软件是信息系统的核心组件,两者之间相辅相成,互相促进。新型硬件的出现,可以为数据库发展带来更多的收益。一方面以基础硬件如多核CPU、异构计算(如GPU、FPGA)持久化内存、高速网络为代表的硬件出现,为分布式数据库架构提供更多的想象空间;另一方面新型硬件也会为数据库设计带来更多挑战,如何利用好新硬件值得各数据库厂商思考,甚至会颠覆之前的设计模式。此外,作为关键基础设施,数据库还要为操作系统、芯片的灰度替换提供支持,而在关键行业及软件领域,数据库还需要提供对异构芯片的支持,从而提升数字化解决方案的严谨性,降低应用风险。
(6)全密态安全设计
当前信息安全已经上升到国家战略高度,诸多行业监管机构和政府部门对数据存储和使用都有明确的安全合规性要求。2021年11月公布的《中华人民共和国个人信息保护法》,监管部门已在金融等行业中推广数据加密,要求敏感数据采用加密的方式进行存储。而作为数据承载主体的数据库,有义务为此提供坚实的数据安全保障。那么在分布式数据库设计之初,就需考虑在数据传输、数据存储、数据计算等多方面的安全问题。诸如透明数据加密、透明数据传输、多密钥管理、国密算法支持、密态计算等方面,都需要考虑。
(7)低成本集约化设计
分布式数据库,作为一种新架构产品,对于企业来说会带来不小成本。从管理角度来看,分布式架构对运维人员都带来新的要求,如何管理好成为要点。产品是否提供完整的管理能力、是否提供完备的生态工具等,将直接影响最终使用成果。从资源角度来看,分布式架构需要一定资源投入,如何规划设计好并通过诸如租户能力有效降低使用成本很重要。
(8)高兼容易迁移设计
对于底层数据库替换,最为头疼的就是数据库的替换。大部分企业经过企业信息化的长期积累与革新,在内部积累了大量的业务系统。传统的企业级数据库产品提供了强大的能力,协助开发者快速便捷地构建应用程序,但同时也导致应用设计过度依赖数据库功能。适配新的数据库产品必须对应用代码进行大量修改。没有两个数据库是完全一样的,分布式数据库更是如此。其在底层架构、实现逻辑上必然存在差异。比较好的方式,就是提供高兼容能力,这将有利于大幅降低代码改造成本。目前大多数分布式数据库还不完全具备主流数据库生态的兼容能力,兼容的种类还不够丰富,兼容度还有待提高。此外,分布式架构对于设计上也有着特殊的要求,如何降低研发设计成本,近似透明地屏蔽这一差异很重要。此外,数据从传统集中式数据库迁移至分布式数据库是一项复杂且庞大的工程。从前期兼容评估、应用设计改造,到中期的业务测试、性能测试,指导最终迁移完成并保证迁移准确性等,这些都需要提供全流程的支持。这也是目前分布式产品普遍有所缺失的。希望未来分布式数据库产品将具备全方位、高标准、高可靠性的平滑迁移能力。
4、发展篇:知之非艰、行之惟艰
分布式数据库作为新技术架构,如何推进是需要多方位的支持。从近些年来看,从国家、行业、用户等多方位都给予大力支持。从政策层面,将在作为数据基础设施之一的数据库提升到一定高度,重点布局针对数据库分布式转型、应用创新战略。在行业方面,越来越多的数据库厂商加入进来,特别是以分布式为特征的产品已然成为主流。在用户方面,以金融、电信为代表的高数据价值企业,已经开始在核心生产系统逐步使用。但同时我们也看到,分布式数据库在推进中,仍然存在诸多不足之处,这也是未来需重点关注发展之处。
(1)培育自有生态
数据库要想用好,是需要从“产、学、研、用”多角度考虑,是需要跟上下游生态形成合力,才能为客户提供更为完整的服务。相较于之前国外商业数据库或开源产品,国内数据库生态还需要加大投入,培育自有生态。在这其中,可以通过生态兼容加速这一过程,如何有效利用之前成熟生态值得考虑。此外,开源作为一种有效的生态构建手段,也是生态化建设的利器。
(2)共建行业标准
作为一种新型数据库,分布式架构尚未形成统一的行业标准或者事实标准。从最终用户角度来看,不得不面对纷繁复杂的产品细节,这也阻碍了分布式数据库的大范围推广。从行业整体发展角度来看,一方面可通过行业指导单位牵头,由行业内众多企业参与形成标准规范;一方面可通过构建标准化评测体系,建立可衡量标准。希望通过标准的建立,能探索出特色发展路径,抓住机遇尽早实现分布式数据库领域的换道超车。
(3)树立专有评测
分布式数据库,作为新产品有其架构特色。对于这一新产品的理解,各家各有不同。行业内急需统一的评测标准,从多维度评估这一新类型产品。这其中既包括传统数据库的基本能力,也需要包含分布式自有特点,如在高可用、备份恢复等。逐步建立其以功能测试、非功能测试及场景化测试相结合,形成完备的评测体系。
(4)填补最后路径
企业更换底层数据库,是一个颇为痛苦的过程,更换为一种全新架构产品更是如此。大量用户使用分布式架构的担忧是来自于对新架构、新产品的未知及对实施路径的陌生。前者我们可通过专有评测标准逐步熟悉,后者则需要通过最后路径的填补做好“最后一公里”。从选型评估、工作量评估、结构数据迁移、流量切换、上线保障等多角度,形成标准的实施路径将大大加速这一过程。
写在最后:
分布式数据库,尚处于发展早期,但已呈现蓬勃之势。虽然仍有很多不足,但发展空间巨大。这里送给分布式数据库从业者一句话:道阻且长,行则将至;行而不辍,未来可期!
作者介绍
韩锋,51CTO社区编辑,CCIA(中国计算机协会)常务理事,前Oracle ACE,腾讯TVP,阿里云MVP,dbaplus等多家社群创始人或专家团成员。有着丰富的一线数据库架构、软件研发、产品设计、团队管理经验。曾担任多家公司首席DBA、数据库架构师等职。在云、电商、金融、互联网等行业均有涉猎,精通多种关系型数据库,对NoSQL及大数据相关技术也有涉足,实践经验丰富。曾著有数据库相关著作《SQL优化最佳实践》、《数据库高效优化》。