↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 8.0 / 7.4
历史版本。 PostgreSQL 7.4 已结束支持。 请参阅 当前版本手册.

50.2. 可扩展性 #

传统上,实现一种新的索引访问方法意味着大量艰难的工作。必须理解数据库的内部机制,例如锁管理器和预写式日志。GiST接口具有很高的抽象层次,只要求访问方法实现者实现被访问数据类型的语义。GiST层本身会处理并发、日志记录以及树结构的搜索。

这种可扩展性不应与其他标准搜索树在可处理数据方面的可扩展性相混淆。例如,PostgreSQL支持可扩展的 B+-树和 R 树。这意味着你可以用PostgreSQL在任意数据类型上构建 B+-树或 R 树。但 B+-树只支持范围谓词(<、=、>),而 R 树只支持 n 维范围查询(包含、被包含、相等)。

因此,如果你用PostgreSQL的 B+-树为一个图像集合建立索引,你只能发出诸如“imagex 是否等于 imagey”、“imagex 是否小于 imagey”以及“imagex 是否大于 imagey”之类的查询。取决于你如何在这种上下文中定义“等于”、“小于”和“大于”,这可能仍然有用。不过,使用基于GiST的索引,你就可以构造出能够提出特定领域问题的查询方式,例如“找出所有马的图片”或者“找出所有曝光过度的图片”。

要让一个 GiST 访问方法运行起来,只需实现七个用户定义的方法,这些方法定义了树中键的行为。当然,要支持复杂查询,这些方法本身也必须足够巧妙;但对于所有标准查询(B+-树、R 树等),它们都相对直接。简而言之,GiST 把可扩展性与通用性、代码复用以及清晰的接口结合了起来。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.