特性介绍
标准SQL支持
支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。
数据库存储管理功能
支持表空间,可以把不同表规划到不同的存储位置;企业版支持Ustore、Astore、MOT等多种存储引擎。
提供主备双机
事务支持ACID特性、单节点故障恢复、双机数据同步、双机故障切换等;企业版还提供了CM工具,支持数据库实例状态查询、主备切换、日志管理、集群状态查询和推送等。
资源池化
支持基于共享存储、共享内存的资源池化架构,实现备机读实时一致性。
应用程序接口
支持标准JDBC 4.0特性、ODBC 3.5特性,支持Python、Go连接驱动。
管理工具
提供安装部署工具、实例启停工具、备份恢复工具、扩缩容工具、升级工具,支持数据全生命周期生产工具DataKit,支持MySQL全量/增量/反向迁移工具和数据校验工具。
安全管理
支持SSL安全网络连接、用户权限管理、密码管理、安全审计、细粒度ANY权限控制等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。
AI智能化
企业版支持参数自调优、慢SQL发现、单query索引推荐、虚拟索引、workload索引推荐、数据库指标采集、预测与异常监控等功能;库内AI原生引擎支持10+高性能机器学习算法。
新增特性
此处说明的是openGauss 5.0.0版本,在3.1.0版本功能的基础上,新增如下特性:
高性能:基础算子性能提升
扫描算子、聚集算子性能优化,实现TPC-H 100G数据量场景端到端性能提升37%.
- Parser优化:优化Parser中关键字的搜索方法;
- 表达式及算子优化:表达式框架展平及算子性能优化;
- Inner Unique优化;
- 谓词优化:通过谓词等价推理,获得新的下推谓词;
- 扫描算子优化:对索引扫描、全表扫描算子做优化;
- 聚集算子优化:对聚集算子做性能优化。
高安全:用户级别审计
- 支持用户级别审计:新增GUC参数full_audit_users设置被审计用户列表,对列表中的用户执行的所有SQL语句记录审计日志。可以设置对管理员操作进行全量审计,做到对管理员访问用户数据进行审计;
- 支持按客户端信息配置审计开关:新增GUC参数no_audit_client配置无需记录审计的客户端列表,对指定的客户端APP及IP不记录审计日志;
- 支持对风险较高的系统函数调用记录审计日志:对风险较高的系统函数调用记录审计日志,支持记录审计的系统函数列表需在资料中明确。
高可用:CM支持VIP管理
- 通过VIP可以直接找到主机,连接重连更准更快(毫秒级别);
- 支持主机故障,CM选出新主时,VIP漂移到新的主上;
- 当出现双主时,依然可以通过VIP访问到唯一一个主机,降低了双主丢数据的风险。
高可用:CM支持两节点部署
- 通过引入第三方网关IP,有效解决CM集群两节点部署模式下自仲裁问题,支持CMS和DN均为2节点的部署;
- 同时支持动态配置CM集群故障切换策略和数据库集群脑裂故障恢复策略,从而能够尽可能确保集群数据的完整性和一致性。
高可用:CM磁盘只读检测能力增强
- 只读状态从数据库获取,保证准确性;
- 只读仲裁只仲裁当前超过阈值的实例,其他节点不受影响;
- 主机只读保护后自动主备切换,选可用备机升主保证集群能正常提供工作。
高可用:CM易用性提升
- 支持一键式关闭CM集群服务;
- 支持和内核的安装部署解耦;
- 支持按事件调用用户自定义脚本;
- 支持CM组件单独升级,增强数据库集群可靠性;
- CM根据配置信息,支持用户自定义组件的监控和管理。
高智能:异常检测支持自配置
- 为适应用户实际场景和避免资源占用,DBMind支持系统、数据库、日志层面上的异常检测自配置,用户可以在运行前或运行过程中实时增加、暂停或删除相应的异常检测项,其中异常检测项支持复合不同的异常检测算法,异常检测会根据不同的异常检测器的结果取交集,这样为适配用户具体使用场景提供了支持。
企业级特性:事件触发器
- 支持捕获当前数据库下的ddl操作以及ddl操作的目标对象,并做相应处理;
- 支持捕获的DDL事件有ddl_command_start、ddl_command_end、sql_drop、table_rewrite四类。
企业级特性:基于存储池化、内存池化和计算池化实现openGauss资源池化架构(Beta特性)
- 存储池化支持企业高端存储、分布式存储等多种存储形态,实现一份数据服务多种计算,存储利用率提升50%以上;
- 内存池化实现计算节点间内存的互联,通过同步事务信息和数据库缓存,实现多节点下的多版本快照一致性读能力,并结合RoCE硬件RDMA加速,实现极致的跨节点低时延高吞吐通信;
- 计算池化支持多样化算力,通过shardingSphere构建openGauss分布式计算能力,实现32节点>2100W tpmC;
- 在集群管理上,基于双重心跳检测、共享盘仲裁、IO Fencing等技术实现集群节点故障自动检测、恢复和隔离,为资源池化提供一个高可靠的运行环境。
应用开发接口:JDBC能力增强
- 支持集群状态变化时触发快速负载均衡;
- 支持开启心跳线程定时维护主节点心跳,在主节点故障后快速kill旧连接、对新连接连到新主上
中间件:shardingSphere支持多种模式读写分离,支持跨库查询
- 支持事务内语句的读写分离能力;
- 支持聚集算子计算能力,实现数据库跨分片表关联查询功能。
中间件:openGauss+shardingSphere 32节点组网性能>2100W tpmC
- shardingSphere后端采用异步JDBC降低连接消耗、openGauss采用资源池化架构提高单分片能力,使用32个鲲鹏920(128核)节点组网(1*shardingsphere-proxy ,11*shardingsphere-jdbc,20*openGauss)时,完美sharding性能>2100万tpmc。
工具链:数据全生命周期生产工具DataKit
- DataKit定位为openGauss的数据全生命周期生产力工具,支持数据全生命管理,覆盖openGauss部署、迁移、开发、运维等阶段;
- DataKit是openGauss的一个工具集,采用B/S软件架构,提供基础的服务器、数据库实例等软硬件资源管理能力;
- 同时支持通过按需部署功能插件扩展能力,目前社区提供安装部署、数据迁移、数据开发、智能运维等功能插件;
- DataKi也是一个工具开发平台,支持用户根据插件接口和规范实现自己的特有功能。功能插件支持动态加载到DataKit上运行,也支持从DataKit上动态卸载。插件支持调用平台和其他插件的开放接口获取相应数据和功能,以实现快速构建特色功能。
工具链:MySQL一站式迁移工具gs_rep_portal
- gs_rep_portal支持对接debezium+kafka和gs_mysync,集成全量迁移、增量迁移、数据校验能力,实现全量迁移、增量迁移、反向迁移、数据校验完整方案打通;
- 支持并行迁移任务流创建,支持用户设定自定义迁移计划,任务根据用户设定的执行计划顺序的自动执行迁移的每个步骤;
- 支持迁移进度展示(总量、剩余量、剩余时间、复制时延等),支持迁移失败语句的展示。
工具链:MySQL全量迁移工具gs_mysync
- 全量迁移工具gs_mysync(原chameleon),新增进度展示功能、可调试增强,全量迁移性能大于300M/s,即1T/h。
工具链:MySQL增量迁移和反向迁移工具gs_replicate
- 增量迁移和反向迁移收编到Dezebium+kafka,对外统一到gs_replicate工具中,增量迁移性能大于3W tps。
工具链:基于默克尔树的数据校验工具gs_datacheck
- 数据校验性能达到70MB/s;
- 支持行级、列级、表级数据校验;
- 支持对全量迁移导出的数据做直接读取校验。
兼容性:兼容MySQL包括数据类型、操作符、系统函数、DDL、DML、DCL、PL/SQL等在内的绝大部分常用语法,实现应用近似零修改迁移
5.0.0版本新增对以下语法点的支持(只列举部分典型语法,详情请参见《数据迁移指南》中“MySQL兼容性说明”章节):
数据类型:
(1)支持XML类型; (2)支持binary数据类型及运算符; (3)支持bool类型的输出统一转为tinyint; (4)tinyint支持有符号和无符号;
系统函数:ADDDATE()、ADDTIME()、CONVERT_TZ()、CURDATE()、DATE_ADD() 、DATE_FORMAT()、DATE_SUB()、DATEDIFF() 、DAY()、DAYNAME()、EXTRACT()、FROM_DAYS()、FROM_UNIXTIME()、GET_FORMAT()、LAST_DAY 、LOCALTIME(), LOCALTIME、LOCALTIMESTAMP, LOCALTIMESTAMP()、MAKEDATE() 、MAKETIME()、MONTH()、MONTHNAME()、NOW() 、JSON_ARRAY()、JSON_OBJECT()、JSON_QUOTE()、JSON_CONTAINS()、JSON_CONTAINS_PATH()、JSON_EXTRACT()、JSON_UNQUOTE()、JSON_KEYS()、JSON_SEARCH()、JSON_APPEND()、JSON_ARRAY_APPEND()、JSON_ARRAY_INSERT()、JSON_INSERT()、JSON_MERGE()、JSON_MERGE_PATCH()、DATABASE()、ROW_COUNT()、ANY_VALUE()
DDL:
(1)支持schema级、表级、列级设置和修改默认字符集和排序规则,支持对表的字符集进行转换; (2)支持在表第一列前面或者在指定列后面添加列; (3)实现对列名称和列定义修改语法的兼容; (4)支持ALTER TABLE tablename ADD CONSTRAINT UNIQUE INDEX|KEY 语法; (5)支持create/alter/drop database在指定了字符集时统一转为create/alter/drop schema; (6)支持隐藏索引,设置索引可见性; (7)支持建表语句中不常见选项的兼容,如checksum、max_rows等; (8)支持create table select方式建表时指定字段; (9)支持字段大小写敏感; (10)支持dual表; (11)支持authid作为列名;
DML:
(1)支持INSERT时可以指定列的别名; (2)支持对select into语法的兼容,实现select into后面带OUTFILE、DUMPFILE和变量; (3)支持LOAD DATA语句导入表数据; (4)支持union查询关联不同类型的字段; (5)distinct支持order by带表达式; (6)外键可关联非唯一索引; (7)select支持force关键字强制走索引; (8)select语句支持用户自定义变量设置; (9)视图支持插入、删除和更新; (10)insert支持set后面的表达式右值带字段名; (11)指定多个分区查询数据; (12)支持default函数用于SQL语句;
DCL:
(1)支持set transaction的语法树,能设置会话级别和全局的隔离级别和可读/可写; (2)支持事件调度器,支持按时间间隔定期执行设定好的语句,支持创建、修改、删除event操作,支持show events; (3)支持Lock table/unlock table; (4)支持show status、show table status、show privileges、show warning和show errors; (5)create user支持IF NOT EXISTS选项; (6)支持 ‘user’@’host’ 形式指定用户;
PL/SQL:
(1)支持WHILE循环带标签; (2)支持CASE WHEN condition控制语法; (3)支持IF_THEN控制语法; (4)支持cursor相关语法; (5)存储过程condition处理; (6)drop trigger支持不指定表名的级联删除; (7)支持DO statement语法; (8)存储过程支持REPEAT; (9)支持create procedure select语法; (10)存储过程支持RETURN; (11)支持create function前面不加as begin,末尾不加end; language plpgsql; (12)create trigger支持末尾不加”/“; (13)支持declare handler、continue handler、exit handler;
其他语法兼容:
(1)支持用户自定义变量保存select语句的结果; (2)支持utf8_general_ci、utf8_bin、utf8_unicode_ci、utf8mb4_general_ci、utf8mb4_bin、utf8mb4_unicode_ci、binary七个字符序; (3)支持utf8mb4字符集; (4)支持操作符行为和MySQL一致; (5)支持双引号表示字符串。