The key to rapid access and efficient processing of data is indexing. This is particularly true with geospatial data, which is inherently complex. Informix software provides a built-in, multi-dimensional, highly concurrent, high performance index — the R-tree. We use the R-tree (Region Tree) for both spatial and time data management, and it's by far the fastest in the business.
There are two traditional methods that are used by our competitors to index spatial data:
- The first strategy is to build a spatial index outside the server and store it in blobs. The index can then be accessed from middleware and blobs retrieved as needed. However, regardless of how good the index structure is, the need to retrieve and maintain blobs, containing portions of the index from outside the server, results in substantial I/O overhead and concurrency problems that make it slow and inefficient.
- The second method is space partitioning, where geographic space is partitioned into cells, according to a regular grid or other hierarchical structure (e.g., a quad-tree). Each cell is assigned a number, and each spatial object is then associated with the number(s) of the cells it overlaps. But space is not a linear sequence, and the irregular nature of many spatial features requires complex queries and a large number of false hits that have to be examined. Again, an often slow, inefficient method.
In contrast, R-tree is built into the database kernel and works directly with the extended data types to enable proper geospatial data management. Unlike standard indices, the R-tree does not divide space into a full coverage of non-overlapping, adjacent cells. Instead, it uses data partitioning, where each object is automatically represented by a bounding box that is entirely determined by its own shape. These bounding boxes may overlap and do not need to cover the entire space; there is no need to know in advance the spatial extent of the data.
A query optimizer takes care of selecting the spatial index. This enables simple, high-performance syntax — resulting in queries that are easy to develop, easy to maintain, and yield the fastest response in the business.
|