PostgreSQL学习的九层宝塔

前言
武侠世界,9是个神奇的数字,武学秘籍有《九阳真经》《九阴真经》,凡武功修炼到第九层,闯荡江湖将独孤求败,快意恩仇。以文昌塔为喻,我把学习PG划分九层,希望可以对玩转数据江湖的同学,有所参照,逐层递进,直至达到高手行列,闯荡职场,游刃有余。
第一层 初识 PG,开阔心胸。
第二层 安装使用,动手操练。
第三层 熟悉功能,提纲挈领。
第四层 熟练操作,得心应手。
第五层 透视功能,探究原理。
第六层 问题处理,性能优化。
第七层 读懂源码,快速定位。
第八层 编写源码,完善优化。
第九层 融会贯通,自由驰骋。

第一层:初识PG,开阔心胸
数据库不只有Oracle、DB2、SQLSERVER,还有PostgreSQL(简称PG),PG是最强大的开源数据库,PG开源友好,学习PG可以从事DBA/应用开发/系统内核开发等工作,而且会有很大的发挥空间,使用PG可以为企业提供有效的数据库管理,也可以自主可控、节约成本。当今职场,多懂几个数据库,会让我们有更多的机会。

初识PG,主要是学习认知PG的起源发展,主要版本特性,应用领域;了解国际PG社区组织、资源、动态,与中国PG分会、PG社区建立联系,积极互动,获取学习资源,尝试分享,展示自我。

第二层:安装使用,动手操练
“安装部署、服务管理、体系结构、初始化配置、数据库对象管理”,这是PG的应用管理基础,DBA要会,应用开发也要会。当然两种角色关注重点稍有不同,譬如DBA关注架构部署、运行稳定性和高效性,而应用开发更多的是掌握数据库对象的创建及管理。

第三层:把握要点,提纲挈领
PG作为关系型数据库承担着管理企业数据的重任。功能、性能很重要,稳定性更重要,这也是作为DBA首要考虑的问题。PG数据库发展30多年,国际、国内的众多应用案例表明稳定性可以信赖。关注学习与稳定性相关的知识点,能够将PG的稳定性发挥的更好:

PG稳定性要点:
内存配置
日志配置
磁盘管理
并发控制
进程控制
……

PG的功能强大、繁多,可以系统化、模块化的选择性学习。譬如PG有地理信息数据处理功能(GIS),暂时用不到可以先放过,除非很有志趣。DBA和应用开发人员可以根据工作需要深入学习不同功能要点。

PG功能列表:
安全控制
基准测试
监控功能
审计功能
并发控制
并行处理
临时表
触发器
函数、存储过程
执行计划
物理连接
数据缓存
物化视图
分区表
主从流复制
逻辑复制
访问外部数据
……

第四层:熟练操作,得心应手
学习了稳定性要点、功能列表后,PG基本可以用来服务于工作了。通过不断的自我练习,满足工作业务需求,会看到自己的水平会不断的进步。

第五层:透视功能,探究原理
PG功能点繁多,独特的功能适用于不同的业务场景,而且随着PG版本的更新迭代,重要的功能点也会不断得到优化,无论是使用上的便捷性还是性能的增强,无不体现着源码内核贡献着的智慧与追求:使PG不断完善,更好的服务于业务。

譬如分区表,PG V9版本中是通过表继承+触发器的方式实现,因触发器本身的限制,数据的插入性能并不高;PG V10实现了内置分区表,创建的分区实质上也是普通的表结构,从而管理分区方便,数据插入效率得以提高;PG V11增加哈希分区、默认分区、支持更新分区键等,完善了分区的功能。

探究原理能从内部机理深入理解,面对问题也能透过现象看本质,发现问题的诱因是使用不当还是系统bug,从而能更好的处理问题。

第六层:问题处理,性能优化
习得第五层是为了更好的使用PG,遇到问题可以快速定位、分析处理。处理问题需要平时多积累整理,一方面是技术群、网站论坛抛出的问题,主动思考、整理,学习总结,以备不时之需,有些问题平常不经常遇到,但一旦出现,之前没有处理过会比较棘手;另一方面是工作中的问题,通常会有应急处理办法,问题处理后,尽量形成问题分析报告,对有些问题选择深度思考、讨论,探究根本原因,进而归档或分享,这都是宝贵的经验。

性能优化一直是数据库大脑的重点,也是运维、开发者工作价值的体现。通过对内幕的探索,能够拨云见日,配合相关工具通过配置或SQL的优化,来提升数据库的访问性能。

第七层:读懂源码,快速定位
大学计算机相关专业的同学,一般会有C语言的课程,C语言可以算是世界上最伟大的编程语言之一,可以用来编写UNIX/Linux的内核,也可以实现Python/Ruby解析器、Apache中间件等,很多关系数据库都能看到C语言的影子。

PG源代码也是用C编写,尝试学习源码是件有挑战性的事,就如同驾驶手动挡汽车,如能操作熟练,必能体会其中的乐趣。不用任何解读,就能快速定位到源代码直接理解PG的工作逻辑,帮助我们更好的使用PG。

第八层:编写源码,完善优化
编写PG源码是有志于从事系统编程工作同学的追求或方向,PG的强大凝聚了世界各地PG内核编码工程师的智慧,遗憾的是,PG国际社区的贡献者档案中还没有出现中国人的名字。当然,国内也不乏优秀的系统编码者,期待通过大家共同的努力,将会涌现更多、更优秀的系统编码工程师出现在列表中!

PG国际社区贡献者列表链接:https://www.postgresql.org/community/contributors/

第九层:融会贯通,自由驰聘
学习任何技能,最终的境界是融汇贯通,以无招胜有招。
无论大家从事DBA、DEV或者系统内核开发,通过有效的方法,坚持不懈的积累都可以达到这一层,自由挥洒。

后记
以上内容只是在PG的学习角度做的一些总结,用好PG还需要有良好的系统、数据库原理知识,这也是基础,犹如地基,地基稳,宝塔立。PG学习的九层宝塔,是为了更形象具体的描述,学习过程不是说必须按此一层一层进行,大家可以根据自己兴趣或工作需要有所选择的开展学习。

最后,说两点学习的方法体会:
第一:多交流、多阅读、多练习。
多与前辈交流,科学问答,多阅读优秀书籍,自己多做实验。书是人类进步的阶梯,学习最好的伙伴,可以根据学习阶段或工作需要选择阅读。

参考书目
《PostgreSQL修炼之道-从小工到专家》
《PostgreSQL实战》
《PostgreSQL指南:内幕探索》
《PostgreSQL服务器编程》
……

第二:投资学习,向导师借力。
培训是件专业的事,优秀的培训导师可以帮你快速把握要领、修正方法;帮你节约时间、能更快速有效的提升技能;还能够提供更多的资源,譬如良好的学习环境、就业机会、技术支持等,人生多一良师,也是一大幸事。
PostgreSQL学习的九层宝塔_第1张图片

读罢本文,想必有读者会问我是几层,我只能这么回答您“路漫漫其修远兮,吾将上下而求索”。如果本文对您有所帮助,也不枉费脑力一场;如果您有不同意见也可以借PG分会平台发表或进一步交流。

更多精彩内容,请关注以下平台、网站:

中国Postgre SQL分会官方公众号(技术文章、技术活动):
开源软件联盟PostgreSQL分会

中国Postgre SQL分会技术问答社区:
www.pgfans.cn

中国Postgre SQL分会官方网站:
www.postgresqlchina.com

你可能感兴趣的:(postgresql)