Benötige ich einen räumlichen Index in meiner Datenbank?

8

Ich entwerfe eine Anwendung, die geometrische Formen in einer Datenbank speichern muss. Ich habe das Datenbankverwaltungssystem noch nicht gewählt.

In meiner Anwendung haben alle Datenbankabfragen eine Bounding-Box als Eingabe und als Ausgabe alle Shapes innerhalb dieser Datenbank. Ich weiß, dass Datenbanken mit einem räumlichen Index für diese Art von Anwendung verwendet werden. Aber in meiner Anwendung werden nicht irgendwelche Abfragen vom Typ "Geben Sie mir Objekte in der Nähe von x / y" oder andere komplexere Abfragen, die in einer GIS-Anwendung nützlich sind, sein.

Ich plane, eine Datenbank ohne einen räumlichen Index zu haben und haben Abfragen wie folgt:

%Vor%

Und einen index für die Spalten x (double) und y (double) haben. Solange ich sehen kann, brauche ich nicht wirklich eine Datenbank mit einem räumlichen Index, wie auch immer meine Anwendung in der Nähe dieser Art von Anwendungen ist.

Und selbst wenn ich Abfragen in der Nähe haben möchte, könnte ich um diesen Punkt eine ausreichend große Begrenzungsbox erstellen. Oder führt dies zu schlechten Leistungen?

Brauche ich wirklich eine räumliche Datenbank? Und wann ist ein räumlicher Index erforderlich?

BEARBEITEN: Die Suchanfragen werden tatsächlich etwas weiter fortgeschritten sein als die, die ich oben geschrieben habe. Da ich mich mit geometrischen Formen befasse, werde ich eine Begrenzungsbox eingeben, die mehrere Formen (mit Begrenzungsbox) zurückgibt, die sich in der Box befinden Abfrage. Aber ich denke immer noch, dass ich dies ohne einen räumlichen Index tun kann, nachdem ich alle guten Antworten gelesen habe.

    
Jonas 31.03.2010, 22:30
quelle

4 Antworten

2
  

Brauche ich wirklich eine räumliche Datenbank?

Es sieht so aus, als ob das, was Sie tun, für Ihre Anwendung gut funktioniert.

  

Und auch wenn ich es gerne hätte   in der Nähe von Abfragen, dann könnte ich ein erstellen   groß genug, um das zu begrenzen   Punkt.

Vielleicht möchten Sie stattdessen einen Index für ein Geohash erstellen. Diese Methode wird für die Indexierung geo-räumlicher Punkte in der Google App Engine empfohlen, z. B. wenn die Indexierungsfunktionen eingeschränkt sind. ( Quelle )

  

Und wann ist ein räumlicher Index erforderlich?

Es gibt viele Szenarien, in denen ein räumlicher Index nützlich ist. Zuallererst können räumliche Indizes nicht nur mit Punkten, sondern auch mit Polylinien, Polygonen und anderen Formen arbeiten. Darüber hinaus gibt es, wie Sie bereits erwähnt haben, viele komplexe Abfrageoperationen, die auf räumliche Daten angewendet werden können, bei denen ein geeigneter räumlicher Index erforderlich ist.

    
Daniel Vassallo 31.03.2010, 22:45
quelle
2

Nein, Sie benötigen dafür keinen räumlichen Index.

Räumliche Indizes werden benötigt, um den Abstand zwischen Objekten zu berechnen, um zu sehen, ob ein Punkt innerhalb eines bestimmten Radius von einem anderen Punkt liegt, usw., vor allem, wenn Sie die geografischen Koordinaten berücksichtigen müssen. Südliche Hemisphäre, nördliche Hemisphäre, etc ... alles ändert die Distanz etwas, wenn man die Erdkrümmung berücksichtigen muss.

Wenn Sie immer nach x und y suchen, profitieren Sie von einem Index für beide Elemente zur gleichen Zeit. Also ... kein Index für Spalte x und ein Index für Spalte y, sondern ein Index für Spalte x und y kombiniert.

    
Wolph 31.03.2010 22:38
quelle
2

Um die bestehenden exzellenten Antworten zu ergänzen, könnte die Leistung hier eine Rolle spielen.

Wenn Sie eine räumliche Indexbereichsabfrage simulieren, indem Sie zwei Bereichsabfragen für x- und y-Achsen ausführen und die Schnittmenge der Ergebnisse nehmen, werden Sie zwei Abfragen ausführen, die viel mehr Daten zurückgeben als vor der Schnittmenge benötigt werden. p>

Auf der anderen Seite wird eine solche Abfrage nativ von einem räumlichen Index unterstützt und als solche effizient beantwortet.

Wenn Ihre räumlichen Abfragen der Engpass sind, müssen Sie einen räumlichen Index verwenden.

    
Laurynas Biveinis 07.04.2010 07:56
quelle
1

Wenn Sie nicht über das hinausgehen, was Sie bereits tun, brauchen Sie weder einen räumlichen Index noch ein GIS. Ich würde jedoch sorgfältig überlegen, was Ihre Anforderungen sind und die Chancen, dass die Anwendung wächst, ein GIS-System benötigen. Es ist besser als früher für diesen Übergang zu planen.

GIS bietet Ihnen mehrere Vorteile. Erstens hat ein GIS eine spezielle Formspalte zum Speichern aller benötigten Informationen über eine Geometrie. Er verwaltet räumliche Referenzen, koordiniert Metadaten usw. Ein GIS bietet leistungsfähige Methoden zum Abfragen der Daten basierend auf räumlichen Beziehungen und zum Ändern der Geometrien (Vereinigungen, Extraktionen, Puffer usw.). Es behandelt Punkte, Linien, Polygone usw. Sie können neue Formen aus topologischen Operationen ableiten. Außerdem bieten fast alle GIS-Systeme Mittel zum Rendern der Daten (das hängt wirklich davon ab, welches GIS Sie wählen, aber wenn es vorhanden ist, spart es Ihnen viel Arbeit).

Sie benötigen räumliche Indizes nur, wenn Sie eine echte GIS-Umgebung haben. Wenn Sie eine GIS-Umgebung auswählen, verwenden Sie räumliche Indizes. Sie möchten einfach nicht ohne sie arbeiten.

    
Jordan Parmer 31.03.2010 22:42
quelle