背景
去O很大程度上是战略考虑,比如斯诺登事件,最近xx摩擦的ZxE事件,使得去O成为一个不可不做的事情。
但是去O喊了若干年,并没有真正意义上成为轻松愉快的全*动,比较大的原因可能是
1、去O的成本
2、去O后的责任方
3、利益
随着云计算的兴起,第2,3点应该可以得到很好的解决(有问题找O转换为有问题找云厂商)。而去O的成本就成为一个比较痛的点,到底需要花多少人力物力可以完成去O,过去基本上都是拍脑袋的,每个项目因人而异。同时大部分的成本又来自于对应用的改造。(因为目标库不具备Oracle兼容性,需要大改)
不过成本的问题,也已经解决,阿里云RDSPG,基于PostgreSQL的Oracle兼容版PPAS,不仅在“功能、性能、可靠性、扩展性”等方面可以满足业务的需求。同时很大程度上解决了ORACLE在SQL语法、表、视图、物化视图、类型、操作符、内置函数、PL/SQL存储过程、PACKAGE的兼容问题,使得迁移成本降到了非常低的水平。
采用阿里云提供的Oracle评估软件"ADAM",甚至可以做到精确的衡量 (报告会明确告诉:有多少对象,有多少兼容,多少不兼容,不兼容的如何修改等) 。
作为Oracle DBA,学习PostgreSQL,Greenplum是非常有必要的。
学习计划
九阳神功。
第一重、概念了解 (30天)
可以看这几本书
https://momjian.us/main/writings/pgsql/aw_pgsql_book/
https://www.postgresql.org/docs/online-resources/
http://www.postgresqltutorial.com/
http://www.tutorialspoint.com/postgresql/
http://www.interdb.jp/pg/ 这本比较深,建议在90天后再看。
目标:
学习PG的一些基本知识,SQL的用法等。
第二重、安装PostgreSQL (1天)
看你的兴趣选择
https://www.postgresql.org/docs/devel/static/installation.html
《PostgreSQL 10 on ECS 实施 流复制备库镜像+自动快照备份+自动备份验证+自动清理备份与归档 - 珍藏级》
《PostgreSQL 10 + PostGIS + Sharding(pg_pathman) + MySQL(fdw外部表) on ECS 部署指南(适合新用户) - 珍藏级》
《PostgreSQL on Linux 最佳部署手册 - 珍藏级》
目标:
学习如何安装软件。
第三重、了解几个常用command (1天)
建议看一下man command,详细的了解他们
https://www.postgresql.org/docs/devel/static/reference-client.html
https://www.postgresql.org/docs/devel/static/reference-server.html
目标:
了解PG软件的几个常用命令
第四重、初始化数据库,了解配置文件 (1天)
使用initdb命令初始化数据库集群
同时你需要了解3个配置文件,建议每一个配置都详细的了解清楚
如果你需要配置standby,流复制备库、或将数据库恢复到时间点,需要配置recovery.conf
第五重、场景把玩 (60天)
了解场景,以及数据库特性,加深对PG的了解。
建议看这篇文档中的PPT
《阿里云 PostgreSQL 产品生态;案例、开发实践、管理实践、学习资料、学习视频 - 珍藏级》
同时看一下这一系列的文档,并了解每一个场景,以及上手玩一下每一个场景。
《HTAP数据库 PostgreSQL 场景与性能测试之 47 - (OLTP) 空间应用 - 高并发空间位置更新、多属性KNN搜索并测(含空间索引)末端配送、新零售类项目》
《HTAP数据库 PostgreSQL 场景与性能测试之 46 - (OLTP) 大json字段的高并发更新》
《HTAP数据库 PostgreSQL 场景与性能测试之 45 - (OLTP) 数据量与性能的线性关系(10亿+无衰减), 暨单表多大需要分区》
《[未完待续] HTAP数据库 PostgreSQL 场景与性能测试之 44 - (OLTP) 空间应用 - 空间包含查询(输入多边形 包含 表内空间对象)》
《HTAP数据库 PostgreSQL 场景与性能测试之 43 - (OLTP+OLAP) unlogged table 含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 42 - (OLTP+OLAP) unlogged table 不含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 41 - (OLTP+OLAP) 含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 40 - (OLTP+OLAP) 不含索引多表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 39 - (OLTP+OLAP) 含索引多表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 38 - (OLTP+OLAP) 不含索引多表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 37 - (OLTP+OLAP) 含索引单表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 36 - (OLTP+OLAP) 不含索引单表批量写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 35 - (OLTP+OLAP) 含索引单表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 34 - (OLTP+OLAP) 不含索引单表单点写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 33 - (OLAP) 物联网 - 线性字段区间实时统计》
《HTAP数据库 PostgreSQL 场景与性能测试之 32 - (OLTP) 高吞吐数据进出(堆存、行扫、无需索引) - 阅后即焚(JSON + 函数流式计算)》
《HTAP数据库 PostgreSQL 场景与性能测试之 31 - (OLTP) 高吞吐数据进出(堆存、行扫、无需索引) - 阅后即焚(读写大吞吐并测)》
《HTAP数据库 PostgreSQL 场景与性能测试之 30 - (OLTP) 秒杀 - 高并发单点更新》
《HTAP数据库 PostgreSQL 场景与性能测试之 29 - (OLTP) 空间应用 - 高并发空间位置更新(含空间索引)》
《HTAP数据库 PostgreSQL 场景与性能测试之 28 - (OLTP) 高并发点更新》
《HTAP数据库 PostgreSQL 场景与性能测试之 27 - (OLTP) 物联网 - FEED日志, 流式处理 与 阅后即焚 (CTE)》
《HTAP数据库 PostgreSQL 场景与性能测试之 26 - (OLTP) NOT IN、NOT EXISTS 查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 25 - (OLTP) IN , EXISTS 查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 24 - (OLTP) 物联网 - 时序数据并发写入(含时序索引BRIN)》
《HTAP数据库 PostgreSQL 场景与性能测试之 23 - (OLAP) 并行计算》
《HTAP数据库 PostgreSQL 场景与性能测试之 22 - (OLTP) merge insert|upsert|insert on conflict|合并写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 21 - (OLTP+OLAP) 排序、建索引》
《HTAP数据库 PostgreSQL 场景与性能测试之 20 - (OLAP) 用户画像圈人场景 - 多个字段任意组合条件筛选与透视》
《HTAP数据库 PostgreSQL 场景与性能测试之 19 - (OLAP) 用户画像圈人场景 - 数组相交查询与聚合》
《HTAP数据库 PostgreSQL 场景与性能测试之 18 - (OLAP) 用户画像圈人场景 - 数组包含查询与聚合》
《HTAP数据库 PostgreSQL 场景与性能测试之 17 - (OLTP) 数组相似查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 16 - (OLTP) 文本特征向量 - 相似特征(海明...)查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 15 - (OLTP) 物联网 - 查询一个时序区间的数据》
《HTAP数据库 PostgreSQL 场景与性能测试之 14 - (OLTP) 字符串搜索 - 全文检索》
《HTAP数据库 PostgreSQL 场景与性能测试之 13 - (OLTP) 字符串搜索 - 相似查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 12 - (OLTP) 字符串搜索 - 前后模糊查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 11 - (OLTP) 字符串搜索 - 后缀查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 10 - (OLTP) 字符串搜索 - 前缀查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 9 - (OLTP) 字符串模糊查询 - 含索引实时写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 8 - (OLTP) 多值类型(数组)含索引实时写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 7 - (OLTP) 全文检索 - 含索引实时写入》
《HTAP数据库 PostgreSQL 场景与性能测试之 6 - (OLTP) 空间应用 - KNN查询(搜索附近对象,由近到远排序输出)》
《HTAP数据库 PostgreSQL 场景与性能测试之 5 - (OLTP) 空间应用 - 空间包含查询(表内多边形 包含 输入空间对象)》
《HTAP数据库 PostgreSQL 场景与性能测试之 4 - (OLAP) 大表OUTER JOIN统计查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 3 - (OLAP) 大表JOIN统计查询》
《HTAP数据库 PostgreSQL 场景与性能测试之 2 - (OLTP) 多表JOIN》
《HTAP数据库 PostgreSQL 场景与性能测试之 1 - (OLTP) 点查》
第六重、辅助的参考学习视频或文档 (90天)
在线视频1
http://pan.baidu.com/s/1pKVCgHX
在线视频2
《阿里云 PostgreSQL 产品生态;案例、开发实践、管理实践 PDF》
https://edu.aliyun.com/course/836/lesson/list
第七重、生命周期管理 (180天)
自己摸索、慢慢熟悉
第八重、如来神掌,进阶 (360天)
《PostgreSQL、Greenplum 《如来神掌》 - 目录 - 珍藏级》
精华:
《阿里云 PostgreSQL 产品生态;案例、开发实践、管理实践、学习资料、学习视频 - 珍藏级》
第九重、源码 (至少2年)
辅助1、了解官方文档的结构,随时可以查阅 (7天)
https://www.postgresql.org/docs/devel/static/index.html
辅助2、找一个靠谱的团队
经常开展内部交流,
经常接客,深入了解应用。
辅助3、经常参与社区活动
国内外社区的活动,分享交流。
PostgreSQL hacker邮件列表,参与讨论。
Greenplum是基于PG的MPP数据库,大多数用法与PG类似,可以了解一下Greenplum的原理,深入学习可以看代码。
其他参考文档
https://github.com/topics/postgres?l=c&o=desc&s=stars
https://github.com/dhamaniasad/awesome-postgres
推荐给大学生的PostgreSQL书单
1、概念
http://momjian.us/main/writings/pgsql/aw_pgsql_book/0.html
2、应用开发
《PostgreSQL 服务器编程》
http://www.postgresqltutorial.com/
3、数据库管理
《PostgreSQL 实战》
《PostgreSQL 修炼之道》
4、数据库内核开发
《PostgreSQL 指南 内幕探索》
《PostgreSQL 技术内幕(查询优化器深度探索)》
《PostgreSQL 数据库内核分析》
5、案例
https://github.com/digoal/blog/blob/master/201706/20170601_02.md
6、Bruce的资料库
http://momjian.us/main/writings/
招聘信息
https://github.com/digoal/blog/blob/master/class/33.md
阿里云数据库DBA、内核研发、服务端研发岗位传输门
把云端数据库打造好,为全世界的企业服务,相信云端是未来DBA的一个非常好的归宿。
数据库专家岗位:
职位描述 1.精通SQL Server/MySQL/Postgresql/Redis/MongoDB数据库(之一)的运行机制和架构体系,精通数据库架构与设计,对数据库解决方案的优劣和适用场景有深入的理解,能够根据具体场景合理进行数据库选型和模型设计。 2.熟悉Linux/Unix操作系统,熟练掌握Java/Python/Perl/Golang等语言中的一种,可以通过编写程序解决工作中遇到的问题,具备良好的编程风格。 3.熟练掌握数据库性能优化技巧,能够定位全链路上的性能瓶颈(网络、CPU、IO、操作系统等),并解决问题。 4.具有3年以上项目需求分析、方案架构设计工作经验,具有大型行业应用架构经历以及较强的客户需求调研和需求分析能力者优先。 5.具有强大的内心,具备强烈的抗压能力,具有优秀的客服第一的意识。 6.良好的团队协作能力,善为人师,渴望突破,喜欢有挑战的工作。 7.良好的沟通表达能力,具备优秀的文档能力,使用文字、图示清楚地表达架构意图,能够熟练编写各类技术文档。
数据库产品内核研发岗位:
职位描述: 开发PostgreSQL生态的RDS和HybridDB数据库内核; 拥抱开源,为数据库开源社区贡献力量,提升社区影响力; 参与云数据库产品的客户支持工作; 职位要求: 必备条件: 精通C/C++/JAVA等至少一种开发语言,有良好的算法和数据结构基础; 有数据库、网络、操作系统、高并发系统、分布式系统等至少一个领域的工作经验,并深入理解该领域技术; 热爱底层技术,有追求极致性能和工程质量的热情; 有良好的沟通能力和团队意识,以及追根究底、认真负责的态度; 优先条件(满足下面一条或多条优先考虑): 有PostgreSQL、Greenplum、DB2、Teradata、MySQL、国产数据库、NoSQL数据库等数据库内核开发经验; 深入理解数据库的优化器、执行器、MVCC、锁、日志、缓存区、存储、主备高可用等一个或多个模块原理; 深入理解分布式数据库架构、查询计划、事务等原理; 有数据库内核Oracle兼容性功能开发的经验; 有网络协议、RDMA技术等开发经验; 有Linux内核、驱动等开发经验; 有高性能、高并发服务器开发经验; 有在Linux进行profiling、性能问题分析的经验;
数据库产品服务端开发岗位:
职位描述 1. 至少熟悉Java/Python/Go/Ruby等语言的一种或多种,理解该语言涉及的基础框架,对你使用过的框架能够了解到它的原理和机制; 2. 熟悉linux内核基本原理,常用工具和命令,较好的诊断调优技能; 3. 熟练掌握多线程等高并发系统编程和优化技能;熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息等机制;能对分布式常用技术进行合理应用,解决问题; 4. 熟悉OpenStack/Kubernetes/CloudFoundry等开源云平台者优先,熟悉Docker容器技术、对cgroup/namespace等隔离技术有经验者优先;熟悉Hadoop/Spark/Storm等数据分析平台和经验者优先。 5. 熟悉MySQL/SQLServer/PG等关系型数据库,熟悉Redis/Mongo/HBase/Cassendra/Kafka/Elasticsearch等开源数据库、队列产品,并了解其原理或有运维经验者优先。 6. 快速学习能力,较强的团队沟通和协作能力,较强的自我驱动能力; 通过“阿里巴巴编码规范” 认证的同学优先录取,认证地址:https://edu.aliyun.com/certification/cldt02
简历发送至: dege.zzz@alibaba-inc.com 获得内部推荐机会
请注明应聘岗位。