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

Dati spaziali in PostgreSQL

Per prima cosa vorrei chiarire gli indici GiST:GiST è in realtà un framework per la creazione di indici per nuovi tipi di dati, non un particolare schema di indicizzazione stesso. Questo framework sembra essere usato per i tipi geometrici forniti con Postgres, ma è anche usato per un indice di somiglianza del testo di corrispondenza del trigramma su colonne di testo standard, e ovviamente è usato dagli schemi di indicizzazione di molti pacchetti esterni, tra i quali possiamo numero PostGIS.

Se i tipi di dati geometrici standard funzioneranno per te o se hai bisogno di PostGIS dipende interamente dalla tua applicazione.

PostGIS memorizza i dati geometrici in una colonna di tipo "geometria"; in questo puoi memorizzare dati più o meno arbitrari (punti, cerchi, poligoni, cosa-hai-te). L'indicizzazione è veloce e piuttosto sofisticata:può fare cose come l'indicizzazione con perdita di dati utilizzando riquadri di delimitazione per forme complesse che altrimenti non sarebbero indicizzabili in alcun modo ragionevole. Sono supportati diversi sistemi di riferimento spaziale, con conversione automatica dei risultati delle query. PostGIS supporta anche i formati OpenGIS standard del settore, che possono aiutare a condividere i dati con altri sistemi.

Al contrario, l'insieme dei tipi geometrici interni e dei loro indici è molto meno sofisticato. Non esiste un vero tipo di geometria "generica"; invece devi scegliere che il tipo di colonna sia un punto, una linea, un cerchio, un poligono o quello che hai; per le combinazioni, probabilmente dovrai utilizzare più colonne. L'indicizzazione non è così buona; non è possibile indicizzare così tanti tipi diversi di forme (sebbene sia possibile aggiungere il supporto del riquadro di delimitazione utilizzando una colonna separata per loro e generando i riquadri di delimitazione manualmente) e gli indici probabilmente non sono così veloci in alcune situazioni. D'altra parte, se i tipi geometrici interni soddisfano le tue esigenze, ottieni il vantaggio che la tua applicazione è più facilmente trasportabile su altri sistemi su cui è installato Postgres ma non PostGIS.

Il mio consiglio sarebbe di giocare con i tipi geometrici interni e vedere come funziona per te; se inizi a riscontrare problemi, prova PostGIS.