正文
适配国产数据库存在的一些风险点
背景
这段时间新产品研发费时费力.
自己这边也挺累和辛苦的.
想着总结一下最近一些数据库适配时的问题.
作为一个对自己耗费时间和精力的一个交代
适配国产数据库时的风险-OLTP
1. 达梦数据库
达梦是国内最大的国产数据库厂商, 公司总部在武汉, 背靠中国电子.
达梦数据库的是自主研发的闭源的一套数据库系统.
他的语法与Oracle比较类似.
但是他的达梦8.1 自从2019年发布. 到在线一直是这个大版本号
1.1 达梦8.1自己的驱动和达梦的版本经常有互不兼容的情况.
1.2 达梦有主从读写分离机制.也是基于dm_svc.ini 进行服务暴露
但是这一块需要使用驱动进行验证. 如果是最高数据防护,性能衰退很大
1.3 达梦的字符集有utf8和gb18030, utf8的字符占用与oracle比较类似,
gb18030 是 2个字节一个汉字
1.4 达梦有一个PK_WITH_CLUSTER的参数, 如果使用了聚集索引, 那么不允许修改聚集所以内的字段的字段类型.
1.5 达梦有一个8.2的版本, 使用rpm包进行安装. 用于特殊场景, 具体的支持情况需要看小版本号
select id_code(); 注意这个版本是进行了三员管理 sysdba syssso sysaudit 三个用户
2. 神通数据库
神通数据库是中国航天旗下的神舟软件上市公司下的神舟通用数据库. 是十大军工旗下.
神通数据库的版本主要是7.0 系列.
我们这边适配的是 7.0.8.346.xx版本号.
神通的版本号也停留在 7.0.8 很久了. 后面第一位像是大的分支.
2.1 神通数据库的SQL解析应该类似于PG. 也是基于PG内核做的研发.
2.2 神通数据库的全局临时表比Oracl差异比较大. 需要使用其他方式来进行调优.
2.3 神通对大量的SQL解析执行性能不好. 比如大量的delete,或者是大量的select 性能都不好.
2.4 神通对数据库的元数据管理能力偏弱, 如果数据库表数量巨多的情况下SQL性能会明显下降.
2.5 神通有自己的读写分离. 但是稳定性还不是很好.
2.6 神通要看自己具体的数据库版本, 不同的版本号,比如346 下面的位数. 问题可能不一样.
3. 人大金仓数据库
人大金仓数据库主要是有V8R3以及V8R6两种数据库.
V8R3已经停止销售了. 主流版本是V8R6
3.1 人大金仓的V8R6后面的小版本号需要理清楚,比如最早的V008R006C003B00x
这个版本安装都会报错, 至少要使用: V008R006C007B0012 这个版本.
3.2 人大金仓的SQL解析引擎应该模仿的PG数据库.
3.3 需要注意,与达梦一样.人大金仓还有一个 V8R7的版本,主要用于特殊用途的服务器上面.
4. 瀚高数据库
瀚高数据库最早是浪潮集团离职的同事创建的公司, 最近又被集团增资控股.
瀚高数据库是基于PG数据库进行研发的.
4.1 瀚高数据库有企业版和保密版. 企业版的版本是6.0.x 保密版 4.3.4.3 以及4.5.6(8)
4.2 瀚高上一个版本你主要是基于PG12.5左右的版本尽心深度定制开发. 最新的战神或者是ivoryDB
是基于PG14.5进行深度定制开发.
4.3 瀚高数据库为了稳定和安全做了很多开发, 很多设置会导致机器的执行DDL,DML的语句性能下降.
4.4 瀚高有自己一套独立的安装文件, contrb等包还有ossp-uuid的安装可能要找原厂确认,是否包含.
5. 开源数据库
5.1 安装部署较为复杂.
5.2 数据库会有一些特有的限制:
Mysql系列继承了对列的长度 8126和64k/字符集 的限制
OceanBase 因为是分布式数据库, 对单instance实例下面的 对象(表)数量有更加严苛的限制.
5.3 产品内有很复杂的SQL. 还有类似于存储过程, 物化视图等的处理.
很多开源数据库对这一块的支持不好,性能衰退明显.