sql >> Databasteknik >  >> RDS >> PostgreSQL

Spatial data i PostgreSQL

Först skulle jag vilja förtydliga GiST-index:GiST är faktiskt ett ramverk för att skapa index för nya datatyper, inte något speciellt indexeringsschema i sig. Detta ramverk råkar användas för de geometriska typerna som följer med Postgres, men det används också för ett trigrammatchande textlikhetsindex på vanliga textkolumner, och används naturligtvis av indexeringsscheman för många externa paket, bland vilka vi kan nummer PostGIS.

Om de vanliga geometriska datatyperna kommer att fungera för dig eller om du behöver PostGIS beror helt på din applikation.

PostGIS lagrar geometriska data i en kolumn av typen "geometri"; i detta kan du lagra mer eller mindre godtyckliga data (punkter, cirklar, polygoner, vad-har-du). Indexeringen är snabb och ganska sofistikerad:den kan göra saker som förlustindexering med hjälp av begränsningsrutor för komplexa former som inte är indexerbara på något rimligt sätt annars. Olika rumsliga referenssystem stöds, med automatisk konvertering av sökresultaten. PostGIS stöder även branschstandard OpenGIS-format, vilket kan hjälpa till med att dela data med andra system.

Däremot är uppsättningen av interna geometriska typer och deras index mycket mindre sofistikerade. Det finns ingen riktig "generisk" geometrityp; istället måste du välja att en kolumns typ ska vara en punkt, linje, cirkel, polygon eller vad-har-du; för kombinationer måste du förmodligen använda flera kolumner. Indexeringen är inte lika bra; inte så många olika typer av former kan indexeras (även om du kan lägga till stöd för begränsningsruta genom att använda en separat kolumn för dem och generera begränsningsrutorna manuellt) och indexen är förmodligen inte lika snabba i vissa situationer. Å andra sidan, om de interna geometriska typerna fyller dina behov, får du fördelen att din applikation är lättare att bära till andra system som har Postgres men inte PostGIS installerat.

Mitt råd skulle vara att leka med de interna geometriska typerna och se hur bra det fungerar för dig; om du börjar stöta på problem, prova PostGIS.




  1. Prestanda av SUBSTR på CLOB

  2. Komma igång Justera prestanda i Azure SQL Database

  3. Hur beräknar man ett exponentiellt glidande medelvärde på postgres?

  4. Hur jag får OR till SUM(IF()) MySQL