兼容性再提升,效率再加速:KES Oracle兼容版强势升级!

99 阅读8分钟

KES是打造融合了AI技术的新一代“融合数据库” 产品,实现全行业、全场景、各种主流品类数据库平替来完成数据库统型工作,大幅降低用户的采购、迁移、开发、运维的总成本。

KingbaseES(简称KES)是面向全行业、全客户关键应用的企业级大型通用融合数据库产品,适用于事务处理类应用、数据分析类应用、海量时序数据采集检索类应用、要求苛刻的互联网应用等场景;可用作管理信息系统、业务及生产系统、决策支持系统、多维数据分析系统、运行日志管理系统、全文检索系统、地理信息系统、时序数据处理相关系统的承载数据库。 KES采用融合数据库架构,通过多语法体系一体化架构实现一套软件兼容Oracle、MySQL、SQL Server、PostgreSQL等多个异构数据库的语法; 采用多模数据一体化存储,支持对关系模型、文档模型、全文本、GIS数据、时序等数据的统一存储、混合访问、模型间转换; 采用集中分布一体化架构,满足不同级别的可用性,为客户提供不同级别的可用性、性能扩展、成本需求,确保业务连续,最大化投资价值。

近日,KingbaseES V009R002C012 版本正式发布!

作为数据库领域自主创新的重要力量,金仓数据库始终聚焦各行业数字化转型需求,持续深耕兼容性与性能优化。近日,KingbaseES V009R002C012 版本正式发布!该版本在产品原有能力基础上,进一步强化对 Oracle 的兼容能力,覆盖 SQL、PLSQL、客户端接口等多维度,并在性能、功能等核心特性上持续优化,为用户带来更平滑的迁移体验与更稳定高效的数据库服务。

下面博主来介绍一下该版本在产品原有能力基础上,进一步强化对 Oracle 的兼容能力

一、SQL

针对 Oracle 模式下的数据类型、函数、语句等核心场景,本次版本实现多项兼容能力增强:

(1)集合数据类型 ANYDATASET 的新增与应用

新增集合数据类型 ANYDATASET,支持存储不同数据类型的动态集合,并扩展其成员函数与过程,轻松应对异构数据处理;

(2)优化字符串拼接函数 CONCAT

优化字符串拼接函数 CONCAT,支持任意数量参数输入,拼接操作更灵活;

(3)增强日期时间处理能力

增强日期时间处理能力,新增 TIMESTAMPADD 等计算函数,TO_TIMESTAMP 函数支持多格式符转换,满足复杂时间场景需求;

(4)兼容 Oracle 高版本 LISTAGG 函数用法

兼容 Oracle 高版本 LISTAGG 函数用法,支持 WITH GROUP 子句可选,适配更多业务逻辑;

(5)系统视图兼容性增强

新增兼容Oracle系统视图VVERSIONVVERSION、VSESSION、V$LOCKED_OBJECT、ALL_PART_INDEXES 、DBA__PART_INDEXES 、USER_PART_INDEXES等,进一步简化迁移难度;

二、PSQL

(1)支持用 NEW 初始化嵌套表和可变数组

支持用 NEW 初始化嵌套表和可变数组,兼容 Oracle 集合变量初始化方式;

在 Oracle 中,嵌套表和可变数组作为集合数据类型,通常使用 NEW 关键字进行初始化。金仓数据库 V9 对这一语法进行了全面支持,使得在迁移过程中,用户可以继续使用熟悉的初始化方式,而无需修改大量现有代码。这一改进不仅提高了迁移效率,还帮助开发人员减少了复杂的数据结构初始化操作。

-- Oracle 中的集合变量初始化
DECLARE
  TYPE emp_table_type IS TABLE OF employees%ROWTYPE;
  emp_table emp_table_type;
BEGIN
  -- 使用 NEW 初始化嵌套表
  emp_table := NEW emp_table_type();
  -- 添加数据
  emp_table.extend;
  emp_table(1).employee_id := 101;
  emp_table(1).employee_name := 'John Doe';
END;

通过该功能,开发人员在迁移 Oracle 数据库时,能够直接使用 Oracle 中的集合变量初始化方式,避免了不必要的代码修改和重构。

(2)自动识别 %ROWTYPE 参数匹配

调用存储过程时,自动识别不同表记录类型参数(% ROWTYPE)的匹配,减少代码调整成本;

Oracle 中的 %ROWTYPE 是一种便捷的数据类型,用于声明和操作表的记录类型。当在 PLSQL 中调用存储过程时,通常需要传入表的记录类型参数,金仓数据库 V9 自动识别这些记录类型参数的匹配关系,减少了开发人员在迁移过程中对存储过程代码的调整。

