近年来,数据库技术在多元化业务需求和系列政策驱动下,发展快马加鞭。数据库百花齐放为 DBA 提供了更多的发展路径的同时,也彻底的改变了 DBA 的工作内容、方式和标准。
在数据库碎片化发展的趋势下,SphereEx CEO 张亮总在 2021 年首次提出了 Database Plus 理念,该理念倡导在数据库上层构建统一标准的生态层,提供如分布式数据库、异构统一接入、数据库能力增强、云原生及信创落地等方案。
本文从数据库发展趋势出发来介绍 Database Plus 理念、对 DBA 的帮助及最佳实践,记录我个人对 Database Plus 的理解。
数据库的发展需要从数据管理方式说起,数据管理方式经历了三个发展阶段,人工管理阶段、文件系统阶段和数据库系统阶段,各阶段特点如下图。
图源:华为云
人工管理阶段和文件系统阶段的数据管理方式在一定条件下满足了数据的管理需求,但无法保证数据的完整性、唯一性及安全性。到了 20 世纪 60 年代初期,在计算机软硬件技术飞速发展下,真正意义上的数据库管理系统诞生,历经半个多世纪的技术发展,关系型数据库始终占有着主导地位。
根据信通院发布的《数据库发展研究报告(2021 年)》,数据库管理系统的发展阶段分为前关系型阶段、关系型阶段和后关系型阶段。
阶段一:前关系型阶段(1960-1970)
层次和网状数据库管理系统,为第一代数据库管理系统,该阶段解决了数据的独立存储、统一管理和共享的问题,为数据库发展奠定了基础。
代表产品: IDS(Integrated Data Storage) 和 IMS(Information Management System),其中 IDS 是世界上第一款数据库管理系统。
阶段二:关系型阶段(1970-2008)
关系数据库管理系统,为第二代数据库管理系统,数据抽象级别较高,易于理解和使用。IBM 研究员 E.F.Codd 在 1970 年发表了著名的《A Relational Model of Data for Large Shared Data Banks》论文,拉开了关系型数据库的历史序幕。
代表产品:DB2、Informix、Oracle、PostgreSQL 、SQL Server 和 Sybase 等。
阶段三:后关系型阶段(2008-至今)
新一代数据库管理系统,随着各行业数字化转型的推进,数据量呈爆发式增长、业务流量激增,传统数据库的架构在时代浪潮冲击下升级转型,如向分布式、云原生以及存算分离等架构演进,解决了海量数据存储、瞬时高并发以及弹性扩展的问题。
代表产品:Aurora、Clustrix、CockroachDB、OceanBase、Spanner、TiDB 和 VoltDB 等。
图源:信通院
当今,在新兴业务需求和海量数据催生下,上层应用程序和底层数据技术愈发多样化,数据存储结构也越来越灵活,这些变化均对数据库能力不断提出新挑战。在交易场景外,如关联分析、物联网应用等赛道,也对应出现了图数据库、时序数据库等场景分化的产品,数据库技术不断在演进。
不同的数据库发展阶段会聚焦不同的问题,当前企业需要面对更细粒度的场景分化和更庞大的数据体量,也几乎不可能使用一种数据库来支撑所有的业务场景,因此,无论是 SQL、NoSQL 还是 NewSQL,都是不可或缺的存在,数据库多元共存是不可否认的现状。
下图是信通院发布的数据库产业图谱,旨在全面客观展现全球数据库产业中的关键领域、环节和代表企业。单从厂商 Logo 数量来看已经有相当大的篇幅,对应数据库产品数量之多就不言而喻了。
图源:信通院-《全球数据库产业图谱(2022)》
数据库碎片化,是当前数据库的发展趋势。
“我们在讲的 Database Plus,到底能解决什么样的问题?”提到了碎片化带来的 4 个痛点问题,分别是架构选型困难、技术挑战众多、运维复杂度高以及数据库间缺乏协作和统管能力,覆盖到了架构师所关注的方方面面。碎片化对应着变革,也改变着 DBA 的工作方式,下面我以 DBA 的角度,聊一聊在数据库碎片化浪潮中的感受。
系统稳定性堪忧
让数据库平稳运行是 DBA 的工作的重中之重,能否让我们 DBA 睡个好觉、过个好节,都取决于数据库技术栈的成熟度。
在 DBA 心中稳定性永远在第一位,因此无论是产品新增还是替换,系统稳定性在一定时间内将一直是一个问号。
产品选型工作繁重
数据库产品百花齐放,无论是基于内驱还是基于外驱的选型工作都非常繁重,数十甚至上百的测试用例一遍又一遍的在不同的产品上进行验证,选型工作时间紧、任务重。
也曾听到过 DBA 圈的同学抱怨:“新产品接二连三,测不过来了”。
学习成本直线攀升
单一的数据库产品无法满足业务的全部需求,保守估计,在企业内部至少有 3 种数据库产品并存,来满足不同阶段、不同业务的需求。随着架构升级、政策要求等原因,还会陆续加入新的产品,再也不是 MySQL+Oracle 一招鲜吃遍天的时代。
运维体系被打破
数据库运维体系需要大量时间沉淀,相关运维方法、平台搭建以及团队的默契并非一朝一夕所能形成。数据库碎片化,迫使 DBA 团队需要掌握多样化数据库的运维方式,运维体系不断被打破再重整。
生态欠缺致挑战多
文档和工具是生态建设中一部分,配套工具是一站式解决方案必不可少的工具,如兼容检查、异构迁移以及性能分析报告等工具,同时文档的结构和内容直接反映了产品的水平,是用户体验最直接的感受。
目前新兴产品普遍在文档和工具方面表现均有所欠缺,起步晚、投入资源有限,也客观的存在“写文档的不懂技术,懂技术的不屑于写文档”的普遍问题,文档和工具的匮乏给 DBA 带来更多的挑战。
Database Plus 是一种分布式数据库系统的设计理念。旨在碎片化的异构数据库上层构建生态,在最大限度复用数据库原生存算能力的前提下,进一步提供面向全局的扩展和叠加计算能力。使应用与数据库间的交互面向 Database Plus 构建的标准,从而屏蔽数据库碎片化对上层业务带来的差异化影响。
生态和标准,是最能体现 Database Plus 定位的词语。
Database Plus 不是重新来做一款数据库产品,而是站在前人的肩膀上形成差异化核心能力、多元化产品生态和统一化接入标准,来解决如分布式构建、数据库能力增强、异构数据库统一接入等问题。
连接
Database Plus 以数据库网关的形态为应用系统提供统一数据库入口,提供一个可以适配于各种数据库 SQL 方言和访问协议的中间层,Database Plus 将 SQL 解析而成的 AST(抽象语法树)根据其他数据库方言的规则重新生成 SQL,来屏蔽异构数据库方言差异,数据库网关是“连接”最佳的诠释。
增强
在当前众多成熟数据库产品的基础之上,Database Plus 复用数据库原生的存储和计算能力,再对其算力、容量及功能进行突破。
Database Plus 以全局化的方式在对数据库的分布式、数据控制和流量控制三个方面进行增强,能够灵活实现架构升级或数据库产品替换产生的需求,不需要业务层做妥协和重构。
可插拔
随着连接和增强的生态的丰富,Database Plus 的形态可能会变得臃肿,因此可插拔架构是 Database Plus 必不可少的设计方案。在扩展的同时还能做到合理收敛,让用户只关注真正需要的部分,做到生态无边界,能力可插拔。
面向不同的角色,Database Plus 所展现出的形态各有不同。
面向架构师的数据库计算增强平台
通过 Database Plus 更精细化地适配灵活多变的应用场景,提供微服务后端数据库单元化的最佳方案,在计算增强平台中可尽情发挥设计灵感和创造力,逐个击破架构选型难、运维复杂高以及异构并存和协作等难题。
面向开发者的统一标准接入层
在开发过程中可使用 Database Plus 的 SQL 方言翻译能力,可自动识别协议和存储节点类型,如使用 MySQL 的方言来访问 PostgreSQL 的存储节点,降低开发者的学习和研发成本。
面向 DBA 的分布式数据库解决方案
DBA 可使用最熟悉的技术栈来构建一套分布式数据库解决方案,该方案中 Database Plus 为计算层,数据库为存储层,同时所有的配置变更操作可通过 SQL 方式在 Database Plus 这一层中来完成。
图:Database Plus 的多种形态
提供稳定的基础架构
对于分布式解决方案的需求,DBA 可通过所擅长的技术栈产品进行构建,如 MySQL、PostgreSQL 或其他数据库产品,而无需担忧全新产品所带来的不确定性。
带来灵活的扩展能力
面对架构扩容或是功能扩展需求,如分片扩容或数据加密处理等增强功能,DBA 可在 Database Plus 层完成扩容配置变更。
降低 DBA 学习成本
基于现有数据库产品的生态体系,Database Plus 方案可让 DBA 继续沿用相关运维体系和工具,有效降低 DBA 学习成本。
提供友好的维护体验
Database Plus 以数据库形态呈现给 DBA,DBA 的日常操作都会在 Database Plus 中以 SQL 的形式来完成,具备数据库原生般的操作体验。
在 Database Plus 理念指导下,ShardingSphere 成为了 Database Plus 的最佳实践。
ShardingSphere 起源于互联网分片需求的业务场景,历经数年发展到如今的 Database Plus 实践者,已从一款单一工具演变为数据库领域的新生态。在学习 ShardingSphere 过程中发现了网络上一些不准确的描述,这里用几行文字重新认识下 ShardingSphere。
2016 年开源,2020 年成为 Apache 顶级项目,目前有 17k Stars、400 多位贡献者及近 200 家企业登记在用(截至 2022 年 8 月);
项目由 JDBC 和 Proxy 两款产品组成,ShardingSphere 是项目的名称,Sharding-JDBC 是曾用名;
以数据库协议及 SQL 方式为业务提供数据库增强功能,原生支持 MySQL、PostgreSQL、SQL Server、Oracle 等多种数据存储引擎;
提供了面向分布式、面向数据控制(安全)和流量控制(全链路压测)的解决方案。
通过 ShardingSphere,DBA 可基于指定数据库产品快速构建分布式数据库方案,也可配置如读写分离、数据加密及影子库压测等数据库增强能力,内置 DistSQL 命令为 DBA 运维过程提供更友好的数据库原生体验。
在性能方面,可关注发布在数据库领域顶级会议 ICDE 的论文 “Apache ShardingSphere:A Holistic and Pluggable Platform for Data Sharding”中的数据,Sysbench 的表现如下图所示,性能明显优于其他产品。
图源:Apache ShardingSphere: A Holistic and Pluggable Platform for Data Sharding
随着国际环境的变化,国产数据库的影响力快速扩大,2021 年上半年,ShardingSphere+openGauss 联合打造的分布式数据库解决方案使用 16 台服务器,在超过 1 小时的测试中得到了超过 1000 万 tpmC 的结果,满足了 openGauss 在海量数据场景下关于性能、可用性以及运维成本这三方面的诉求。如有国产化分布式数据库方案的需求,可多加关注。
本篇文章主要说明 Database Plus 理念,因此 ShardingSphere 不展开介绍,更详细的介绍及说明可参考 Apache ShardingSphere 在线文档。
在数据库碎片化时代,Database Plus 理念给我们更多数据库使用方式上的启发,随着 ShardingSphere 在异构数据计算增强平台的持续发力,不久后可能会改变 DBA 的工作方式。
上面是我个人对 Database Plus 理念的理解,下面通过一张脑图回顾本文的内容。
[1] 张亮. 我们在讲的 Database Plus,到底能解决什么样的问题?
[2] 韩锋. 谈谈对 Database Plus 认识与畅想
[4] Apache ShardingSphere:A Holistic and Pluggable Platform for Data Sharding
[5] Apache ShardingSphere. 16 台服务器达成 1000 万 tpmC!挑战分布式数据库性能极限