南大通用GBase 8s数据库的“一库三模“

从 Oracle 迁移,NUMBER 类型不认识,PL/SQL 包直接报错?

从 MySQL 迁移,SHOW跑不通,AUTO_INCREMENT 不支持?

数据库迁移最头疼的从来不是导数据,而是改 SQL。

GBase 8s 的解法很直接:不用改,切个模式就行。


一、什么是"一库三模"

GBase 8s 在同一套数据库引擎之上,内置了三种 SQL 兼容模式:

|------------|--------|------------------------------|
| 模式 | 定位 | 一句话说明 |
| GBASE | 原生模式 | GBase 8s 的标准语法 |
| Oracle | 兼容模式 | 兼容 Oracle 常用SQL语法,完美兼容PL/SQL |
| MySQL | 兼容模式 | 兼容 MySQL 数据类型与常用语法,迁移几乎零改动 |

三种模式并非三套数据库,而是同一套实例的三种语法面孔。不同应用通过不同模式接入,即可使用各自熟悉的 SQL 。


二、兼容到什么程度

Oracle 兼容

基础功能

常用数据类型(NUMBER、VARCHAR2、CLOB、DATE 、BFILE等)、常用函数及基础数据库对象(堆表、分区表、临时表、视图、物化视图、索引、触发器、序列、同义词、定时任务、系统视图等)。

高级功能

  • PL/SQL 支持:变量类型(%TYPE、%ROWTYPE、记录类型、数组类型、嵌套表、条件与控制语句、游标、包(Package)、动态SQL、自治事务、异常处理等)
  • 高级系统包:兼容DBMS_JOB 、UTL_ENCODE 、UTL_RAW 、DBMS_SCHEDULER、DBMS_RANDOM 等多种高级系统包
  • DBLINK:支持异构数据库访问
  • FLASHBACK:支持闪回查询
  • 集群能力: 共享存储集群SSC,可对标 RAC/ADG

接口与工具

  • 兼容JDBC、ODBC、.NET、Python、Go 等业界标准接口
  • 兼容Oracle OCI、OCCI接口
  • 提供全量迁移与实时增量同步工具

MySQL 兼容

基础功能

常用数据类型(TINYINT、VARBINARY、UNSIGNED、BIT、DATE、DECIMAL等)、常用函数、AUTO_INCREMENT 自增主键、DELIMITER 存储过程分隔符,反引号包围符、视图等。

高级功能

  • ROUTINE:变量声明与赋值、REPEAT、LEAVE、WHILE等控制语句、LABEL标签、游标、触发器、PREPARE动态语句、HANDLER、CONDITION及SIGNAL等异常处理
  • 独特语法:LIMIT子句、REPLACE INTO、INSERT IGNORE、INSERT ... ON DUPLICATE KEY UPDATE、INSERT INTO ... SET、SHOW TABLES/DATABASES等系列查看命令
  • 变量:用户自定义变量

接口与工具

  • 兼容JDBC、ODBC、.NET、Python、Go 等业界标准接口
  • GCI接口全兼容 MySQL C API 头文件,C/C++ 开发者无需修改代码
  • 提供全量迁移与实时增量同步工具
相关推荐
Nturmoils21 分钟前
GROUP BY 先别想当然,查汇总前把规则跑清楚
数据库
最笨的羊羊1 小时前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
fish_xk1 小时前
mysql中的表的约束
数据库·mysql
谢亮_vipxieliang1 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
ggaofeng2 小时前
自己编写邮件服务器和客户端
数据库
java1234_小锋2 小时前
【技术专题】Mysql8 数据库 - Mysql8 添加,更新,删除数据
数据库·mysql
PaperData2 小时前
2015-2024年各省绿色贸易数据
数据库
小羊没烦恼!3 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
麦壳饼3 小时前
深入探讨:SonnetDB 的文件格式与存储布局
数据库·sonnetdb
for_ever_love__4 小时前
Redis 持久化讲透:RDB、AOF 与混合持久化怎么选
java·数据库·redis·持久化·aof·区别·rdb