PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Räumliche Daten in PostgreSQL

Zunächst möchte ich die GiST-Indizes klarstellen:GiST ist eigentlich ein Framework zum Erstellen von Indizes für neue Datentypen, kein bestimmtes Indexierungsschema selbst. Dieses Framework wird zufällig für die geometrischen Typen verwendet, die mit Postgres geliefert werden, aber es wird auch für einen Trigram-Matching-Textähnlichkeitsindex für Standardtextspalten verwendet und wird natürlich von den Indexierungsschemata vieler externer Pakete verwendet, unter denen wir können Nummer PostGIS.

Ob die standardmäßigen geometrischen Datentypen für Sie funktionieren oder ob Sie PostGIS benötigen, hängt ganz von Ihrer Anwendung ab.

PostGIS speichert geometrische Daten in einer Spalte vom Typ "Geometrie"; Darin können Sie mehr oder weniger beliebige Daten (Punkte, Kreise, Polygone, was-haben-Sie) speichern. Die Indizierung ist schnell und ziemlich ausgefeilt:Sie kann Dinge wie eine verlustbehaftete Indizierung unter Verwendung von Begrenzungsrahmen für komplexe Formen tun, die ansonsten nicht auf vernünftige Weise indiziert werden können. Unterschiedliche Raumbezugssysteme werden unterstützt, mit automatischer Konvertierung der Abfrageergebnisse. PostGIS unterstützt auch branchenübliche OpenGIS-Formate, die beim Austausch von Daten mit anderen Systemen helfen können.

Im Gegensatz dazu ist der Satz interner geometrischer Typen und ihrer Indizes viel weniger ausgefeilt. Es gibt keinen wirklichen "generischen" Geometrietyp; Stattdessen müssen Sie wählen, ob der Typ einer Spalte ein Punkt, eine Linie, ein Kreis, ein Polygon oder was auch immer sein soll. für Kombinationen müssen Sie wahrscheinlich mehrere Spalten verwenden. Die Indizierung ist nicht so gut; Es können nicht so viele verschiedene Arten von Formen indiziert werden (obwohl Sie Unterstützung für Begrenzungsrahmen hinzufügen könnten, indem Sie eine separate Spalte für sie verwenden und die Begrenzungsrahmen manuell generieren) und die Indizes sind in einigen Situationen wahrscheinlich nicht so schnell. Wenn andererseits die internen geometrischen Typen Ihre Anforderungen erfüllen, haben Sie den Vorteil, dass Ihre Anwendung leichter auf andere Systeme portierbar ist, auf denen Postgres, aber kein PostGIS installiert ist.

Mein Rat wäre, mit den internen geometrischen Typen herumzuspielen und zu sehen, wie gut das für Sie funktioniert; Wenn Sie auf Probleme stoßen, probieren Sie PostGIS aus.