Spatial Partitioning Indexes

Spatial Partitioning Indexes

A partitioning index divides space into non-overlapping regions. In GIS, common partitioning indexes are the quad-tree and kd-tree. PostGIS currently uses a balanced index, the r-tree for all spatial indexing. R-tree's are good general purpose indexes for range data, but since GIS data tends to be accessed in discrete regions, spatial partitioning indexes are a better fit for the work-load.

Early benchmarking of a partitioning approach has shown as much as a several-times improvement in access speed over the r-tree index. Implementing a generic partitioning API, called "SP-GiST" inside PostgreSQL will open the possibility for PostGIS to expose quad-tree and kd-tree indexes to users.

Implementation of this performance enhancement will be in cooperation with the SP-GiST authors (Bartunov and Sigaev) and include the following items:

  • Definition of the final SP-GiST API in consultation with the PostGIS team.
  • Write-ahead log support for SP-GiST indexes.
  • Concurrency and locking support for SP-GiST indexes.
  • Documentation of the SP-GiST code to PostgreSQL standards.
  • Implementation of SP-GiST quad-trees index bindings within PostGIS.

Funding

This roadmap item is currently unfunded.

Add your support for this item by contacting us for a quote and discussion of the particular features you need.

Get a quote now!

Get a quote or read more about core development to add your support to a road-map item.

Other Roadmap Items

More Geodetic Functions

Support for ST_Union(), ST_Difference(), and true/false predicate tests calculated natively on the sphere for the GEOGRAPHY type introduced in PostGIS 1.5.

Extra Dimensionality Support

The support for dimensions higher than X/Y is uneven as currently implemented. Most operations support clean handling of the Z dimension (but a few do not). A reasonable number of important functions do not support handling of the M dimension. This item would fix functions not handling higher dimensions.

Spatial Partitioning Indexes

For GIS data, spatial partitioning indexes (quadtree, kd-tree) have been shown to be significantly faster than more general balanced indexes (r-tree). PostGIS currently uses an r-tree index. Adding SP-GiST (a generic API for partitioned indexes) to PostgreSQL will allow much faster spatial searching in PostGIS.

All roadmap items...