天天看点

PostgreSQL , EDB EPAS PPAS(兼容Oracle) , Oracle 对比(兼容性、特性优劣势) - 企业去O,去IOE

标签

PostgreSQL , PPAS , EPAS , edb , enterprisedb , Oracle , 兼容性 , 优缺点

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#%E8%83%8C%E6%99%AF 背景

EPAS为EDB的PostgreSQL Oracle兼容企业版,基于PostgreSQL社区版本开发,2004年发布了第一个Oracle兼容版,已经在ORACLE兼容性上耕耘了15年。

2018年推出EPAS 11 版本,完成了 Oracle 11g, 12c 认证。

2016年阿里云与EDB合作,推出阿里云RDS PPAS,兼容Oracle。

2018年阿里云与EDB代码级深度合作,即将推出POLARDB O,计算存储分离,云原生Oracle兼容数据库。

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#pg--ppas-%E5%85%BC%E5%AE%B9%E6%80%A7%E5%AF%B9%E6%AF%94 PG 、 PPAS 兼容性对比

功能 PPAS PG社区版
Oracle pl/sql 支持 不支持
Oracle pl/sql 自治事务 11以上版本支持 PG 11支持
Oracle 内置 package 26种,440个package func (df dbms) 13种,通过orafce支持兼容。(实际使用体验较弱,因package会结合plsql使用)
自定义 Oracle package
自定义 Oracle 对象
Oracle 系统视图
Oracle 内置函数 大量支持 少量兼容通过orafce插件
Oracle 兼容类型
Oracle pl/sql 嵌套表
Oracle pl/sql bulk collect bind
Oracle sql语法 大部分支持 少部分兼容,其他需修改
Oracle 分区表语法
Oracle VPD(RLS) 不支持,需修改语法
sql 防火墙
索引推荐
资源隔离(Resource manage)
客户端驱动 oci,proc,spl,jdbc,.net,odbc兼容 不兼容oci,proc
Oracle SQL*Load 不支持,可以使用pgbulkload或copy代替
Oracle 存储过程加密
Oracle rowid 不支持Oracle rowid 语法(使用ctid或oid代替)
Oracle 迁移评估 支持较弱(ora2pg)
Oracle 转化ddl,全量同步到ppas,pg ADAM
Oracle 增量同步到ppas,pg
Oracle 不兼容SQL,DDL的自动转换
Oracle 兼容性评估,改造工作量评估,自动拆库,风险揭示,ppas优势特性揭示,不兼容DDL/SQL转换,结构,数据迁移,一致性校验,优化,仿真回放,一键迁移

详细兼容性请参考内容PDF

Oracle vs EDB EPAS 技术对比白皮书 EDB EPAS vs Oracle 商业对比白皮书 EDB EPAS 兼容性手册-内置包 EDB EPAS 兼容性手册-sql referencce EDB EPAS 兼容性手册-开发者手册

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#ppas-%E5%85%BC%E5%AE%B9%E6%80%A7%E9%9C%80%E8%A1%A5%E9%BD%90 PPAS 兼容性需补齐

以下取自 Oracle vs EDB EPAS 技术对比白皮书

1、全局临时表

《PostgreSQL Oracle 兼容性之 - 全局临时表 global temp table》

2、分区表支持:INTERVAL PARTITIONING

3、分区表支持:PARTITIONED INDEXES

4、bitmap索引, 当前使用gin索引代替

5、flashback query

6、flashback table, database and transaction query

7、RAC

8、in-memory database

9、data masking

10、database vault

11、xml_db

12、高级压缩

13、TRANSPORTABLE CROSS-PLATFORM TABLE SPACES

14、ONLINE REORGANIZATION, 改语法实现(readme)

15、merge 语法, upsert代替

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#oracle--ppas-%E5%AF%B9%E6%AF%94 Oracle 、 PPAS 对比

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#ppas-%E4%BC%98%E5%8A%BF%E7%89%B9%E6%80%A7%E5%B7%B2%E5%88%97%E4%B8%BE43%E9%A1%B9%E4%BC%98%E5%8A%BF%E7%89%B9%E6%80%A7 PPAS 优势特性(已列举43项优势特性)

