Logo
Section 1 / 3

为什么选择 PostgreSQL

了解 PostgreSQL,并学习 PostgreSQL 中使用的工具和模块。

导入

为什么选择 PostgreSQL

了解 PostgreSQL,并学习 PostgreSQL 中使用的工具和模块。

为什么选择 PostgreSQL?

在学习 SQL 以及如何在现代应用开发中充分发挥这门编程语言潜力的过程中,我们还将了解 SQL 标准在 PostgreSQL 中的实现。选择 PostgreSQL 主要基于以下几个因素:

  • PostgreSQL 是开源软件,采用类似 BSD 的许可证,称为 PostgreSQL 许可证。
  • PostgreSQL 项目完全公开运作,所有讨论、贡献和决策均通过公开邮件列表进行。项目甚至自建全部基础设施,以避免受到任何特定公司的干扰。
  • 尽管 PostgreSQL 由志愿者开发和维护,但如今大多数开发者都是以职业身份参与,既出于雇主利益,也为了应对客户实际问题。
  • PostgreSQL 大约每年发布一个新主版本,遵循“准备就绪即发布”的发布周期。
  • 自其在伯克利时期起,在 #key# Michael Stonebraker:计算机科学家,专注于数据库系统领域。#key# 的指导下,PostgreSQL 的设计允许以非常高级的方式扩展 SQL 功能。
  • PostgreSQL 的文档是目前我们能找到的最佳参考手册之一,无论是否开源。这是因为代码中的补丁只有在同时更新相关文档内容时才会被接受。
  • 尽管新的 NoSQL 系统在操作方式、一致性保证、查询语言和 API 设计上提供了不同的权衡,但我们认为 PostgreSQL 是 #key# YeSQL:YeSQL 意为“你来扩展 SQL”。这是 Kris Jenkins 开发的一个库。#key#。

特别是,PostgreSQL 的可扩展性使其这个已有二十年历史的系统能够持续自我更新。作为一个例证,这种可扩展性设计使 PostgreSQL 成为处理 JSON 数据的最佳平台之一。

PostgreSQL 的可扩展性设计还支持在 SQL 中引入对新型数据类型(甚至来自用户代码)的高级支持,并能集成处理函数、运算符及其索引机制。

我们将看到大量此类集成的实例。其中一个例子出现在即将推出的课程《PostgreSQL 中的无模式设计》中,该课程处理从 JSON 数据集导入的一组卡片(魔法:聚会™):

1select jsonb_pretty(data) 2 from magic.cards 3 where data @> '{ 4 "type":"Enchantment", 5 "artist":"Jim Murray", 6 "colors":["White"] 7 }';

@> 运算符表示“包含”,用于实现 JSON 搜索,若已创建专用的 通用倒排索引(GIN),则可获得性能支持。jsonb_pretty() 函数如其名所示,用于美化输出格式。该查询返回满足指定 type、artist 和 colors 键值条件的 magic.cards 行记录,并以格式化的 JSON 文档形式展示结果。

正是 PostgreSQL 的可扩展性设计,使得我们能够增强 SQL 功能。该查询依然严格遵守 SQL 规则,没有任何技巧;仅在 where 子句中使用函数和运算符进行搜索,而在 select 子句中使用函数构建输出格式。

PostgreSQL contrib 模块

PostgreSQL contrib 模块 是为您的首选关系型数据库管理系统提供的额外功能集合。其中包含多种扩展数据类型,例如 hstore、ltree、earthdistance、intarray 或 trigrams。强烈建议您查看这些模块,并将其部署在生产环境中。

...

生产环境诊断工具

contrib 模块中的一些扩展属于生产环境诊断工具,建议始终保留并随时可用,因为可能随时需要。生产工程团队可以信赖这些组件,且从一开始就集成它们会更加方便。请从开发和生产环境的第一天起就部署 postgresql-contrib。

...

第一部分:前言

一些有用的命令