谈PostgreSQL的学习之九层宝塔

2020-06-17 00:00:00 功能 数据库 学习 分区表 稳定性

武侠世界,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有地理信息数据处理功能(GIS),暂时用不到可以先放过,除非很有志趣;如能在工作中学以致用,将会事半功倍。DBA和应用开发人员可以根据工作需要深入学习不同功能要点。

功能列表:

安全控制

基准测试

监控功能

审计功能

并发控制

并行处理

临时表

触发器

函数、存储过程

执行计划

物理连接

数据缓存

物化视图

分区表

主从流复制

逻辑复制

访问外部数据

……

第四层 熟练操作,得心应手

学习了稳定性要点、功能列表;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国际社区贡献者列表链接:

postgresql.org/communit

第九层 融会贯通,自由驰骋

学习任何技能,终的境界是融汇贯通,以无招胜有招。

无论大家从事DBA、DEV或者系统内核开发,期望通过有效的方法,坚持不懈的积累都可以达到这一层,自由挥洒。

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

后,说两点学习的方法体会:

,多交流、多阅读、多练习,三多式自学成才。

多与前辈交流,科学问答,多阅读书籍,自己多做实验,需要强调的是书是人类进步的阶梯,学习好的伙伴,可以根据学习阶段或工作需要选择阅读。

参考书目

《PostgreSQL修炼之道-从小工到专家》

《PostgreSQL 9X之巅》

《PostgreSQL实战》

《PostgreSQL指南:内幕探索》

《PostgreSQL服务器编程》

……

第二,学习投资,向导师借力。

培训是件专业的事,的培训导师可以帮你快速把握要领、修正方法,帮你节约时间,能更快速有效的提升技能,还能够提供更多的资源,譬如良好的学习环境、就业机会、技术支持等,人生多一良师,也是一大幸事。

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


相关文章