Visitar URL original
[Feature] 询问:关于适配国产金仓数据库(KingbaseES)的可行性与合并意向 · Issue #855 · APIJSON/APIJSON · GitHub
Skip to content

[Feature] 询问:关于适配国产金仓数据库(KingbaseES)的可行性与合并意向 #855

Description

@fuziran

Description

维护者您好,
我计划在未来 2 个月内,为 APIJSON 贡献一个支持国产金仓数据库(KingbaseES)的版本。
经过初步调研,金仓数据库在底层对 MySQL/PostgreSQL 的 JSON 语法(如 JSON_EXTRACT、-> 操作符)及事务隔离级别有极高的兼容性,这为 APIJSON 的低成本适配提供了基础。
为了确保代码质量和框架稳定性,我承诺遵循以下开发标准:
零侵入设计:通过继承扩展 SQLConfig 或新增 KingbaseSQLConfig / KingbaseSQLExecutor 的方式实现,绝不修改现有核心逻辑,确保不影响 MySQL/PostgreSQL 等现有功能的稳定性。
完备的测试覆盖:我会参考 TestRecord.java 编写针对性的集成测试,并重点验证在 Kingbase 环境下的 JSON 查询、分页逻辑及复杂事务场景。
规范交付:严格遵循项目的 Git 分支管理规范,提交前会完成 mvn clean package 构建检查,并同步更新 Document.md 中关于数据库方言的文档。
目前我已着手进行初步验证,预计 2 个月内提交 Pull Request。请问社区是否接受此类国产数据库的适配?如果有任何特定的架构要求或建议,请随时告知。

Activity

  1. TommyLemon commented on Apr 26, 2026

    @TommyLemon
    Member

    @fuziran 你好,感谢贡献意愿,从来都没限制国内还是国外数据库,
    对于兼容 SQL 语法的数据库/湖/仓/引擎,基本上只需要加个数据库类型及相关判断就可以使用大部分基础功能了,
    少数特定语法或 SQL 函数需要加些代码来支持,
    之前的新增 KingBase, OpenGauss, Dameng 等大部分 MySQL/PostgreSQL/Oracle 外的其它数据库就是这样做的,工作量主要集中在部署数据库和测试功能上。

    31e8d72

    86fd75a

    9b9086a

    支持 KingbaseES 跑起来一个 Demo 项目后,可以直接用 APIAuto 上的测试用例跑下看看,大部分基础功能能通过就可以提 PR 了,谢谢
    https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server

  2. fuziran commented on Jul 29, 2026

    @fuziran
    ContributorAuthor

    @TommyLemon 您好,感谢您之前对 KingbaseES 适配方案的回复和建议。

    目前 APIJSONORM 对 KingbaseES MySQL、Oracle、SQL Server 三种兼容模式的基础适配已经完成,并已提交 Draft Pull Request:

    当前已完成三种模式的 SQL 方言、JDBC 参数绑定、结果类型映射和相关单元测试适配;三种模式的直接 JDBC Smoke Test 及数据类型矩阵也已通过。

    APIJSON HTTP 接口级回归、复杂 SQL 场景以及现有数据库兼容性验证仍在进行中,因此目前保持 Draft 状态,暂不建议合并。

    欢迎您方便时提前对整体设计、数据库标识和 JDBC 适配方案提出建议。待回归测试和文档完善后,我会再将 PR 更新为 Ready for review。

    再次感谢!

  3. TommyLemon commented on Aug 9, 2026

    @TommyLemon
    Member
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions