标签
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虚拟机
