一款自研国产数据库的产品进化论
作为一款全自研的数据库产品,崖山数据库致力于构建自主可控的全栈数据库产品体系,以满足行业用户多元化的需求。
从第一行代码到完整的数据库产品体系,我们为何选择从 0 到 1 自研数据库?我们经历了哪些关键的产品节点?每个版本的核心定位与价值如何?本文梳理了 YashanDB 产品全自研的迭代与演化脉络,希望借此帮助您更全面的了解 YashanDB。
YashanDB 产品历程回溯
YashanDB 自成立之初就坚定走自主研发的道路。从第一行代码开始构建数据库,不仅保障了技术和服务的自主性、可控性,更是保持技术领先性的战略基石。
迄今为止,YashanDB 已经发布四个企业版本,分别是 V22.1、V22.2、V23.1 以及 V23.2,产品逐步走向完备和成熟。
V22.1 版本:首个 relese 主备版本
基于原创理论体系,拥有全球顶尖技术团队及二十年工程能力的积累条件下,YashanDB 团队在 2022 上半年发布了第一个主备版本。该版本的定位是支撑多种行业场景 PoC,支持特定场景系统上线。经三方机构权威测试,证实 YashanDB 内核代码自主率 100%。兼容上下游信创生态链,与头部厂商进行互认证适配。在该版本中,还具备如下突出特性:
1.进行标准 benchmark TPC-C 模型测试,TpmC 值达到百万以上,并且在同等环境中超过 Oracle 的 20%;
2.实现了主备异常自动切换能力,高可用可达到秒级 RTO,RPO=0;
3.原创理论落地,实现大数据变小,实现有界计算透明加速产品化。
V22.2 版本:首个长期支持版本
YashanDB 团队在 2022 下半年发布了 V22.2 版本,为长期服务版本(LTS),推广大量系统上线。这个版本具备企业级产品化能力,覆盖 OLTP/OLAP/HTAP 交易和分析场景,面向通用行业。在该版本中,还具备如下突出特性:
1.SQL 语法全面兼容 Oracle;
2.大幅度增强安全企业特性,比如三权分立、表空间数据透明加密等;
3.支持向量化执行引擎,分析能力全面增强。
V23.1 版本:完整产品体系
YashanDB 团队在 2023 年 10 月推出了 V23.1 版本,为架构版本,完善了 YashanDB 的产品体系,发布了共享集群、分布式实时数仓、空间数据库三款产品,覆盖更多的业务领域。同时个人版重磅发布,向所有用户和开发者全面开放。在该版本中,还具备如下突出特性:
1.内核能力持续增强,新增自定义类型(UDT)、组合分区、DBlink(跨数据库访问和处理数据)等核心特性;
2.高性价比数仓:具备自适应 Cost 模型、动态内存管理等特性,且在 TPC-H 型测试对比中,性能优于开源数据库 10 倍;
3.支持原生空间数据引擎,兼容主流开源数据库。
V23.2 版本:规模复制
YashanDB 团队在今年 4 月初正式发布 V23.2 LTS 版本,同时配套数据迁移工具、监控运维工具和开发者工具,可以满足支撑各类企业应用,旨在面向金融、央国企和政府等场景,实现多层次全面兼容,具备可规模复制能力。在该版本中,还具备如下突出特性:
1.支持 Oracle 和 MySql 平滑迁移至 YashanDB;
2.线性扩展比,共享集群双节点 TPCC 性能达 312W;
3.自研配套工具,为客户项目保驾护航。
YashanDB 产品体系概览
崖山数据库管理系统提供包含单机/主备、共享集群、分布式实时数仓等系列数据库产品及解决方案,覆盖 OLTP/HTAP/OLAP 交易和分析混合负载场景,全面兼容私有化及云基础设施,为客户提供一站式的企业级融合数据管理解决方案。
目前,YashanDB 具备四个产品形态和三大工具产品,分别是单机/主备、分布式实时数仓、共享集群以及空间数据库,它们是在产品演进中逐渐发布的。同时单机/主备、三大工具产品已全面在官网(download.yashandb.com)开放下载。
YashanDB 数据库
YashanDB 单机/主备
单机/主备为 YashanDB 的第一个发布的产品形态,具备全面的特性,采用先进内核架构,高效地支持众核计算、大内存、新存储介质和网络通信框架,软件层面采用并行和向量引擎、异步并行框架、OCC 动态事务调度算法、Raft 协议、有界理论等技术方案和算法,为多形态的产品架构提供基础能力,从而满足企业级核心应用对高兼容、高性能、高扩展、高可用等全生命周期数据管理诉求。
1.自研存储、事务管理和优化器等内核引擎;
2.具备通用 SQL 能力、PL/SQL 和接口等兼容能力;
3.支持实时异步备库可读、主备弹性扩展和多中心多容灾高可用功能。
YashanDB 分布式数仓
YashanDB 在 V22.2 版本支持分布式形态,持续加强实时数仓的能力,采用全新设计的 MPP 分布式架构。解决大数据计算效率、数据生产即分析、海量数据存储成本及数据孤岛等数据库瓶颈难题(3V:Volumn、Velocity、Variety),为用户提供灵活的传统数仓加速、一站式数据仓库解决方案。
1.最大 32 个 DN 节点;
2.水平弹性扩缩容,可近线性扩展;
3.高效数据压缩,节省存储成本;
4.向量化执行,稀疏索引技术。
YashanDB 共享集群
V23.1 版本推出单库多实例的多活共享集群数据库系统 YashanDB for Cluster(YAC),所有节点之间以强一致性方式实现并发读写,为高端核心业务提供了应用透明的透明多写、高可用、高扩展、高性能的数据库能力。
1.应用透明多写多读,业务无需改造;
2.极致性能,超主流商业数据库 50%;
3.故障自动恢复,应用透明切换;
4.计算节点弹性扩展,实现秒级扩容。
YashanDB 空间数据库
YashanDB 空间数据库支持 ST_GEOMETRY 数据类型,用于存储和访问符合开放地理空间信息联盟(Open Geospatial Consortium,简称 OGC)制定的 SFA SQL 标准的几何对象,提供一系列的数据类型和函数,可以对空间数据进行高效的存储、索引、查询和分析计算,支持空间数据平台引擎和原生空间数据引擎,为用户提供多种空间数据管理的解决方案。
1.兼容 PostGIS 数据类型和函数功能;
2.支持原生空间索引,查询性能优于开源数据库;
3.适配主流空间平台厂商,兼容国产软硬件环境;
4.支持多模数据管理,基于 SQL 的统一跨模计算。
YashanDB 配套工具
崖山运维平台 YCM
YCM 支持对 YashanDB 单机/主备、分布式、共享集群三种形态进行管理,包括监控告警、巡检管理、表空间管理、权限管理、会话管理、备份恢复、锁管理、日志分析、慢 SQL 模块功能。
崖山迁移平台 YMP
YMP 是为 YashanDB 数据库配套提供的数据库迁移产品,支持异构 RDBMS 与 YashanDB 数据库之间进行迁移评估、离线迁移、数据校验的能力。YMP 提供可视化服务,用户只需通过简单的界面操作,即可完成从评估到迁移整个流程的执行与监控,实现低门槛、低成本、高效率的异构数据库迁移实施。
崖山开发平台 YDC
YDC 旨在帮助用户安全、高效的使用崖山数据库。用户可通过 YDC 可视化地管理数据库中的表、视图、函数等数据库对象,并且支持存储过程调试等。
YashanDB 最新版本发布
用户驱动产品革新
YashanDB 团队始终从用户需求和行业场景痛点出发,持续进行产品的推陈出新。在 2024 年发布 V23.2 版本之前,YashanDB 在各个领域已经完成大量的 PoC 和系统上线。YashanDB 团队持续收集客户的建议和诉求进行分析总结,并有计划的落实到对应版本中。
(1)PoC 客户需求分析:如下是部分领域的客户诉求分析结果,需求主要集中在 Oracle 系统包、PLSQL 和功能等类型。
(2)个人用户与生态:推出 V23.1 个人版后,YashanDB 团队持续收集体验者的反馈诉求,其中以易用性偏多,比如 YASQL,大部分 Oracle 使用者习惯了 SQLPLUS 的用法,因此希望 YashanDB 支持 SQLPLUS 相关的使用建议。此外,在实际业务扩展中还遇到了各类生态适配的诉求,比如 CDC 数据同步、开源生态工具兼容 YashanDB 等。具体的需求详见下表:
V23.2 版本关键能力
YashanDB 每个版本的特性规划都是循序渐进的,经过前三个版本在市场上产品不断打磨,YashanDB 在 V23.2 版本的设计目标为客户项目批量复制,在生产系统上推广使用。为了实现这个目标,且结合市场推广中项目诉求,V23.2 版本主要在四个模块下做了大量的新特性增强和优化。
(1)兼容性:为了满足金融、央国企等不同业务场景的客户需求,降低客户迁移成本,YashanDB V23.2 版本做了大量的兼容性特性,在 Oracle 兼容方面,YashanDB 持续增强 PLSQL、功能、SQL 语法、系统包和标准接口能力。另外,为了兼容信创生态,在 23.2 版本还支持了字符集 GB18030,首批获得国家标准 GB18030-2022 最高级别认证。
1.PL/SQL 兼容(BULK COLLECT、FORALL):采用 BULK COLLECT 子句可以将查询结果一次性地加载到集合类型变量中,避免 Cursor 逐条地处理的性能损耗;在 PL/SQL 中可使用 FORALL 子句批量执行语句,简化 PL 代码的编写,同时在 PL/SQL 程序中更新很多行数据的程序的场景下,可以显著提高处理性能。
2.功能、语法兼容(INDEX/TABLESPACE RENAME):当我们希望重新规划表空间和索引名称时,需要将数据迁移到新表空间,然而随着数据量增大所花费的时间越大;重新规划索引名需要先删除后创建,这种方法需要消耗较大的数据库资源和时间。而在支持了在线重命名表空间和索引功能后,只需要秒级就能完成对表空间名和索引名的重新规划。
3.系统包函数(DBMS_LOB、DBMS_ROWID):新增 DBMS_LOB 系统包,提供对大型对象(LOB)数据类型的访问和操作的能力;新增 DBMS_ROWID 系统包及对应子函数,支持通过输入 ROWID 获取的相关信息,比如数据库块号、相对文件号和数据行号等。
4.丰富标准驱动接口(OCI、JDBC):新增 OCI 接口,支持 Zabbix 通过 OCI 接口对 YashanDB 进行操作。
5.支持 GB18030 字符集:为了适配国标和响应推进基础软件国产化,YashanDB 从 V23.2 版本开始,行存执行在服务端和客户端的字符集支持设置 GB18030,按照 GB 18030-2022 标准实现级别为 3。即支持了国家标准所规定的变长多字节字符集,且完全向后兼容 GB 2312-1980,及基本兼容 GBK。
(2)性价比:为了使在数仓场景下高效分析、降本提效。YashanDB 在压缩比、入库性能和查询性能上做持续增强和优化。
1.自适应高压缩率(3-6 倍):新增支持 LZ4 和 ZSTD 两种压缩算法,支持创建表时根据不同的字段数据类型选择不同的压缩编码。实际测试导入 1TB 的 LINEITEM 表数据,压缩比可以达到 1:4.5。同时支持根据数据类型特征自动选择编码,降低了用户的使用难度,节省了数据库的存储成本。
2.增量数据入库性能提升:通过优化降低数据同步任务的内存开销和同步任务流水线优化,使得并发数据同步得到提升,使用 LINEITEM 表模型,单任务同步性能由原来 1MB/s 提升到 8MB/s。
3.缩小部署规模,降低成本(一主一备部署):在 V23.2 版本之前,YashanDB 分布式 DN 组只支持单主和一主多备的部署模式,为了满足业务多样性,同时又可以节省成本,因此,YashanDB 在 V23.2 版本实现了 DN 组一主一备的部署形态。
4.管控资源,合理化使用:支持对用户级别 CPU 资源管理,通过 DBMS_RESOURCE_MANAGER 系统包创建资源组,映射用户资源组关系,及创建资源计划,来实现按照用户管控 CPU 资源。YashanDB 在 MN、CN 和 DN 各类节点上都实现了 CPU 资源隔离。
5.只读外部表加快大数据处理和分析:新增支持只读外部表功能,语法兼容 Oracle 的使用习惯。用户可以指定和链接存储系统上的具体 CSV 文件或者数据目录对象 DIRECTORY 的文件,实现不用导入数据库中就可以像访问普通表一样访问的能力。当涉及大规模数据处理和分析时,外部表可以直接在存储系统上执行查询,避免了数据传输的开销,在数据量巨大的情况下可以显著提高查询性能。
(3)高可靠:对共享集群能力持续加强,提高金融核心等关键场景的业务连续和数据安全能力。
1.支持远程备份恢复,便捷灵活:支持通过 yasrman 远程连接共享集群数据库,在工具侧生成备份集,同时支持将工具侧的备份集恢复到远程数据库。同时共享集群在 V23.2 版本还支持基于时间点的备份恢复能力。
2.FRA 支持数据自动恢复:支持为冗余度为 External 的 DiskGroup 的元数据提供冗余备份。元数据被破坏时,可以从 Fast Recovery Area 数据区获取备份数据并做自动恢复,提升 YFS 元数据的可靠性。
3.按列加解密:支持通过 gs_encrypt_aes128 函数对单列或多列内的字符串数据进行加密和 gs_decrypt_aes128 函数解密数据。
4.并发执行 SQL 内存动态控制:支持计算内存预分配内存配额,分布式部署形态下并发执行 SQL 时,可以有效通过参数控制单个 stage 分配内存配额,防止瞬间申请内存过大导致任务失败。同时,YashanDB 还支持 stage 申请内存排队机制,并且在初次申请失败后具备重试能力,提高了 SQL 在总内存不足时执行失败的容错率。
5.主备支持滚动升级:为了提高业务可用性、缩减升级 YashanDB 时间、简化升级操作流程,YashanDB 在 V23.2 版本中支持了小版本(第 4 位版本号)的滚动升级能力,通过 YashanDB 配套的运维管理工具 yasboot 实现在数据库不停机的情况下,将数据库软件升级到新版本。
6.驱动支持配置多个 IP 或者域名:在实际业务场景中,除了数据库具备高可用能力以外,还需要加上驱动能力一起配合实现的高可用方案才能达到真正的业务高可用。为了支撑广泛的高可用场景,YashanDB 在 V23.2 版本驱动实现了多 IP 配置。在应用端配置 YashanDB 驱动时,比如 JDBC、C 驱动、OCI 等,可以配置多个 IP,包含主备的 IP,当数据库发生主备切换时,驱动配置无需修改,应用可以连接到新的主库上,实现业务快速恢复。
(4)易运维:崖山持续关注着用户使用习惯和反馈的诉求,并且在 V23.2 版本对易用性做了大量的增强,提升人员技能继承和复用的效果。
1.持续新增 AWR 能力:新增支持集群相关报告信息(Global Cache Load Profile、Global Cache Efficiency Percentages 等),提供运行期间各种集群相关的统计数据,用户可以更好的了解共享集群性能表现。
2.收集统计信息增强(定时自动收集和整库、schema 维度收集):分布式部署模式和共享集群部署模式下,也支持了全库、整个 schema 维度的统计信息收集。同时支持通过特定任务自动收集统计信息,实现了每天默认凌晨 2:00 开始收集全库的统计信息,包括统计信息缺失或者统计信息已经失效的对象的收集。
3.全面覆盖可视化运维:实现了分布式可视化运维能力,通过 YashanDB 运维平台(YCM) 运维 YashanDB 分布式数据库,提供分布式的巡检管理、监控告警、备份恢复和慢 SQL 分析等可视化功能,达到了便捷的运维效率目的。
4.丰富 YASQL 界面设置功能:YASQL 支持自定义输出格式和效果,同时支持静默登陆,便于用户脚本批量执行时,减少不必要的信息输出。
5.增加导数工具体验功能:在使用 imp 工具导入数据到数据库中的时候,如目标表已存在数据,支持使用参数 TRUNCATE=Y 清空已存在的表数据后导入新数据。
6.一键式收集操作系统和数据库信息:为了更快定位问题和优化系统,YashanDB 在 V23.2 版本提供一键式收集诊断所需信息,包含操作系统基本信息、操作系统和数据库日志、数据库配置信息和数据库视图等信息,同时打包到指定目录,使我们更快、更准地获取到便于定位定界的相关信息,支撑问题解决和性能优化。
V23.2 版本配套工具升级
为了支撑 YashanDB 在不同业务场景的可规模化复制,节省客户迁移、开发和运维阶段的成本,崖山团队为客户项目提供一站式全生命周期工具体系。在 V23.2 版本中,大幅度提升了各个工具体系的能力,同时还发布自研的开发者平台。
(1)升级崖山运维平台 YCM
1.表空间管理:支持分布式部署模式、共享集群部署模式下的表空间管理,包括查看表空间大小、使用率、数据文件等信息。
2.备份恢复管理增强:新增单机/主备部署模式的 PITR 恢复。
3.短信服务能力:支持自定义推送程序方式,用户通过上传自定义短信推送脚本到平台服务端中,进行站外消息的推送。
4.自身平台权限管理和数据安全增强:支持角色管理功能,平台内置一系列默认角色,供超级管理员去给普通用户自定义分配权限,满足大部分运维场景中对用户权限的限制诉求;支持对平台数据和各个 agent 主机进行定时备份,通过备份恢复数据到某个时间点和备份文件到期清理的功能。
(2)升级崖山迁移平台 YMP
1.支持 MySQL/DM8 数据库离线迁移数据源:新增对 MySQL 5.6/5.7/8.0 版本及 DM8 版本到 YashanDB 的迁移评估、元数据迁移、数据迁移和数据量统计校验能力。
2.支持数据校验:支持多维度进行数据统计校验,快速校验源端、目标端迁移前后数据是否一致。
3.迁移可用性增强:新增失败重试、断点续传、迁移容错等功能,有效提升迁移可用性。
4.易用性优化:优化界面流程,提示语等,帮助用户快速上手,一键实现数据迁移能力。
(3)发布崖山开发平台 YDC
1.图形化对象管理:支持查看 YashanDB 的所有对象属性详情。
2.智能 IDE:支持语法高亮、智能提示和 SQL 语法自动格式化的易用性功能。
3.PL/SQL DUBUG:支持 YashanDB 的 PLSQL 的调试功能。
4.执行记录、日志、结果集显示:可通过执行记录查看执行 SQL 语句详情;通过查看 SQL 执行日志,可以追踪查询的执行情况,查看 SQL 语句执行成功或失败,会显示具体的失败原因;结果集表格化展示,提供符合查询条件的数据结果。
V23.2 个人版全新上线
YashanDB V23.2 版本同步发布个人版,具备最新全量功能特性
YashanDB 产品 Roadmap 及未来规划
YashanDB 企业版本发布节奏是每年发布 2 个大版本,4 月初发布的大版本为长期服务版本,推荐规模化上生产使用;10 月份发布的大版本为架构版本,发布众多特性或者粒度较大特性,每个内核版本都具备相应的配套工具。期间按照市场诉求发布小版本,该版本主要是新增小特性需求和 bug fix。
(1)内核规划
YashanDB 2024 年 10 月份版本的需求已在研发之中,主要的内核关键特性如下:
1.Oracle 兼容性持续增强:Oracle 系统包、PLSQL、和动态视图持续增强;
2.MySQL 兼容:兼容 MySQL 数据库的数据类型、视图、函数、SQL Mode 等功能;
3.AP 能力持续优化:TPC-DS 优化、压缩比增强和最大规模扩大等;
4.Database Flashback:数据库级别闪回;
5.发布 docker 个人版:发布到官网和 Docker Hub;
6.CDC 同步能力:YashanDB 作为数据源的实时同步能力;
7 主备集群:支持主备集群复制、高可用等能力。
明年或者更长期的关键特性规划包含:
1.Oracle/MySQL 兼容增强;
2.提供云化产品形态:公有云和私有云;
3.支持存算分离架构;
4.共享集群 8 节点规格商用。
(2)工具体系
YashanDB 配套工具持续为客户项目提供全方位支撑,对应的关键特性如下:
崖山运维平台 YCM:
1.备份集管理:共享集群支持 PITR、备份支持加解密;
2.运维能力增强:企业微信方式推送告警信息、支持审计日志管理(保存、清理)等;
3.未来进一步支持诊断智能推荐、容量监控与预测邓功能。
崖山迁移平台 YMP:
1.迁移能力增强:易用性、功能全面增强;
2.增量同步:支持多个数据源增量同步到 YashanDB 的解决方案;
3.未来进一步支持更多异构迁移以及性能评估。
崖山开发平台 YDC:
1.图形化对象管理:支持对象的图形化 DDL 能力;
2.数据导出:支持表级数据导出。
评论