AntDB的Oracle语法兼容性简单试用


AntDB是基于PG内核国内自主研发的一款开源分布式数据库,兼容oracle语法。这里简单介绍一下使用oracle语法的三种方法。

第一种:服务器级别,修改数据库配置文件默认为oracle语法
通过集群管理工具设置语法
postgres=# set coordinator all(grammar = oracle);
SET PARAM
设置过后,会在相应coordinator的配置文件postgresql.conf中写“grammar = oracle”。此时可以直接执行oracle语法。
[shan2@localhost1 0]$ psql -d postgres -p 4335
psql (3.1devel 7b91fbb based on PG 9.6.2)
Type "help" for help.

postgres=# select months_between(to_date('2017-4-30','yyyy-mm-dd'),to_date('2017-3-30','yyyy-mm-dd')) from dual;
months_between
----------------
1
(1 row)
第二种:会话级别,设置session级别参数指定oracle语法
postgres=# set grammar to oracle;
SET
postgres=# select months_between(to_date('2017-4-30','yyyy-mm-dd'),to_date('2017-3-30','yyyy-mm-dd')) from dual;
months_between
----------------
1
(1 row)
对比:把会话级别参数修改到postgres,则不支持oracle语法。
postgres=# set grammar to postgres;
SET
postgres=# select months_between(to_date('2017-4-30','yyyy-mm-dd'),to_date('2017-3-30','yyyy-mm-dd')) from dual;
ERROR: function months_between(date, date) does not exist
LINE 1: select months_between(to_date('2017-4-30','yyyy-mm-dd'),to_d...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
postgres=#

第三种:语句级别, 通过/*ora*/或/*oracle*/等前缀注释指定按Oracle语法执行SQL
postgres=# /*ora*/ select months_between(to_date('2017-4-30','yyyy-mm-dd'),to_date('2017-3-30','yyyy-mm-dd')) from dual;
months_between
----------------
1
(1 row)

目前,ADB支持大部分常用oracle函数的语法,上面只是以months_between函数为例说明。下面的表格是ADB与Oracle的功能对比。
指标
ADB
Oracle
类型
关系型数据库
关系型数据库
架构
分布式 share nothing
集中式 share everything
多线程or多进程
多进程
多进程
License费用
完全开源
按照CPU核数收费,价格昂贵
SLA
7x24,一般问题不会过夜,重大严重问题不会超过两天
一般用户MOS发起sr,高级用户联系SSC/ACS部门,现场服务每人日8000RMB(8小时,加班2倍,节假日3倍)
高可用
hot standby
Active Data Guard
容灾
自研双向同步工具
底层存储复制、flashcopy等
数据分片
支持
12.2版本开始提供,未发布,细节不详
导出导入
pg_dump/pg_dumpall/pg_restore
exp/expdp/imp/impdp
备份恢复管理
barman
rman
基于时间点的恢复(PITR)
支持
支持
归档
支持
支持
分布式事务控制
支持
支持
可视化监控展示
ADBmonitor
Oracle EM
命令行客户端
psql
sqlplus
官方图形化客户端
pgadmin
sqlpldeveloper
JDBC接口
支持
支持
C/C++接口
libpq
OCI
功能扩展
需要的功能几乎均能在社区找到相应的插件,非常方便
不支持
Oracle迁移
Oracle语法85%兼容,应用几乎无需改写代码
 
稳定性
普通x86上大量严格的暴力边界测试,
生产环境持续稳定的运行
多年的商业数据库,稳定性不错
水平扩缩容
很方便的在集群中添加删除node
rac架构添加实例,依然需要share everything
多租户(在一个实例中创建多个database)
原生支持
12c版本开始支持
dblink
支持
支持
查询其他类型数据库
丰富的fdw插件
oracle gateway
double cache
(db cache && os cache)
支持
不支持
资源控制(类似linux的limit)
支持
支持
访问控制
pg_hba.conf文件
sqlnet.ora
数据undo
MVCC
undo tablespace
数据redo
WAL log
online redo log
数据完整性约束(包括主键、外键、唯一、check等约束)
支持
支持
存储过程/函数/触发器
支持
支持
数据库内部job
pg_cron
dbms_job/dbms_scheduler
用户自定义类型
支持
支持
秒以下的时间类型
支持
支持
自增字段
支持
不支持
物化视图
支持
支持
序列
支持
支持
非结构化数据
支持json格式
不支持
空间地图数据
支持
不支持
XML
支持
支持
全文搜索
支持
支持
复杂查询
支持
支持
子查询(包括简单子查询和标量子查询)
支持
支持
并行查询
2.3版本支持
支持
局部索引
复合索引
支持
支持
位图索引
不支持
支持
函数索引
支持
支持
分析函数
支持
支持
分区表
通过继承表实现
丰富的分区特性
窗口函数
支持
支持
外部函数(使用C/Python等语言在DB中编写函数)
支持
支持
表连接类型
nest loop/hash join/sort merge join
nest loop/hash join/sort merge join
性能优化工具与度量信息
丰富的日志信息和表、索引的统计信息
awr和ash提供了丰富的诊断信息
优化器提示信息
安装插件pg_hint_plan后支持
原生丰富的hint提示
关于AntDB的具体信息,请见下面的链接。
代码地址:
https://github.com/ADBSQL/AntDB

QQ交流群:496464280

你可能感兴趣的:(数据库)