Usi uno schema diverso da quello pubblico in PostGIS?


21

Attualmente sto installando una nuova installazione di PostGIS 2.0.2 e PostgreSQL 9.1.6 su Ubuntu. Recentemente ho trovato alcune informazioni che indicano che l'utilizzo dello schema pubblico per archiviare tutti i dati non è una buona idea.

Per questo motivo, ho impostato uno schema chiamato data e mi sono reso proprietario, ma è una buona idea?

Le mie preoccupazioni sono:

  1. Oltre a impostare il proprietario, potrebbe essere necessario prestare attenzione alle cose nella scheda Privilegi durante la creazione di questo nuovo schema (tramite pgAdmin III);
  2. Potrei non ottenere gli stessi vantaggi archiviando i miei dati nello schema pubblico e scaricando tutti i dati in uno schema separato prima di eseguire un backup / ripristino (questo risparmierebbe alcune battiture quando si utilizza ogr2ogr); e
  3. Potrei incorrere in problemi non avendo le tabelle e le viste PostGIS predefinite nel mio nuovo schema di dati (sono nello schema pubblico all'interno dello stesso database).

1
Scopri la nuova risposta qui gis.stackexchange.com/a/270522/6052
Evan Carroll

3
Sì, è ancora valido. Il punto principale è che è più pulito, poiché separa i dati utente da dati e funzioni di sistema.
John Powell,

Non sono un utente PostGIS ma sospetto che la migliore risposta alla tua domanda ora possa essere gis.stackexchange.com/a/270522/115, quindi se accetti ti incoraggio a spostare il segno di spunta Accetta su di esso.
PolyGeo

1
Questa domanda dovrebbe essere due domande. La risposta accettata non risponde alla domanda come scritta. Questa domanda dovrebbe essere riaperta in quanto NON è un duplicato di questa domanda, che sta chiedendo se gli oggetti PostGIS possano funzionare autonomamente con oggetti non nello publicschema. L'altra domanda riguarda l'installazione degli oggetti estensione PostGIS in uno schema diverso da public. Queste sono due cose diverse!
Kenny Evitt,

Risposte:


7

Questo è ora indirizzato sul sito ufficiale in una pagina intitolata Sposta l'estensione PostGIS su uno schema diverso . Il metodo corretto è installare l'estensione in public. Questa è l'unica opzione. L'estensione non supporta più il trasferimento. Il prossimo passo è eseguire i seguenti comandi ((copiati dal sito),

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

ALTER EXTENSION postgis 
  SET SCHEMA postgis;

2
Questo NON risponde alla domanda come scritto; NON dovrebbe essere la risposta accettata. E ' chiaramente chiedendo di "non avere le tabelle PostGIS predefiniti e viste nel mio nuovo dataschema (sono nel publicschema all'interno dello stesso database)". Questa risposta è utile, ed è quello che stavo cercando, ma non è direttamente correlata alla domanda.
Kenny Evitt,

20

Quando si abilita spazialmente un database PostGIS, le funzioni, la tabella SRS e le viste pertinenti vengono inserite nello schema pubblico, come indicato. Ciò non significa che tutte o alcune delle tue tabelle spaziali debbano essere nello stesso schema pubblico. PostGIS continuerà a funzionare su tutti i dati spaziali nei "nuovi" schemi.

In effetti, di solito inserisco le mie tabelle specifiche dell'applicazione in uno schema separato. In questo modo, se è necessario eseguire un aggiornamento della versione principale a PostGIS, è possibile mantenere i backup e i ripristini della tabella specifici dell'applicazione come procedura separata da quella che sostituisce gli strumenti spaziali.

Quindi, penso che tu stia bene. Infine, se non l'hai già fatto, è una buona idea aggiungere il nuovo schema al percorso di ricerca:

ALTER DATABASE my_db SET search_path = gc, public;


Grazie Martin. Significa che sono in grado di utilizzare le funzioni spaziali sulle tabelle in uno schema personalizzato diverso da "pubblico"?
alextc,

Come si aggiungono i dati a un altro schema, ad es. no public? Aggiunta di dati con es. shp2psqla test.tablemette ancora i dati in public?
knutole,

@knutole. Come ho già detto, ho usato ArcCatalog per importare / nuove classi di funzioni. Non sono sicuro se è possibile utilizzare shp2psql per aggiungere dati a uno schema personalizzato diverso da quello pubblico.
alextc,

1
Questa dovrebbe essere la risposta accettata.
Kenny Evitt,

12
  1. Una delle possibili strategie organizzative che puoi costruire con gli schemi è quella di consentire a un utente di correre sfrenato in uno schema, ma di non essere in grado di rovinare tutto in un altro. Quindi, se si desidera utilizzare gli schemi in questo modo, è possibile farlo nella scheda dei privilegi di pgAdmin. Ma non è necessario che tu lo faccia, quindi se vuoi solo mantenere gli stessi privilegi su più schemi, va bene.

  2. Sulla base degli articoli a cui ti sei collegato, il problema di mantenere tutto in pubblico è che quando scarichi dati, è probabile che le tabelle di sistema e le relazioni si mescolino ai tuoi dati. Se sposti tutti i tuoi dati in un nuovo schema, non dovrai più preoccupartene.

  3. Nessun problema. (Per la prova, nota che non devi specificare public.spatial_ref_sys quando vuoi cercare nella tabella SRS.)


6

Un altro suggerimento (forse ti sei già imbattuto in questo). Probabilmente vorrai aggiungere lo schema "dati" al percorso di ricerca predefinito dell'utente. Qualcosa di simile a:

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

Per quanto riguarda il punto 2, a volte è necessario ripristinare quando non si ha più accesso al DB originale. (Questo è uno dei motivi per i backup ...) quindi potresti non avere la possibilità di spostare i tuoi dati in uno schema separato quando ne hai effettivamente bisogno.


1

Usiamo lo schema pubblico per i risultati della tabella di analisi / sviluppo temporanea, quindi andiamo in schemi più organizzati (cartelle?) Per un uso permanente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.