Je suis confronté au problème suivant. Je dois migrer de la base de données Oracle vers PostgreSQL + PostGIS. Actuellement, toutes les géométries de tous les types sont stockées dans une table et chaque enregistrement contient un champ "couvercle" qui indique les caractéristiques de la même couche.
Quels sont les avantages et les inconvénients de l'utilisation d'une telle méthode? Dois-je diviser les données en plusieurs tables si je n'ai pas besoin d'utiliser la base de données avec un logiciel tiers? Qu'en est-il des performances des requêtes spatiales, les index m'aideront-ils?
postgis
spatial-database
postgresql
storage
drnextgis
la source
la source
Réponses:
Si vous n'avez pas besoin de l'assistance d'un tiers et que vous n'avez pas besoin de rechercher par type, les conserver dans le même tableau fonctionne très bien. Alternativement, vous pouvez utiliser un modèle d'héritage comme expliqué dans le chapitre 3 de PostGIS en action.
http://www.postgis.us/chapter_03_edition_1
Du point de vue de l'architecture, PostGIS ne se soucie pas vraiment si dans une requête plusieurs types différents sont utilisés. S'il a bien fonctionné pour vous dans Oracle, ce sera comme s'il n'était pas plus performant dans PostGIS.
Il y a 2 raisons de le diviser (et l'une ou l'autre peut être effectuée plus tard si nécessaire): 1) Empêchez les gens d'insérer différents types que vous ne voulez pas comme les collections de géométrie, les chaînes circulaires et ce qui ne l'est pas (que vous pourriez simplement définir manuellement une contrainte )
2) Si vous avez un milliard de points et 1000 polygones, et que vous effectuez beaucoup de points dans les tests de polygones, la vitesse est bien meilleure si lorsque vous interrogez et effectuez votre jointure - c'est contre un milliard - à 1000 table d'enregistrement par opposition à un record de milliards à milliards de table. Ce serait le cas pour toute base de données spatiales je pense (non spécifique à PostGIS). C'est vrai pour toutes les requêtes relationnelles, je suppose aussi (non spécifique aux requêtes spatiales).
la source
Celui-ci me dérange vraiment. Je suppose que c'est parce que j'ai vu trop de fichiers CAO avec des données sur une seule couche, différenciées uniquement par la couleur.
Il s'agit en fait d'un choix entre l'organisation des données par structure ou par attribut .
Compte tenu de ce choix, j'irais toujours pour organiser mes données via la structure de données.
Pour commencer, lors du traitement des données, vous avez un cercle de moins à parcourir (par exemple, sélectionnez a, b, c dans le tableau où id = X au lieu de sélectionner a, b, c dans le tableau où id = X ET couvercle = Y )
Ensuite, considérez pourquoi les bases de données autorisent plusieurs tables - si un format de données offre des structures de données particulières, vous devez penser qu'elles traiteront les données plus efficacement si vous les utilisez.
Mais le gros problème (pour moi) est quand vous voulez déplacer les données vers un autre système. Ensuite, je pense que cela devient un véritable défi, car l'application finale pourrait ne pas utiliser les données de la même manière. J'ai vu tant de gens se décoller dans ce scénario.
Donc - selon mon expérience - vous pourrez utiliser et transférer des données deux fois plus efficacement quand il a un modèle de données décent (plus profond et plus structuré).
la source
lid
valeurs uniques .