Vous utilisez un schéma autre que public dans PostGIS?


21

Je suis en train de configurer une nouvelle installation de PostGIS 2.0.2 et PostgreSQL 9.1.6 sur Ubuntu. J'ai récemment rencontré des informations indiquant que l'utilisation du schéma public pour stocker toutes les données n'est pas une bonne idée.

Pour cette raison, j'ai mis en place un schéma appelé données et me suis fait propriétaire, mais est-ce une bonne idée?

Mes préoccupations sont les suivantes:

  1. En plus de définir le propriétaire, je devrais peut-être faire attention aux choses sur l'onglet Privilèges lors de la création de ce nouveau schéma (via pgAdmin III);
  2. Je ne peux pas obtenir les mêmes avantages en stockant mes données dans le schéma public et en vidant toutes les données dans un schéma séparé avant de faire une sauvegarde / restauration (cela permettrait d'économiser quelques touches lors de l'utilisation d'ogr2ogr); et
  3. Je peux rencontrer des problèmes en ne disposant pas des tables et des vues PostGIS par défaut dans mon nouveau schéma de données (elles se trouvent dans le schéma public de la même base de données).

1
Découvrez la nouvelle réponse ici gis.stackexchange.com/a/270522/6052
Evan Carroll

3
Oui, c'est toujours valable. Le point principal étant qu'il est plus propre, car vous séparez les données utilisateur des données système et des fonctions.
John Powell

Je ne suis pas un utilisateur de PostGIS mais je pense que la meilleure réponse à votre question pourrait être gis.stackexchange.com/a/270522/115, donc si vous êtes d'accord, je vous encourage à y déplacer votre coche Accepter.
PolyGeo

1
Cette question devrait être deux questions. La réponse acceptée ne répond pas à la question telle qu'elle est écrite. Cette question doit être rouverte car elle N'EST PAS un doublon de cette question, qui demande si les objets PostGIS peuvent eux-mêmes fonctionner avec des objets ne figurant pas dans le publicschéma. Cette autre question concerne l'installation des objets d'extension PostGIS dans un schéma autre que public. Ce sont deux choses différentes!
Kenny Evitt

Réponses:


7

Ceci est désormais résolu sur le site officiel dans une page intitulée Déplacer l'extension PostGIS vers un autre schéma . La bonne méthode consiste à installer l'extension dans public. C'est la seule option. L'extension ne prend plus en charge la relocalisation. La prochaine chose est d'exécuter les commandes suivantes, (copiées à partir du site),

UPDATE pg_extension 
  SET extrelocatable = TRUE 
    WHERE extname = 'postgis';

ALTER EXTENSION postgis 
  SET SCHEMA postgis;

2
Cela ne répond PAS à la question telle qu'elle est écrite; ce ne devrait PAS être la réponse acceptée. Il s'agit clairement de "ne pas avoir les tables et les vues PostGIS par défaut dans mon nouveau dataschéma (elles sont dans le publicschéma dans la même base de données)". Cette réponse est utile, et c'est ce que je cherchais, mais elle n'est pas directement liée à la question.
Kenny Evitt

20

Lorsque vous activez spatialement une base de données PostGIS, les fonctions, la table SRS et les vues pertinentes sont placées dans le schéma public, comme vous le dites. Cela ne signifie pas que tout ou partie de vos propres tables spatiales doivent être dans le même schéma public. PostGIS continuera de travailler sur toutes les données spatiales dans les "nouveaux" schémas.

En fait, je place généralement mes tables spécifiques à l'application dans un schéma distinct. De cette façon, si vous devez effectuer une mise à niveau de version majeure vers PostGIS, vous pouvez conserver vos sauvegardes et restaurations de table spécifiques à l'application en tant que procédure distincte de celle qui remplace les outils spatiaux.

Donc, je pense que tu vas bien. Enfin, au cas où vous ne l'auriez pas déjà fait, c'est une bonne idée d'ajouter le nouveau schéma au chemin de recherche:

ALTER DATABASE my_db SET search_path = gc, public;


Merci Martin. Cela signifie-t-il que je peux utiliser des fonctions spatiales sur des tables dans un schéma personnalisé autre que "public"?
alextc

Comment ajoutez-vous des données à un autre schéma, c.-à-d. non public? Ajouter des données avec par exemple. shp2psqlmettre test.tableencore des données public?
knutole

@knutole. Comme je l'ai mentionné, j'ai utilisé ArcCatalog pour importer / nouvelles classes d'entités. Je ne sais pas si vous pouvez utiliser shp2psql pour ajouter des données à un schéma personnalisé autre que public.
alextc

1
Ce devrait être la réponse acceptée.
Kenny Evitt

12
  1. L'une des stratégies organisationnelles possibles que vous pouvez créer avec des schémas est de permettre à un utilisateur de s'exécuter de manière rampante dans un schéma, mais d'être incapable d'encrasser les choses dans un autre. Donc, si vous souhaitez utiliser les schémas de cette manière, cela peut être fait dans l'onglet privilèges de pgAdmin. Mais il n'est pas obligatoire de le faire, donc si vous voulez simplement conserver les mêmes privilèges sur plusieurs schémas, c'est bien.

  2. Sur la base des articles auxquels vous avez lié, le problème de garder tout en public est que lorsque vous sauvegardez des données, vous risquez d'obtenir des tables système et des relations mélangées avec vos données. Si vous déplacez toutes vos données vers un nouveau schéma, vous n'aurez plus jamais à vous en soucier.

  3. Aucun problème. (Pour preuve, notez que vous n'avez pas besoin de spécifier public.spatial_ref_sys lorsque vous souhaitez rechercher la table SRS.)


6

Un conseil supplémentaire (peut-être que vous l'avez déjà rencontré). Vous voudrez probablement ajouter le schéma "data" au chemin de recherche par défaut de l'utilisateur. Quelque chose comme:

ALTER USER <your_user_name> SET search_path=public,data,$USER; 

Concernant votre point 2, vous devez parfois restaurer lorsque vous n'avez plus accès à la base de données d'origine. (C'est l'une des raisons des sauvegardes ...) afin que vous n'ayez pas la possibilité de déplacer vos données vers un schéma distinct lorsque vous en avez réellement besoin.


1

Nous utilisons le schéma public pour les résultats temporaires de la table d'analyse / dev, puis nous allons dans des schémas plus organisés (dossiers?) Pour une utilisation permanente.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.