支持 GIST GSoC 2014 的仅索引扫描

来自 PostgreSQL wiki
跳到导航跳到搜索

简介

该项目将允许对使用 GIST 索引的部分数据类型实施仅索引扫描。目前 GiST 索引没有仅索引扫描功能。仅索引扫描是添加到 Postgres 9.2 的一项主要性能功能。它们允许仅仅通过从索引中检索数据,而不是从表格中检索数据,就满足特定类型的查询。B 树的此功能(自 PostgreSQL-9.2 起实施)允许以显著更快的速度执行特定类型的查询。这是通过减少满足查询所需的 I/O 量来实现的。为使用 GiST 索引的用户自定义数据类型实施此功能将非常有用。

PostgreSQL 社区的优势

更快的 GiST 索引搜索对于许多 PostgreSQL 应用程序(例如,一些 GIS 系统)来说是非常有用的。

可量化结果

加速 GiST 索引搜索。

详情

GiST 类似 B 树,是一种平衡树结构,包含 <键、指针> 对。GiST 键是用户定义类的一个成员,它表示从与键相关联的指针可访问的所有数据项的某个属性。GiST 提供创建具有索引访问方法和可扩展查询集的用户自定义数据类型的能力。GiST 的索引运算符类必须提供七种方法,还有第八种可选方法。

  • 一致
  • 并集
  • 压缩
  • 解压缩
  • 惩罚
  • 挑选分割
  • 相等
  • 距离(可选)

除了现有方法之外,我将创建新的可选方法 fetch()。这样,用户可以创建不丢失地从索引检索数据的方法。在执行搜索查询时,此方法将用于加速数据检索。

待办事项

  • 支持单列索引(已完成)
  • 支持多列索引(已完成)
  • 为内置运算符类别实现获取函数
    • 方框(已完成)
    • 圆(已放弃)
    • 点(已完成)
  • 创建新的回归测试(已完成)
  • 清除 elog 注释以使代码可读(已完成)
  • 更新文档(已完成)

其他目标

  • 为其余模块和运算符类别实现获取函数
    • inet
    • 范围
    • btree_gist
  • 更新相关文档

项目进度

5 月 31 日之前

  • 为这个项目创建一个公共存储库([[1]])
  • 阅读社区对于该项目的讨论
  • 了解一些 PostgreSQL 内部原理
  • 首先,针对单列索引进行大概实现

6 月 1 日至 6 月 30 日(本月我有考试,所以没有多少时间用于项目)

  • 测试单列索引版本
  • 分析将仅索引扫描应用于 GIST 的结果
  • 在社区的帮助下解决架构问题
    • 应用程序多列仅索引扫描所需要的 AM 接口更改
  • 指导老师对进行中的工作进行审查

7 月 1 日至 7 月 31 日

  • 实施第二个原型
    • 支持对多列 GIST 进行仅索引扫描

8 月 1 日至 8 月 20 日

  • 根据社区反馈做出调整
  • 最终指导老师审查

关于提议者

Anastasia Lubennikova

我第一次参加 GSoC,在此竞赛之前没有过任何开源项目的工作经验。这个项目对我来说非常有趣,我希望我的工作能对 PostgreSQL 社区有所帮助。