开发者社区> 德哥> 正文

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

简介: 标签 PostgreSQL , PPAS , EPAS , edb , enterprisedb , Oracle , 兼容性 , 优缺点 背景 EPAS为EDB的PostgreSQL Oracle兼容企业版,基于PostgreSQL社区版本开发,2004年发布了第一个Oracle兼容版,已经在ORACLE兼容性上耕耘了15年。 2018年推出EPAS 11 版本,完成了 Oracle
+关注继续查看

标签

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


背景

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兼容数据库。

PG 、 PPAS 兼容性对比

功能PPASPG社区版
Oracle pl/sql支持不支持
Oracle pl/sql 自治事务11以上版本支持PG 11支持
Oracle 内置 package26种,440个package func (df dbms)13种,通过orafce支持兼容。(实际使用体验较弱,因package会结合plsql使用)
自定义 Oracle package支持不支持
自定义 Oracle 对象支持不支持
Oracle 系统视图支持不支持
Oracle 内置函数大量支持少量兼容通过orafce插件
Oracle 兼容类型支持少量兼容通过orafce插件
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,pgADAMADAM
Oracle 增量同步到ppas,pgADAMADAM
Oracle 不兼容SQL,DDL的自动转换ADAMADAM
Oracle 兼容性评估,改造工作量评估,自动拆库,风险揭示,ppas优势特性揭示,不兼容DDL/SQL转换,结构,数据迁移,一致性校验,优化,仿真回放,一键迁移ADAMADAM

详细兼容性请参考内容PDF

Oracle vs EDB EPAS 技术对比白皮书

EDB EPAS vs Oracle 商业对比白皮书

EDB EPAS 兼容性手册-内置包

EDB EPAS 兼容性手册-sql referencce

EDB EPAS 兼容性手册-开发者手册

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代替

Oracle 、 PPAS 对比

PPAS 优势特性(已列举43项优势特性)

功能OraclePPAS
多模-时空支持支持 (ganos, postgis, pgrouting, pgpointcloud)
多模-图像处理不支持支持 imgsmlr
多模-JSON支持支持 (带索引加速)
多模-全文检索不支持支持(分词、索引、自定义分词、rank等 带索引加速)实时BUILD
多模-文本相似不支持支持(带索引加速)
多模-向量相似计算不支持支持 (cube插件)
多模-图谱数据处理支持支持
多模-多维不支持支持 (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)

详细兼容性请参考内容PDF

1、Oracle vs EDB EPAS 技术对比白皮书

2、EDB EPAS vs Oracle 商业对比白皮书

3、EDB EPAS 兼容性手册-内置包

4、EDB EPAS 兼容性手册-sql referencce

5、EDB EPAS 兼容性手册-开发者手册

6、Oracle 兼容性评估,改造工作量评估,自动拆库,风险揭示,ppas优势特性揭示,不兼容DDL/SQL转换,结构,数据迁移,一致性校验,优化,仿真回放,一键迁移

小结

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的首选。

 

免费领取阿里云RDS PostgreSQL实例、ECS虚拟机

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb
Java 技术篇 - java同时连接多种数据库执行sql语句的兼容性验证,数据库类型包括:oracle、sqlserver、DB2、人大金仓、达梦、PG、瀚高、polardb
441 0
PostgreSQL Oracle 兼容性 - Oracle 19c 新特性在PostgreSQL中的使用
PostgreSQL Oracle 兼容性 - Oracle 19c 新特性在PostgreSQL中的使用
2392 0
PostgreSQL Oracle 兼容性之 - performance insight - AWS performance insight 理念与实现解读 - 珍藏级
PostgreSQL , perf insight , 等待事件 , 采样 , 发现问题 , Oracle 兼容性
657 0
解读PostgreSQL Oracle 兼容性之 - performance insight(性能洞察)
标签 PostgreSQL , perf insight , 等待事件 , 采样 , 发现问题 , Oracle 兼容性 背景 通常普通的监控会包括系统资源的监控: cpu io 内存 网络 等,但是仅凭资源的监控,当问题发生时,如何快速的定位到问题在哪里?需要更高级的监控: 更高级的监控方法通常是从数据库本身的
734 0
这可能是目前Oracle兼容性最好的数据库 - 十四年Oracle兼容性淬炼
标签 PostgreSQL , EDB , ppas , epas , enterprisedb , 阿里云 背景 Oracle兼容性越高,迁移改造工作量越少,时间成本越低。对于大多数传统企业来说,去O已势在必行。 PostgreSQL 数据库本身与O的兼容性还行,同时功能覆盖度也还是很不错的,所以自己有专业研发团队的企业,选择PG来去O是不错的选择,其中也有很多非常成功的案例,例如平
1222 0
PostgreSQL Oracle 兼容性 - Oracle 19c 新特性在PostgreSQL中的使用
标签 PostgreSQL , Oracle 兼容性 , Oracle 19c 背景 《PostgreSQL 覆盖 Oracle 18c 重大新特性》 Oracle 19c 新特性摘自盖老师《Oracle 19c 新特性及官方文档抢鲜下载》文章,其中有一些特性在PostgreSQL中很早以前已经支持。本文旨在介绍PG如何使用这些特性。 1.Data Guard 备库DML自动重定向
524 0
PostgreSQL Oracle 兼容性之 - nested table
标签 PostgreSQL , Oracle , 兼容性 , nested table 背景 Oracle nested table功能介绍如下 http://www.orafaq.com/wiki/NESTED_TABLE NESTED TABLE is an Oracle data type used to support columns containing multivalu
512 0
PostgreSQL Oracle 兼容性之 - 全局临时表 global temp table
标签 PostgreSQL , 临时表 , 全局临时表 , unlogged table , advisory lock 背景 PostgreSQL 暂时不支持类似Oracle风格的临时表。 PostgreSQL 临时表结构是会话级别的,而在Oracle中,临时表的结构是全局有效的,只是数据会话之间独立。
6615 0
PostgreSQL Oracle 兼容性之 - DBMS_OUTPUT.PUT_LINE
标签 PostgreSQL , Oracle , DBMS_OUTPUT.PUT_LINE , raise , notice 背景 在函数、存储过程中需要进行一些debug,输出一些过程变量的值时,PG中使用raise notice可以非常方便的得到。
2199 0
+关注
德哥
公益是一辈子的事, I am digoal, just do it.
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
迁移 ORACLE 最佳实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像