MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie implementiert MongoDB seine räumlichen Indizes?

Diese Präsentation von Greg Studer (10gen) behandelt die Geodaten-Indizes im Detail:Geospatial Indizierung mit MongoDB .

Die standardmäßige Geodatenimplementierung wie bei MongoDB 2.2 verwendet einen 2-D GeoHash Ansatz mit variabler Genauigkeit:

By default, precision is set to 26 bits which is equivalent to approximately
2 feet given (longitude, latitude) location values and default (-180, 180)
bounds.

Der GeoHash-Ansatz hat Grenzfälle, in denen einige Punkte räumlich nahe beieinander liegen, aber unterschiedliche Hashes haben. MongoDB enthält auch einen Geospatial Haystack Index die speziell auf kleine Regionssuchen in der Nähe von Long/Breitengraden mit einem zusätzlichen indizierten Kriterium abgestimmt ist (z. B.:„finde alle Restaurants im Umkreis von 25 Meilen mit dem Namen ‚foo‘“).

Eine weitere interessante Präsentation von Nicholas Knize (Thermopylae) kontrastiert den aktuellen B-Tree/GeoHash-Ansatz mit R- Bäume . Wenn Sie zu Folie 8 springen, gibt es eine visuelle Erklärung, die hilfreich sein kann:Räumliche RTree-Indizierung mit MongoDB - MongoDC .