Oracle
多模-时空 支持 (ganos, postgis, pgrouting, pgpointcloud)
多模-图像处理 支持 imgsmlr
多模-JSON 支持 (带索引加速)
多模-全文检索 支持(分词、索引、自定义分词、rank等 带索引加速)实时BUILD
多模-文本相似 支持(带索引加速)
多模-向量相似计算 支持 (cube插件)
多模-图谱数据处理
多模-多维
多模-路由 支持 (pgrouting插件)
多模-流计算 支持 (pipelinedb插件)
性能-JIT
性能-向量计算
性能-GPU加速 支持 (ganos, pg_strom插件)
索引-分区索引 间接支持 (partial index)
索引-分区表全局索引
索引-btree
索引-hash
索引-gin 支持(倒排索引)
索引-gist
索引-spgist
索引-brin 支持(仅Oracle一体机)
索引-bloom
索引-rum
索引-zombodb
索引-表达式索引
索引-bitmap 不支持 (使用gin代替)
索引-部分索引
高级功能-机器学习 支持 (madlib)
高级功能-sharding 支持 (citus)
高级功能-ddl事务
高级功能-异构外部表 支持不完全 几乎支持任意外部数据源(FDW方式)
内置编程语言-plpgsql
内置编程语言-plpython
内置编程语言-plperl
内置编程语言-pllua
内置编程语言-pljava
内置编程语言-pltcl
高级类型-数组
高级类型-range
高级类型-xml
高级类型-网络
高级类型-大对象
高级类型-字节流
高级类型-比特流
高级类型-图像
高级类型-向量
复制-物理流
复制-逻辑流
复制-任意多副本 支持(quorum based replication)
复制-内部订阅
优化器-动态优化 支持 (通过pg_aqo插件)
优化器-join遗传算法
优化器-hash join
优化器-merge join
优化器-nestloop join
优化器-游标
并行-scan
并行-index scan
并行-index only scan
并行-bitmap scan ?
并行-filter
并行-sort
并行-agg
并行-write (create table, select into, create index)
并行-join
安全-存储过程加密
安全-SQL防火墙
安全-VPD
安全-审计
安全-数据库ACL
安全-认证方法 少量 大量(md5,peer,ident,trust,reject,password,ldap,ad,gssapi,radius,pam,bsd,sspi)
扩展-过程语言扩展
扩展-FDW
扩展-采样
扩展-自定义扫描
扩展-自定义REDO
扩展-自定义索引方法
扩展-自定义类型、OP、UDF
衍生产品-derived db 数不胜数( https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases )

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#%E8%AF%A6%E7%BB%86%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%B7%E5%8F%82%E8%80%83%E5%86%85%E5%AE%B9pdf

1、

2、

3、

4、

5、

6、

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#%E5%B0%8F%E7%BB%93 小结

1、覆盖SQL语法(深度兼容,例如connect by,分区表。)、数据类型、函数、包(支持多达26个package,440种方法)、索引类型、操作符、样式、自定义pl/sql 存储过程、函数、包、客户端驱动(OCI)、客户端编程(Pro*C)。

2、兼容4320个ORACLE独有对象(覆盖类型、包、函数、存储过程、视图、同义词、系统表、序列、动态视图等)。

3、兼容数十项ORACLE高级功能(包括VPD,分区表、物化视图、同义词、DBLINK、高级队列、JOB、PROFILE、AWR、PDB、策略、SQL防火墙、OCI驱动、Pro*C等)。

阿里云PPAS(EDB EPAS)在Oracle兼容性,高级功能方面有非常强的优势,是企业平滑去O的首选。

https://github.com/digoal/blog/blob/master/201903/20190301_01.md#%E5%85%8D%E8%B4%B9%E9%A2%86%E5%8F%96%E9%98%BF%E9%87%8C%E4%BA%91rds-postgresql%E5%AE%9E%E4%BE%8Becs%E8%99%9A%E6%8B%9F%E6%9C%BA 免费领取阿里云RDS PostgreSQL实例、ECS虚拟机

PostgreSQL , EDB EPAS PPAS(兼容Oracle) , Oracle 对比(兼容性、特性优劣势) - 企业去O,去IOE