Ich richte gerade eine Neuinstallation von PostGIS 2.0.2 und PostgreSQL 9.1.6 unter Ubuntu ein. Ich bin kürzlich auf einige Informationen gestoßen, die darauf hinweisen, dass die Verwendung des öffentlichen Schemas zum Speichern aller Daten keine gute Idee ist.
Aus diesem Grund habe ich ein Schema namens "data" eingerichtet und mich selbst zum Eigentümer gemacht. Aber ist das eine gute Idee?
Meine Anliegen sind:
- Beim Erstellen dieses neuen Schemas (über pgAdmin III) muss ich möglicherweise nicht nur den Eigentümer festlegen, sondern auch die Einstellungen auf der Registerkarte Berechtigungen berücksichtigen.
- Ich kann möglicherweise nicht die gleichen Vorteile erzielen, wenn ich meine Daten im öffentlichen Schema speichere und alle Daten in einem separaten Schema abspeichere, bevor ich eine Sicherung / Wiederherstellung durchführe (dies würde bei Verwendung von ogr2ogr einige Tastenanschläge einsparen). und
- Es kann zu Problemen kommen, wenn in meinem neuen Datenschema nicht die PostGIS-Standardtabellen und -sichten vorhanden sind (diese befinden sich im öffentlichen Schema in derselben Datenbank).
public
Schema enthalten sind. Bei dieser anderen Frage geht es darum, die PostGIS-Erweiterungsobjekte in einem anderen Schema als zu installierenpublic
. Das sind zwei verschiedene Dinge!Antworten:
Dies wird jetzt auf der offiziellen Website auf einer Seite mit dem Titel PostGIS-Erweiterung in ein anderes Schema verschieben behandelt . Die richtige Methode ist, die Erweiterung zu installieren
public
. Dies ist die einzige Option. Die Erweiterung unterstützt keinen Umzug mehr. Als Nächstes müssen Sie die folgenden Befehle ausführen (von der Site kopiert):quelle
data
Schema nicht die standardmäßigen PostGIS-Tabellen und -Ansichten enthalten sind (sie befinden sich impublic
Schema in derselben Datenbank). Diese Antwort ist nützlich und genau das, wonach ich gesucht habe, hat aber keinen direkten Bezug zur Frage.Wenn Sie eine PostGIS-Datenbank räumlich aktivieren, werden die relevanten Funktionen, die SRS-Tabelle und die Ansichten, wie Sie angeben, im öffentlichen Schema platziert. Dies bedeutet nicht, dass sich alle oder einige Ihrer eigenen räumlichen Tabellen im selben öffentlichen Schema befinden müssen. PostGIS wird weiterhin mit allen räumlichen Daten in den "neuen" Schemata arbeiten.
Tatsächlich platziere ich meine anwendungsspezifischen Tabellen normalerweise in einem separaten Schema. Auf diese Weise können Sie Ihre anwendungsspezifischen Tabellensicherungen und -wiederherstellungen, wenn Sie ein Hauptversionsupgrade auf PostGIS durchführen müssen, als separate Prozedur von derjenigen aufbewahren, die die räumlichen Tools ersetzt.
Also, ich denke, es geht dir gut. Falls Sie dies noch nicht getan haben, empfiehlt es sich, das neue Schema dem Suchpfad hinzuzufügen:
ALTER DATABASE my_db SET search_path = gc, public;
quelle
public
? Daten hinzufügen mit zB.shp2psql
zutest.table
setzt noch Daten inpublic
?Eine der möglichen Organisationsstrategien, die Sie mit Schemas entwickeln können, besteht darin, einem Benutzer die Möglichkeit zu geben, in einem Schema zügellos zu arbeiten, in einem anderen jedoch keine Probleme zu verursachen. Wenn Sie also Schemas auf diese Weise verwenden möchten, können Sie dies auf der Registerkarte Berechtigungen von pgAdmin tun. Dies ist jedoch nicht erforderlich. Wenn Sie also nur dieselben Berechtigungen für mehrere Schemas beibehalten möchten, ist dies in Ordnung.
Basierend auf den Artikeln, mit denen Sie verlinkt haben, besteht das Problem darin, dass beim Sichern von Daten wahrscheinlich Systemtabellen und -beziehungen mit Ihren Daten gemischt werden. Wenn Sie alle Ihre Daten in ein neues Schema verschieben, müssen Sie sich darüber nie wieder Gedanken machen.
Überhaupt keine Probleme. (Beachten Sie zum Beweis, dass Sie public.spatial_ref_sys nicht angeben müssen, wenn Sie die SRS-Tabelle durchsuchen möchten.)
quelle
Ein zusätzlicher Tipp (vielleicht sind Sie schon darauf gestoßen). Möglicherweise möchten Sie das Schema "data" zum Standardsuchpfad des Benutzers hinzufügen. So etwas wie:
In Bezug auf Punkt 2 müssen Sie manchmal wiederherstellen, wenn Sie keinen Zugriff mehr auf die ursprüngliche Datenbank haben. (Dies ist einer der Gründe für Backups ...) Sie haben möglicherweise nicht die Möglichkeit, Ihre Daten in ein separates Schema zu verschieben, wenn Sie sie tatsächlich benötigen.
quelle
Wir verwenden das öffentliche Schema für temporäre Analyse- / Entwicklertabellenergebnisse und greifen dann auf besser organisierte Schemata (Ordner?) Zur dauerhaften Verwendung zurück.
quelle