在 V9 中,数据库会根据存储过程签名自动推断传入参数的正确类型,无需开发人员显式地进行数据类型转换,极大地简化了代码和数据库迁移的复杂度。

示例:

-- Oracle 存储过程示例,使用 %ROWTYPE 参数
CREATE OR REPLACE PROCEDURE update_employee_info(
    p_employee employees%ROWTYPE)
IS
BEGIN
  UPDATE employees
  SET employee_name = p_employee.employee_name,
      department_id = p_employee.department_id
  WHERE employee_id = p_employee.employee_id;
END;
(3)简化确定性函数定义

简化确定性函数定义,仅需在包头声明 DETERMINISTIC 关键字,无需重复在包体中声明;

在 Oracle 中,定义一个确定性(deterministic)函数时,通常需要在包头和包体中都声明 DETERMINISTIC 关键字。而在金仓数据库 V9 中,只需在包头进行一次声明,无需在包体中重复声明。这一优化不仅提高了代码的简洁性,还减少了开发人员的维护负担。

-- 在金仓数据库 V9 中简化确定性函数定义
CREATE OR REPLACE PACKAGE my_package IS
  FUNCTION calculate_salary(p_employee_id IN NUMBER) RETURN NUMBER DETERMINISTIC;
END my_package;

CREATE OR REPLACE PACKAGE BODY my_package IS
  FUNCTION calculate_salary(p_employee_id IN NUMBER) RETURN NUMBER IS
    v_salary NUMBER;
  BEGIN
    -- 计算薪资的逻辑
    SELECT salary INTO v_salary
    FROM employees
    WHERE employee_id = p_employee_id;
    RETURN v_salary;
  END calculate_salary;
END my_package;
(4)支持通过 PARALLEL_ENABLE 子句声明函数并发属性

支持通过 PARALLEL_ENABLE 子句声明函数并发属性,助力函数在多进程中安全调用,释放并行计算潜力;

为了充分利用现代多核处理器的计算能力,金仓数据库 V9 引入了 PARALLEL_ENABLE 子句,允许开发人员声明函数的并发执行属性。

三、客户端接口:多框架适配,开发更灵活

针对 JDBC、OCI、OCCI、Pro*C、NDP 等接口全面优化,降低应用适配难度:

JDBC 接口兼容 Oracle 参数定义模式,支持 IN/OUT 与 INOUT 模式灵活适配,提升存储过程调用稳定性;

OCI/OCCI 接口优化错误码与信息返回,支持按参数顺序号批量绑定同名参数,简化代码开发;

OCI/OCCI 接口经过优化,改善了错误码与错误信息的返回机制,使得开发人员能够更精准地定位和处理数据库操作中的错误。这一优化不仅提升了调试效率,还能帮助开发者更快速地响应和解决问题。此外,OCI/OCCI 还支持按参数顺序号批量绑定同名参数,简化了代码的开发过程。

Pro*C 接口新增列元信息获取、多行数据批量获取等能力,提升 BLOB/CLOB 等复杂类型处理效率;

Pro*C 接口的增强为开发者提供了新的功能,包括列元信息的获取以及多行数据的批量获取。这使得开发人员能够更加高效地处理 BLOB/CLOB 等复杂数据类型,尤其在处理大数据量或大对象时,这些增强功能显著提高了系统的性能和响应速度。

NDP 接口支持跨类型插入、批量 DML 操作,扩展数据适配场景,同时新增存储过程、触发器创建功能,兼容更全面。

四、性能与安全能力增强,保障业务稳定运行

  • 内核性能优化:支持聚合算子预排序、用户自定义函数并行执行,减少计算成本;优化统计视图,提升 SQL 调优效率;配置统计模块缓冲区,增强 DB TIME 模型准确性。
  • 并行计算优化: 优化DML并行处理,可将INSERT、DELETE、UPDATE、MERGE等DML操作拆分为并行任务,显着提升并发性能。
  • DB-LINK能力提升:支持使用DBLINK调用远程Oracle数据库的函数和存储过程,增强跨库访问能力,显着提升数据灵活性与处理效率。
  • 安全强化:提供用户级权限隔离,限制非授权对象访问,从源头降低数据泄露风险。

五、总结

目前,KingbaseES 已在金融、能源、电信、医疗、政务、制造业等多个行业实现广泛深度应用,凭借卓越的兼容性与稳定性,成为 Oracle 迁移的优选方案。本次 KES Oracle兼容新版本的发布,进一步提升Oracle的平替能力,为用户提供“低难度、低成本、低风险” 平滑迁移体验。

未来,金仓数据库将持续深耕自主创新,聚焦兼容性深化与性能突破,致力于打造更安全、更高效、更易用的数据库产品,为企业数字化转型注入强劲动力。