PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Données spatiales dans PostgreSQL

J'aimerais d'abord clarifier les index GiST :GiST est en fait un cadre pour créer des index pour de nouveaux types de données, et non un schéma d'indexation particulier lui-même. Ce cadre est utilisé pour les types géométriques fournis avec Postgres, mais il est également utilisé pour un index de similarité de texte correspondant aux trigrammes sur des colonnes de texte standard, et est bien sûr utilisé par les schémas d'indexation de nombreux packages externes, parmi lesquels nous pouvons numéro PostGIS.

Que les types de données géométriques standard fonctionnent pour vous ou que vous ayez besoin de PostGIS dépend entièrement de votre application.

PostGIS stocke les données géométriques dans une colonne de type "géométrie" ; en cela, vous pouvez stocker des données plus ou moins arbitraires (points, cercles, polygones, qu'avez-vous). L'indexation est rapide et assez sophistiquée :elle peut faire des choses comme l'indexation avec perte en utilisant des boîtes englobantes pour des formes complexes qui ne sont pas indexables de manière raisonnable autrement. Différents systèmes de référence spatiale sont pris en charge, avec conversion automatique des résultats des requêtes. PostGIS prend également en charge les formats OpenGIS standard de l'industrie, ce qui peut faciliter le partage de données avec d'autres systèmes.

En revanche, l'ensemble des types géométriques internes et de leurs index est beaucoup moins sophistiqué. Il n'y a pas de véritable type de géométrie "générique" ; à la place, vous devez choisir que le type d'une colonne soit un point, une ligne, un cercle, un polygone ou quoi que ce soit ; pour les combinaisons, vous devrez probablement utiliser plusieurs colonnes. L'indexation n'est pas aussi bonne; pas autant de types de formes différents peuvent être indexés (bien que vous puissiez ajouter un support de boîte englobante en utilisant une colonne distincte pour eux et en générant les boîtes englobantes manuellement) et les index ne sont probablement pas aussi rapides dans certaines situations. D'un autre côté, si les types géométriques internes répondent à vos besoins, vous avez l'avantage que votre application est plus facilement portable vers d'autres systèmes sur lesquels Postgres mais pas PostGIS sont installés.

Mon conseil serait de jouer avec les types géométriques internes et de voir si cela fonctionne bien pour vous. si vous commencez à rencontrer des problèmes, essayez PostGIS.