【学习视频】第6期2019-Oracle迁移到PostgreSQL - 适合DBA与业务开发者

背景


“PG干O,仁心所象”公益培训活动 2019.6.15 在阿里巴巴西溪园区正式启动。“PG干O,仁心所象”作为“PG天天象上”技术沙龙的兄弟活动,面向开发者和DBA体系化的介绍“PostgreSQL应用开发指南,Oracle用户TO PG开发实践,PG数据库的管理与优化实践”几个方面的内容。旨在帮助开发者和DBA快速了解体系化的去O知识,更加顺滑的使用PostgreSQL 去O。

《兄弟活动- “PG天天象上”技术沙龙纪录》

《为什么PostgreSQL社区几乎不可能被任何一个商业公司、国家所控制?为什么PG是去O的最佳选择》

“PG干O,仁心所象” 公益培训活动纪录

1 20190615期“PG干O,仁心所象”《PG开发者指南、去O、管理与优化实践》 (阿里巴巴西溪园区)

报名人数:36

重要议题1:《PostgreSQL 开发者指南》

重要议题2:《PostgreSQL 日常维护、监控、管理、优化、诊断》

重要议题3:企业数据库辩论赛。

参会企业:同花顺、ODOO(全球第一openERP)、富士通、大华、海康、爱尔、娃哈哈、沃趣、大树、百世物流。。。等。

企业辩论赛回顾:

1、Q PG数据库的编码如何转换

A 创建数据库时指定编码,如果要转换,需要新建,数据导出导入。

CREATE DATABASE

2、Q 创建的对象名超过64个字节会怎么样?

A 截断到63个字节为止。

psql: NOTICE:  42622: identifier "a1111111111111111111111111111111111111111111111111111111111111111" will be truncated to "a11111111111111111111111111111111111111111111111111111111111111"
LOCATION:  truncate_identifier, scansup.c:205
CREATE TABLE
postgres=# select octet_length('a11111111111111111111111111111111111111111111111111111111111111');
octet_length
--------------
63
(1 row)

另外,如果要超过63个字节,需要修改头文件,并重新编译软件,重新初始化数据库集群。

src/include/pg_config_manual.h

* Maximum length for identifiers (e.g. table names, column names,
* function names).  Names actually are limited to one less byte than this,
* because the length must include a trailing zero byte.
*
* Changing this requires an initdb.
*/
#define NAMEDATALEN 64

3、Q 怎样保证从库需要的WAL日志不被主库清除?

A standby使用slot连接主库,主库不会删除没有被SLOT对应STANDBY接收的WAL日志。

设置wal_keep_segments,设置归档也是能够避免WAL被及早清理的方法。但是不能保证。SLOT是绝对性的保证。

4、Q ORACLE RAC 与PG的几个不同点

A RAC为共享存储架构,PG为非共享存储架构。(但是目前阿里云POLARDB for PG已经提供了计算存储分离架构,类似于ORACLE RAC)

ORACLE 支持内存表,PG暂时不支持。但是PG 12开放了AM API,已经开源的ZEDSTORE支持列存,UNDO引擎等。相信很快会支持内存引擎。

ORACLE 有秒级快照备份。PG结合系统ZFS文件系统,同样支持基于STANDBY的ZFS秒级快照备份。(同时PG在激活STANDBY时,可以做到瞬间激活(不管多大的事务,回滚是瞬间完成的(HEAP引擎)))

5、在WINDOWS上,当误操作KILL PG的主进程时,会有PG_CTL进程残留的问题。这个是WIN架构下的服务注册模块的问题。

6、在同一个实例的多个DB自建表级同步,如何做?

A 使用逻辑订阅,但是在目标端创建订阅时,不能使用自动创建SLOT的语法。后期版本可能会改进。

 

Oracle迁移到PostgreSQL实战培训议题

1 对比Oracle与PG

  • PG的开源生态,为什么PG是最适合取代Oracle的数据库
  • 架构与术语
  • 进程结构
  • 逻辑架构
  • 数据类型
  • 内置函数
  • 系统视图
  • SQL语法
  • 函数开发
  • 包开发
  • 存储过程开发
  • 外部数据源访问
  • 性能监控、awr、aas、索引推荐、冷热状态、sql审计
  • SQL优化
  • 错误代码、问题诊断、上报bug、问题库、知识库、邮件组
  • 表空间管理
  • 管理工具
  • 管理函数
  • 管理常用SQL
  • 日常问题的原因、运维
  • 高级功能:分区表、递归查询、JOB、批量处理等
  • 安全(链路、访问acl、rls、角色|组权限控制)
  • 参数(参数介绍、配置级别介绍(全局、用户、会话、数据库、事务、表、函数级别等))
  • 性能压测(工业标准tpcc, tpch,自定义测试)
  • 开发工具
  • 订阅工具
  • 逻辑备份、还原
  • 物理备份、还原
  • 快照备份
  • 实时增量备份
  • standby
  • 逻辑standby
  • 容灾
  • 延迟容灾
  • 多副本同步
  • 不同架构的rpo,rto

2 迁移Oracle

  • Oracle迁移

3 进阶(场景、痛点、解决方案)

  • 进阶,掌握PG独特性、先进性(插件、GIS等)
  • 哪里有插件
  • 如何开发插件
  • 如何扩展PG的功能
  • PG 技巧
  • perf insight
  • ganos
  • oss
  • 全文检索
  • 模糊查询
  • jsonb
  • 时空多属性、时空调度
  • gin倒排索引
  • bloom过滤
  • brin时序索引
  • GiST,SPGiST索引
  • rum索引
  • 聚集索引
  • 存储扩展插件(zedstore, zheap, cstore)
  • 分布式插件citus
  • 图像识别
  • 向量计算与搜索
  • 并行计算(并行度控制)
  • 强制并行
  • 索引推荐
  • 资源隔离
  • 树类型(空间换时间)
  • smlar相似
  • 用户画像(数组、varbitx、roaringbitmap)
  • 时序数据实时聚合
  • rum多重搜索(比es更强的地方)
  • range类型(物联网,会议室预定,排他约束)
  • partial index(物联网,过滤无效数据)
  • 变长类型byteam, text代替blob, clob
  • 大对象
  • 大量数据写入、导出(batch insert, copy)
  • 大量中间数据存储,表数组,代替临时表
  • update, delete limit
  • 并发批量更新防止锁冲突(skip locked, update|delete limit)
  • 秒杀(ad lock)
  • merge into, upsert
  • 连接池
  • 内置连接池
  • 读写分离
  • 递归、分佣、树
  • 逻辑订阅(kafka、流、...)
  • 单元化、互相逻辑同步
  • 流计算
  • 图式关系搜索

4 云

  • polardb for Oracle , 存储按量付费, 弹性增减节点, 一写多读,多副本存储。 RPO=0
  • rds pg安全, 100万iops, 32TB

5 讨论

  • 现场激烈讨论

参考

《PostgreSQL 11 2天体系化培训(包含Oracle迁移到PG的知识点) - 含视频》

《PostgreSQL 多应用场景实践 - 含视频》

《Oracle DBA 增值 PostgreSQL 学习路径》

《PostgreSQL、Greenplum 《如来神掌》》

《为什么PostgreSQL社区几乎不可能被任何一个商业公司、国家所控制?PG是去O的最佳选择》

上一篇:【学习资料】第4期PostgreSQL 持续稳定使用的小技巧 - 最佳实践、规约、规范


下一篇:【学习资料】第3期PostgreSQL 数据库安全指南 - 以及安全合规