1.产品概述
1.1 产品分类
目前社保核心业务的国产数据库(OLTP)类型大致分为5个厂家:
(1)蚂蚁集团oceanBase分布式数据库 :完全自研(支持mysql、oracle二种租户类型)
(2)华为云数据库产品GauusDB 分布式:基于开源数据库PostgreSQL+PGXL插件
(3)H3C SeaSQL DRDS分布式数据库:是基于开源MySQL+开源分布式中间件
(4)腾讯云TDSQL T分布式数据库:基于开源MySQL+开源分布式中间件
(5)武汉达梦DM8 集中式传统数据库:完全自研
1.2 产品路线
华为云GaussDB分布式版本:除存储引擎之外,其他全部自主研发。
H3C SeaSQL DRDS DRDS分布式版本:除存储引擎之外,其他全部自主研发。
腾讯云TDSQL T分布式版本:除存储引擎、事务协调器之外,其他全部自主研发。
阿里云oceanBase分布式数据库:完全自研
达梦DM8 集中式数据库:完全自研
产品品牌 | 华为云GaussDB 分布式 | H3C SeaSQL DRDS 分布式 | 腾讯云TDSQL T分布式 | 蚂蚁集团 Oceanbase | 武汉达梦 Dm8 |
计算引擎 | CN (自主研发) | STSQL DRDS Engine (自主研发) | TDSQL Engine (自主研发) | 计算存储一体化(自主研发) | 计算存储一体化(自主研发) |
事务协调引擎 | GTM (自主研发) | 算法模块包含在计算引擎 (自主研发) | Zookeeper (来自开源) | Paxos协议 | |
存储引擎 | OpenGauss (来自开源PostgreSQL) | STSQL DRDS Storage (来自开源MySQL) | TDSQL Storage (来自开源MySQL) | LSM Tree | |
管理平台 | CMS+ETCD (自主研发) | 算法模块包含在计算引擎 (自主研发) | 赤兔平台 (自主研发) | ||
运维平台 | 运维平台含在CMS+ETCD(自主研发) | 可视化管理平台 (自主研发) | 蓝鲸平台 (自主研发) |
2.技术架构
华为云GaussBB分布式:硬件设备数量是5款产品之中消耗资源最大的,大约是5倍的oceanbase、1.7倍STSQL、1.5 倍达梦、1.2倍TDSQL 。
oceanbase:硬件设备数量是4款产品之中消耗资源最小的,比GaussDB节约资源60%及以上、比TDSQL节约资源50%及以上,比H3C SeaSQL DRDS节约45%以上。
产品品牌 | 华为云GaussDB 分布式 | H3C SeaSQL DRDS 分布式 | 腾讯云TDSQL T | Ocanbase部署 | 达梦 |
计算引擎 | CN:数据分片=1:2N 超过64个数据分片:64Core 512GB | 2台服务器起步,推荐3台 48Core、192GB 数据分片数量小于等于1024个 | 3台起步 48Core、192GB 数据分片数量小于等于1024个 | 计算存储一体化(3台起步32C,256内存) | 2台服务器、1台共享存储搭建DSC(类似于oracle RAC ) 服务器配置建议:32C,256内存 |
事务协调引擎 | GTM:1主2备(3台) CPU:60Core MEM:480GB | - (无其需求) | Zookeeper:1主2备(3台) CPU:32Core MEM:128GB | ||
存储引擎 | CPU:48Core起步 MEM:512GB起步 数据分片:3副本起步 | CPU:48Core起步 MEM:512GB起步 数据分片:2副本起步 | CPU:48Core起步 MEM:512GB起步 数据分片:3副本起步 | ||
管理平台 | CMS+ETCD:3台起步 CPU:60Core MEM:480GB | - (无有状态的管理平台) | 赤兔平台:3台起步,配置不详 | ||
运维平台 | (合并在“管理平台中”) | 可视化管理平台:2台, 16Core处理器、96GB内存 | 蓝鲸平台:3台起步,配置不详 |
3.数据正确
华为云GaussDB分布式、腾讯云TDSQL T 都存在无法保障数据正确的技术原理上问题,主要是体现在未包含分片键的主键或唯一索引的全局唯一约束功能失效,无法像集中式关系型数据库给业务系统的数据正确兜底。
H3C SeaSQL DRDS 分布式和OCEANABSE:从技术原理角度上能保证主键或唯一索引的全局唯一约束功能,能实现集中式关系型数据库给业务系统的数据正确兜底。
达梦(DM8):集中式关系型数据库不存在以上问题。
数据正确兜底能力 | 华为云GaussDB 分布式 | H3C SeaSQL DRDS 分布式 | 腾讯云TDSQL T | 蚂蚁集团 OceanBase | 达梦 DM8 |
全局唯一约束 (分片键无关) | 不支持 | 支持 | 不支持 | 支持 | 支持 |
事务一致 | GTM-FREE:不支持 GTM-LITE:支持,性能损耗 | 支持 | 支持 | 支持 | 支持 |
业务主键 | 不支持 要求主键必须包含分片键 | 支持 | 不支持 要求主键必须包含分片键 | 支持 | 支持 |
业务唯一索引 | 不支持 要求主键必须包含分片键 | 支持 | 不支持 要求主键必须包含分片键 | 支持 | 支持 |
说明:
(1) 数据正确:全局唯一约束不支持、要求主键和唯一索引须包含分片键字段,会破坏业务数据的原始正确性。
(2) 分片字段:要求主键或唯一索引须包含分片键字段,会破坏业务数据的原始唯一性。
4.基本功能
华为云GaussDb在涉及存储节点的特征计算或时间类的不确定性函数、国产要求的字符集、全局序列、应用系统逻辑透明、应用系统访问透明等方面存在技术原理的产品缺陷。
基础功能 | 华为云GaussDB 分布式 | H3C SeaSQL DRDS 分布式 | 腾讯云TDSQL T | Oceanbase | 达梦 |
不确定性 函数 | 不支持 (UUID()、NOW()等) | 支持 | 支持 | 支持 | 支持 |
全局序列 | 不支持 | 支持 | 支持 | 支持 | 支持 |
字符集 | 默认UTF8,不支持GB18030 (不支持修改字符集) | 默认UTF8,支持GB18030 (支持修改字符集) | 默认UTF8,支持GB18030 (支持修改字符集) | 支持 | 支持 |
大字段 数据类型 | 不支持 (CLOB、BLOB、RAW等) | 支持 (CLOB、BLOB、RAW等) | 不支持 (CLOB、BLOB、RAW等) | 支持 | 支持 |
DDL语法 | 主键增删:不支持 唯一索引增删:不支持 | 主键增删:支持 唯一索引增删:支持 | 主键增删:不支持 唯一索引增删:不支持 | 支持 | 支持 |
UPDATE语法 | 带LIMIT:不支持 多表关联:不支持 分片键值:不允许更新 | 带LIMIT:无限制 多表关联:无限制 分片键值:无限制 | 带LIMIT:不支持 多表关联:不支持 分片键值:不允许更新 | 支持 | 支持 |
DELETE语法 | 带LIMIT:不支持 多表关联:不支持 分片键值:不允许更新 | 带LIMIT:无限制 多表关联:无限制 分片键值:无限制 | 带LIMIT:不支持 多表关联:不支持 分片键值:不允许更新 | 支持 | |
数据分片弹性伸缩 | 支持 (在线平滑伸缩) | 支持 (在线平滑伸缩) | 不支持 (在线平滑伸缩) | 支持 | 不涉及 |
应用系统逻辑透明 | 对象名称:不透明,区分大小写 字段值:不透明,区分大小写 | 对象名称:透明,不区分大小写 字段值:透明,不区分大小写 | 对象名称: 透明,不区分大小写 字段值: 透明,不区分大小写 | 支持 | 支持 |
分片键值修改操作 | 不支持 (需业务系统先删除、再后插入) | 支持 | 不支持 (需业务系统先删除、再后插入) | 支持 | 支持 |
应用系统访问透明 | 不支持 (业务系统客户端配置多个CN地址) | 支持 | 支持 | 支持 | 支持 |
5.和oracle语法的兼容性
核心功能名称 | 华为云GaussDB 分布式 | H3C SeaSQL DRDS 分布式 | 腾讯云TDSQL T | 蚂蚁集团Oceanbase | 达梦 DM8 |
Oracle数据库的数据类型 | √ | √ | √ | √ | √ |
Oracle数据库的基础函数 | √ | √ | √ | √ | √ |
Oralce数据库的序列功能 | √ | √ | √ | √ | √ |
Oracle数据库的(+)关联查询 | √ | √ | √ | √ | √ |
Oralce数据库的ROWNUM | √ | √ | √ | √ | √ |
Oralce数据库的窗口函数 | √ | √ | √ | √ | √ |
Oralce数据库的递归 | √ | √ | √ | √ | √ |
Oralce数据库的分区 | √ | √ | √ | √ | √ |
Oralce数据库的存储过程 | × | × | × | √ | √ |
Oralce数据库的表对象有关自定义函数 | × | × | × | √ | √ |
Oralce数据库的表对象无关自定义函数 | √ | √ | √ | √ | √ |
Oralce数据库的视图 | √ | √ | √ | √ | √ |
Oralce数据库的触发器 | × | × | × | √ | √ |
Oralce数据库的PL/SQL | × | × | × | √ | √ |
Oracle数据库的MVCC | 在每个数据行上添加一个版本号来实现的 | 事务ID+修改项副本 | 事务ID+修改项副本 | 事务ID+修改项副本 | 事务ID+修改项副本 |




