sql >> Databáze >  >> RDS >> PostgreSQL

Prostorová data v PostgreSQL

Nejprve bych rád objasnil indexy GiST:GiST je ve skutečnosti rámec pro vytváření indexů pro nové typy dat, nikoli nějaké konkrétní schéma indexování samotné. Tento rámec se shodou okolností používá pro geometrické typy dodávané s Postgres, ale používá se také pro index podobnosti textu s trigramem na standardních textových sloupcích a samozřejmě jej používají indexovací schémata mnoha externích balíčků, mezi nimiž můžeme číslo PostGIS.

Zda vám budou vyhovovat standardní typy geometrických dat nebo budete potřebovat PostGIS, závisí zcela na vaší aplikaci.

PostGIS ukládá geometrická data do sloupce typu "geometrie"; v tomto můžete ukládat víceméně libovolná data (body, kružnice, mnohoúhelníky, co-máte). Indexování je rychlé a poměrně sofistikované:může dělat věci jako ztrátové indexování pomocí ohraničovacích rámečků pro složité tvary, které jinak nelze indexovat žádným rozumným způsobem. Jsou podporovány různé prostorové referenční systémy s automatickým převodem výsledků dotazů. PostGIS také podporuje průmyslové standardní formáty OpenGIS, které mohou pomoci se sdílením dat s jinými systémy.

Naproti tomu sada vnitřních geometrických typů a jejich indexů je mnohem méně sofistikovaná. Neexistuje žádný skutečný "obecný" typ geometrie; místo toho musíte zvolit, aby byl typ sloupce bod, čára, kružnice, mnohoúhelník nebo co-máte; pro kombinace budete pravděpodobně muset použít více sloupců. Indexování není tak dobré; indexovat nelze tolik různých typů tvarů (ačkoli můžete přidat podporu ohraničovacího rámečku tím, že pro ně použijete samostatný sloupec a ohraničovací rámečky vygenerujete ručně) a indexy pravděpodobně nejsou v některých situacích tak rychlé. Na druhou stranu, pokud interní geometrické typy splní vaše potřeby, získáte výhodu, že vaše aplikace je snáze přenositelná na jiné systémy, které mají Postgres, ale nemají nainstalovaný PostGIS.

Moje rada by byla, pohrajte si s vnitřními geometrickými typy a uvidíte, jak dobře vám to bude fungovat; pokud začnete narážet na problémy, vyzkoušejte PostGIS.




  1. Jaký je rozdíl mezi Views a Materialized Views v Oracle?

  2. Mysql 1 náhodný řádek

  3. SQLite vrátil kód chyby 14

  4. Jak získat klíčová pole pro tabulku ve funkci plpgsql?