logo
GBase 8c
其他
文章

南大通用GBase 8c分布式数据库兼容性解析

GBase用户137
发表于2024-11-14 17:28:00284次浏览0个评论

GBase 8c是一款高性能的关系型数据库管理系统,通过多方面的设计优化,实现了对多种主流数据库的高度兼容性,包含oracle、mysql、postgres等主流数据库产品,为用户提供了灵活的数据处理解决方案,能够在数据库迁移、数据集成和跨平台使用等过程中减少转换成本,提升效率。本文旨在详细介绍GBase 8c数据库的兼容性特性,帮助用户理解和充分利用GBase 8c在数据库迁移、集成及多源数据处理方面的优势。

1、兼容模式数据库创建

GBase 8c 支持标准 SQL 语法,包括数据定义语言(DDL)和数据操作语言(DML)。创建不同模式兼容库的语法格式为:

create database db_name with dbcompatibility ‘兼容模式’;

兼容性模式是设置指定数据库系统应该模拟的语法和行为。这些设置在数据库创建时使用 DBCOMPATIBILITY 参数定义,并确定默认行为和 SQL 语句支持兼容模式选项:

'A' - 兼容 Oracle。

'B' - 兼容 MySQL。

'C' - 兼容 TD。

'PG' - 兼容 PostgreSQL。

2、数据兼容性

2.1、数据类型兼容

GBase 8c兼容各种数据库类型。例如,创建一个具有常见数据类型的表datatypes:

create table datatypes
(
 nint integer,
 nbytea bit(6),
 nvarch varchar(10),
 nbit bit varying,
 nch char(10),
 ndate date,
 ntime time,
 ntimestamp timestamp,
 nbool boolean,
 nby bytea,
 njson json
);

2.2、操作符兼容

GBase 8c数据库兼容算数运算符(+-*/)、字符串链接(contact)、逻辑运算与比较符(与或非)、in、exists等常用操作符。sql示例:

select i+b as add, i-b as sub, i*b as mul, (b/i)::real as div from test_art_operation;

返回如下信息:

select concat('abcd','efgh','hijk') as result;

返回如下信息:

SELECT * FROM COMPANY WHERE SALARY <> 20000;
SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 6500; 
SELECT * FROM COMPANY WHERE SALARY IS NOT NULL;

返回如下信息:

3、oracle函数兼容

兼容常规oracle函数,例如:AVG、COUNT、LISTAGG、MAX、MIN、STDDEV、SUM、VARIANCE、WM_CONCAT|STRING_AGG等函数。示例如下:

支持数据库窗口函数使用。如PARTITION BY、ORDER BY、UNBOUNDED PRECEDING、UNBOUNDED FOLLOWIN G、NULLS FIRST、NULLS LAST、ROWS等;

例:

select * from test_o order by id2 nulls first;
select * from test_o order by id2 nulls last;
select mgr_id,sum(salary) mgr_salary,sum(mgr_salary) over (order by mgr_id rows between unbounded preceding and unbounded following) from emp group by mgr_id;
select name, mgr_id, salary, sum(salary) over(partition by mgr_id order by mgr_id) as group_sal from emp;

返回如下信息:

select rank() over(order by salary) from emp;
select lead(name) over(order by salary) from emp;

返回如下信息:

4、mysql函数兼容

GBase 8c兼容常规mysql函数,例如:BTRIM、CHAR_LENGTH、CHARACTER_LENGTH、INSTR、LEFT、LENGTH、POSITION、REPLACE、REVERSE等。例:

SELECT CHARACTER_LENGTH('GeeksforGeeks');
SELECT bit_length('world');
SELECT btrim('sring' , 'ing');
SELECT char_length('hello');
SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 );
SELECT lengthb('hello');
SELECT left('abcde', 2);
SELECT length('jose', 'UTF8');
SELECT lpad('hi', 5, 'xyza');
SELECT notlike(1,2);
SELECT notlike(1,1);
SELECT octet_length('jose');
SELECT overlay('hello' placing 'world' from 2 for 3 );
SELECT position('ing' in 'string');

例如返回如下信息:


支持窗口函数RANK、ROW_NUMBER、DENSE_RANK、last_VALUE、CUME_DIST、NTILE、LAG、LEAD等。例:

select rank() over(order by salary) from emp;
select lead(name) over(order by salary) from emp;
select lag(name) over(order by salary) from emp;

返回如下信息:

结论

GBase 8c数据库通过提供多种兼容性模式,实现了对多种主流关系型数据库的高度兼容。这种兼容性不仅降低了数据库迁移和集成的难度,还提高了开发效率和系统稳定性。通过合理的使用和维护,GBase 8c可以为用户带来更加灵活和高效的数据处理解决方案。
 

评论

登录后才可以发表评论