书评:掌握Postgresql 15
#书 #postgres #sql #database

通常,我喜欢包含易于理解和可重复的代码示例的书籍,以及大量基于经验的信息。 Hans-Jã¼RgenSchã¶nig的Mastering PostgreSQL 15就是这样一本书,为PostgreSql提供了宝贵的学习资源。

第一章重点关注PostgreSQL 15,对于已经熟悉PostgreSQL的读者特别有用。我认为,最关键的方面是“ ICU地区”。所有数据库管理员都应理解此概念,即使他们尚未升级到PG15。对于开发人员而言,合并语句可能是学习的最重要功能。

第二章研究交易,锁定和并发。阅读本章,我很感谢这本书与人们如何了解SQL数据库有关。 SQL数据库使您可以忘记并发用户,这是其最吸引人的方面之一。您可以代码和测试,就好像您是唯一使用数据库的人一样,数据库确保您读取和编写的数据的一致性,即使在其他用户在同一数据集上工作的情况下也是如此。但是,在从中受益之前,必须了解这些概念。作为开发人员,您需要定义交易边界(酸中的“ a”)并确保序列化(酸中的“ i”)。此外,应用程序开发人员必须通过确定是否等待,失败还是重试处理错误。掌握了这些概念后,您将不再需要过多的代码或测试。我强烈建议您在本章上花费时间,因为它提供了明确的解释和示例。它还阐明了GostgreSQL的MVCC(多反转并发控制)以及真空及其所有副作用的关键作用。在将应用程序部署到生产之前,重要的是要理解PostgreSQL的MVCC的后果以及如何有效管理它。

第三章重点介绍索引,并开始讨论查询成本和执行计划。再次,我感谢它始于实际方面,例如创建必要的索引,然后根据需要深入研究基础理论。我强烈建议不要跳过本章。 SQL的非凡功能之一是,您无需指示数据库有关如何访问数据的信息。这是一种声明性的语言,可让您描述所需的结果。但是,这并不意味着您可以忽略对数据库实际检索数据的理解。该书还探讨了PostgreSQL的可扩展性,例如创建操作员,并提供了一个示例。此引言将导致有关PostgreSQL可用的各种索引类型的讨论,包括哈希,GIST,GIN,SP-GIST和BRIN。此外,本书展示了文本搜索功能,因为PostgreSQL不仅提供了必要的功能,而且还使用适当的索引类型来优化它们。

第四章深入研究“高级SQL”。尽管某些主题可能与初次用户无关,但要熟悉它们至关重要,因为它们在解决未来问题方面可能是无价的。如果您要构建用于分析的数据仓库,则本章是必不可少的,因为它涵盖了窗口功能和分区。此外,对于现代OLTP应用程序,强烈建议您了解JSONB,因为它消除了使用单独的以文档为导向的数据库的需求。

随后的章节适合DBA,但使用托管服务时也很重要。 “可观察性和故障排除”解决了“日志文件和系统统计信息”等主题。 “ SQL优化:优化良好性能的查询”为执行计划和分区提供了更多见解。我建议在遇到生产环境中遇到任何问题之前阅读这些章节,因为这不是了解执行计划或划分Terabyte大小的表的理想时机。我感谢用参数调整到末尾的系统调整,因为在微调这些参数之前先了解您的查询很重要。

有关程序语言的下一章,特别是“存储过程”,这些过程在通过有效的应用程序设计最大化性能中起着至关重要的作用。通过直接处理存储的数据,可以实现显着的性能提高。本章还涵盖了触发器,这是由特定SQL事件触发的过程。

存储过程有多种目的,包括封装并向数据库提供安全的API。下一章深入研究了安全性主题,强调了数据库不完全负责存储和处理数据的事实。它还提供了一个强大的安全模型来有效地管理访问权限。

对于负责基础架构的DBA,与Patroni有关的备份和恢复,复制和HA集群的章节至关重要。尽管这些章节提供了全面的概述,但值得注意的是,它们可能不足以确保没有事先DBA经验的安全生产环境。尽管如此,这本书在描述这些领域的PostgreSQL功能方面做得很好。

我想补充一点,当将pg_dump作为备份解决方案提出时,我通常会感到不舒服,因为它主要导出数据,并且不包括整个数据库的结构和交易。同样,将流复制描述为高可用性(HA)解决方案可能会产生误导,因为其恢复机制涉及完全停机时间和数据丢失的可能性。但是,重要的是要注意,这些方面超出了PostgreSQL上一本书的范围,并且可能需要其他不属于PostgreSQL Core的组件。但是,所讨论的章节对这些领域的PostgreSQL功能提供了明确的解释。

有关扩展的一章提供了贡献模块中可用扩展的全面概述,这对于开发人员和DBA可以解决各种问题,这对此非常有帮助。关于故障排除的后续章节是有效管理PostgreSQL数据库并解决可能出现的常见问题的宝贵起点。

最后,关于从其他数据库迁移到PostgreSQL的章节为迁移过程提供了宝贵的想法和注意事项。但是,重要的是要认识到数据库迁移是一个复杂的主题,需要考虑其他因素。虽然本章提供了坚实的基础,但寻求进一步的专业知识和指导,以解决特定的移民或备份问题。

总而言之,“掌握Postgresql 15”提供了对PostgreSQL各个方面的全面覆盖,提供了宝贵的见解和实践示例。这本书成功增强了读者对数据库的理解,作为有效利用PostgreSQL的宝贵资源。尽管某些复杂性可能需要更多的专业知识,但这些章节提供了强大的基础和宝贵的指导。该书的一个特别值得称赞的方面是其结构良好的流程,从开发人员的基本知识开始,并逐渐发展为与数据库管理相关的更复杂的主题。这种方法可确保读者能够建立对PostgreSQL的深入了解,并随后充满信心地深入研究复杂的领域。总体而言,“掌握PostgreSQL 15”是初学者和经验丰富的用户的宝贵伴侣,为他们提供了知识和工具,以有效利用PostgreSQL的力量。