2011-01-02 3 views
30

Je me demande comment fonctionne un index géospatial, tel que celui utilisé par MongoDB. Quelqu'un peut-il expliquer quelle structure de données/algorithme est utilisé en interne? À quelle heure la recherche peut-elle fonctionner?Comment fonctionne un index géospatial?

Les liens vers les ressources seraient également intéressants.

+0

@Will Je pense qu'il serait bon de rouvrir cette question. Il demande en fait des réponses factuelles et la valeur des réponses jusqu'à présent est élevée. En tant que programmeur travaillant sur la technologie d'indexation sur base de données, je pense qu'il serait utile d'entendre plus de réponses :) –

+0

@RobEvans Oui, non. Tout d'abord, comment fonctionne l'indexation géospatiale est un sujet qui ne peut pas être bien répondu dans le format de question/réponse de StackOverflow. Deuxièmement, cette question est à la recherche de liens, ce qui est * spécifiquement * interdit (il y a une raison proche). Si vous êtes confus sur ce qui est ou n'est pas sur le sujet ici, s'il vous plaît visitez [meta]. – Will

+1

@ Je ne suis pas d'accord avec votre affirmation que les géo-index et leurs fonctionnements internes ne sont pas un bon ajustement pour Q & A, mais je suppose que c'est hors sujet. Bien sûr, la question pourrait faire avec une modification pour supprimer la sollicitation de lien et être plus précis, mais cela ne signifie pas qu'il n'a pas de valeur ou un bon ajustement en général. J'en vois un certain nombre qui sont précieux et clos et c'est dommage car la communauté y trouverait certainement de la valeur ... J'ai déjà trouvé de la valeur dans les deux réponses ci-dessous car cela m'a rappelé les géohases comme b-tree clés. –

Répondre

3

Selon cet autre SO question:

L'implémentation actuelle encode les codes de hachage géographiques au sommet standards MongoDB B-arbres. Les résultats des requêtes $ near sont exactes. Une limitation avec ce codage, bien que rapide, est que les recherches de préfixes ne donnent pas de résultats exacts, en particulier autour des zones de bascule. MongoDB résout ce en effectuant une recherche sur le quadrillage après le balayage de préfixe initial pour sélectionner jusqu'à n'importe quel pointeur. Cela garantit généralement que les performances restent très élevées tout en fournissant des résultats corrects.

Questions connexes