从中兴、华为等一系列高新科技企业被美国制裁,到俄乌抵触事件暴发后,东方各国相继发表制裁俄罗斯,以 Oracle、IBM、微软、SAP 为代表的科技巨头暂停在俄服务,这一系列动作给咱们敲响了减速国产化代替的警钟。数据库作为提供数据存储与解决能力的根底软件,是信息系统的根底、信息安全的基石,因而,数据库自主可控和国产化代替曾经迫不及待。
兼容性是国产化代替要害,自研数据库更具后劲
Oracle 数据库倒退较早,在国内市场内霸占了肯定先机,企业通过信息化的长期积攒和变革,基于 Oracle 开发了大量的零碎业务。为了可能适配新的国产数据库产品,必须对利用代码进行大量批改,各数据表的数据类型、函数、语法规定须要进行零碎、全面的革新,这就要求新的国产数据库对原有数据库可能有很好的兼容性反对,升高迁徙的代码革新老本。
Oracle 通过多年的倒退,在 SQL 语言、性能、实例状态、容灾计划等方面有很多积攒扩大。若要实现 Oracle 数据库的国产化代替,除了要可能提供在性能、容灾能力、平安能力等方面全方位提供对等的能力,首先要解决的就是如何兼容 Oracle 的大量 SQL 方言,尤其是 Oracle 的 PL/SQL 这一独特的广受欢迎的语法体系。
中国信通院《数据库倒退钻研报告》中示意,“国内关系型数据库产品中少数是基于 MySQL 和 PostgreSQL 二次开发的”。因而,这些产品对 MySQL、PostgreSQL 兼容性较好,但没有体系化的兼容 Oracle,尤其是 PL/SQL 方面。
“高度的商业数据库兼容能力意味着大量的设计和研发工作,波及产品整体架构的多个方面,非常考验厂商对代码的了解和掌控能力”。国家工业信息安全倒退钻研核心、中国电子学会和北京国家金融科技认证核心联结公布的《分布式数据库发展趋势钻研报告》中指出,“齐全自主研发的产品在这方面具备先天的劣势,将来无论在兼容性适配还是产品能力的研发上都更具后劲”。
KunDB 是星环科技自主研发的国产分布式交易型数据库,提供残缺的关系型数据库的能力,高度兼容 MySQL 和 Oracle,可低成本实现数据库国产化的代替和迁徙,具备可扩大、高并发、高可用、数据灾备等个性,满足企业要害业务解决、高并发查问、业务分布式革新、交易剖析混合的数据中台等简单场景,在金融、政务、能源、医疗、交通、教育等多个行业利用,为用户提供高性能、稳固牢靠、经济实用、自主可控的国产化数据库产品。
高度兼容 Oracle,实现低成本国产化平滑代替
KunDB 对 Oracle 语法各个方面高度兼容,成为业内当先的具备撑持 Oracle 业务迁徙能力的国产数据库。KunDB 高度兼容 Oracle 语法与 PL/SQL,反对 VARCHAR2/NVARCHAR2、NUMBER 等全副罕用数据类型,在 PL/SQL 语法上,反对管制语句、汇合、动静 SQL、子程序、预约义包、错误处理等全副 PL/SQL 语法,并且通过自主原创的 PL/SQL 编译器,KunDB 反对简单 PL/SQL 程序,执行性能比解释执行晋升一个数量级,解决了 Oracle 业务迁徙到国产化数据库的外围痛点,为其余兼容性欠缺提供了根底。
在 Oracle 数据库对象、DML、函数、零碎视图、内置包、驱动等方面,KunDB 做到了罕用性能的兼容,满足大部分业务的迁徙需要,极大升高了企业业务迁徙老本。
例如在某省级社保零碎迁徙过程中,KunDB 仅用了 3 天就实现了 8 万多行 PL/SQL 代码的迁徙工作,高效、低成本、平安地保障了原数据库迁徙,平滑实现了数据库系统的国产化代替。
翻新过程语言编译技术,残缺反对 Oracle PL/SQL 语法
KunDB 自研翻新的过程语言编译技术及两头优化语言 TIR,反对简单 PL/SQL 程序,执行性能比解释执行晋升一个数量级。
形象和实现了星环通用两头 PL/SQL 指令集 TIR,为多种代码编译执行形式提供基础表达能力
联合 LLVM 代码生成技术,间接生成 CPU 指令,比 Go 等高级语言运行时生成代码的效率晋升一个数量级
内置 LLVM 优化器,应用最新的编译优化技术,做有效代码、公共表达式、死码、边界查看打消等优化,保障最终执行代码的最简化
自研表达式计算引擎,反对向量化和 JIT 执行,PL/SQL 和 SQL 均可调用,比 Go 语言的通用表达式计算性能晋升 5 倍以上
KunDB 为 PL/SQL 定义了极其精简、通用的 TIR 指令集,其中 6 类指令可用于 PL 的解释,8 条指令可用 PL/SQL 中的游标、游标遍历、动态 SQL、动静 SQL 的解释,这 14 条指令的组合,可笼罩 PL/SQL 语法范畴内所有语法组合的解释。PL/SQL 被解析成形象语法树后,PL 和 SQL 被 TIR 指令集解释成相应的指令汇合。
TIR 指令反对 LLVM 编译器,可生成不同平台的 Native code,即 CPU 指令集减速执行。在 LLVM 的编译过程中,还会主动同步实现局部代码的逻辑优化,比方有效代码的去除。编译生成的执行指令集 KunDB 会保留在元数据中,为雷同 PL/SQL 文本提供可复用的指令集(相似执行打算)。而对于 LLVM 指令集中还不反对的 PL/SQL 指令,会保留为高级语言(Golang)的指令最终交由高级语言编译器编译执行。
所以 KunDB 的 PL/SQL 执行,是将大部分指令映射成 CPU 指令执行的,而且不须要反复编译,相较于每次编译成其它高级语言的形式,有较大的性能劣势。以相似 TPCC 中 NewOrder 解决的 PL/SQL 实现为例,不思考 SQL 执行的状况下,纯 PL 的逻辑的执行,应用 KunDB 的动静编译执行是齐全由高级语言编译执行的 3 倍以上。
另外,PL/SQL 以及惯例 SQL 语法中的表达式计算是影响性能的关键因素之一,也借鉴了动静编译执行的思维,KunDB 设计和实现了基于列存数据和动静执行的表达式引擎,对于数值类型的聚合计算,应用动静编译执行比一般解释执行要快 10 倍以上。
查问优化和向量化执行引擎,高性能简单 SQL 查问
KunDB 基于火山模型的优化器和向量化执行引擎反对了跨分片的查问,反对的 SQL 蕴含递归查问、嵌套子查问、别名等简单 SQL 场景。针对聚合计算类 SQL 中性能耗费较高的表达式计算做了特地优化的表达式模块,逻辑优化能够用该模块进行如常量折叠,公共表达式提取等优化,执行器调用该模块进行表达式的计算。以 TPCH 为例,KunDB 可高效跑完 100GB 规模内的全副 22 个简单查问 SQL。
适配 Oracle 利用生态,保障业务平滑迁徙
KunDB 适配 Oracle 利用开发生态,反对基于 Oracle 的业务间接或者通过中间件框架连贯 KunDB,包含 Java、.NET、C/C++ 等语言开发的利用,尤其是针对 C /C++ 利用提供兼容 Oracle 的 OIC/OCCI 驱动,来保障业务的平滑迁徙。KunDB 还提供了凋谢的数据生态,通过全局事务日志可与异构零碎实时同步,可利用在实时数仓建设、Oracle 和 KunDB 双数据库系统并轨运行回切等场景。
以某大型医疗 HIS 零碎适配为例,应用的.NET EFCore 开发框架与星环科技 KunDB 连贯,通过高兼容性和迁徙服务保障了多个外围业务零碎的平滑迁徙,业务全量功能测试中个别的外围数据库源零碎数据类型、语法兼容问题仅通过大量调整便能达成利用适配,在节俭大量人力老本的同时,保障了数据库无损切割,实现了疾速、平安地替换 Oracle 的指标。
星环科技分布式交易型数据库 KunDB 自主研发,并以优异的问题通过了工信部、央行、信通院等多项数据库权威测试认证,为用户提供高并发、高性能、高牢靠的国产数据库产品。同时,KunDB 高度兼容 Oracle PL/SQL 和 MySQL 方言,可实现低成本数据库国产化代替,并且适配反对国产服务器、芯片、操作系统等软硬件生态,助力企业打造自主可控数据平台。