sql >> Database teknologi >  >> RDS >> PostgreSQL

Geografiske data i PostgreSQL

Først vil jeg gerne præcisere GiST-indekser:GiST er faktisk en ramme til at skabe indekser for nye datatyper, ikke et bestemt indekseringsskema i sig selv. Denne ramme bruges tilfældigvis til de geometriske typer, der følger med Postgres, men den bruges også til et trigram-matchende tekstlighedsindeks på standardtekstkolonner og bruges selvfølgelig af indekseringsskemaerne for mange eksterne pakker, blandt hvilke vi kan nummer PostGIS.

Om de standard geometriske datatyper vil fungere for dig, eller du har brug for PostGIS, afhænger helt af din applikation.

PostGIS gemmer geometriske data i en kolonne af typen "geometri"; i denne kan du gemme mere eller mindre vilkårlige data (punkter, cirkler, polygoner, hvad-har-du). Indekseringen er hurtig og ret sofistikeret:den kan gøre ting som tabsgivende indeksering ved at bruge afgrænsningskasser til komplekse former, der ellers ikke kan indekseres på nogen rimelig måde. Forskellige rumlige referencesystemer understøttes med automatisk konvertering af resultaterne af forespørgsler. PostGIS understøtter også branchestandard OpenGIS-formater, som kan hjælpe med at dele data med andre systemer.

I modsætning hertil er sættet af interne geometriske typer og deres indekser meget mindre sofistikeret. Der er ingen egentlig "generisk" geometritype; i stedet skal du vælge, at en kolonnes type skal være et punkt, linje, cirkel, polygon eller hvad-har-du; for kombinationer skal du sandsynligvis bruge flere kolonner. Indekseringen er ikke så god; ikke så mange forskellige former for former kan indekseres (selvom du kan tilføje afgrænsningsrammeunderstøttelse ved at bruge en separat kolonne til dem og generere afgrænsningsfelterne manuelt), og indekserne er sandsynligvis ikke så hurtige i nogle situationer. På den anden side, hvis de interne geometriske typer opfylder dine behov, opnår du den fordel, at din applikation lettere kan overføres til andre systemer, der har Postgres, men ikke PostGIS installeret.

Mit råd ville være at lege med de interne geometriske typer og se, hvor godt det fungerer for dig; Hvis du begynder at løbe ind i problemer, så prøv PostGIS.




  1. Opdater databasetabel med afkrydsningsfelter, php og mysql

  2. UPSERT til tabel med dynamisk tabelnavn

  3. SQL -- beregning af slutdatoer fra en given startdato med vilkårlige pauser

  4. Sådan fanger du output fra en DBCC-erklæring i en fristende