2.3. Initialisierung der Datenbank

Für die Konfiguration der Datenbank können sie pgAdmin verwenden.

Bemerkung

Mit diesem Link können sie lernen wie man Installation von pgAdmin benutzt.

2.3.1. Vorgehen

In pgAdmin4

  • Verbinden Sie sich mit dem Datenbankserver

  • Erstellen Sie eine neue Datenbank mit UTF8-Kodierung (z. B. „qgep_prod“).

2.3.1.1. Demodaten einrichten

Das aktuelle Datenbank-Schema mit dem Demodatensatz einrichten

Weiter in pgAdmin:

  • Rechtsklick auf die Datenbank qgep_prod.

    • ‚Restore‘ wählen

    • Laden sie ihren Download von qgep_vx.y.z_structure_and_demo_data.backup

    ../_images/demodata-restore.jpg
    • Klicken Sie den Restore Option-Tab und überprüfen Sie die folgenden Optionen

    ../_images/demodata-restore_options.jpg
    • ‚Restore‘ wählen

    • Kontrollieren sie im Fenster Restoring backup on the server, ob der Abschluss erfolgreich war.

Bemerkung

Wenn die Wiederherstellung nicht funktioniert und unter more details etwas steht wie „pg_restore: [archiver] unsupported version (1.13) in file header“ resp. in Deutsch „pg_restore: [Archivierer] nicht unterstützte Version (1.13) im Dateikopf“ updaten sie PostgreSQL, vgl. https://stackoverflow.com/questions/49064209/getting-archiver-unsupported-version-1-13-in-file-header-when-running-pg-r

  • Schliessen sie das Wiederherstellungsfenster

  • Recktsklick auf die Datenbank und ‚Refresh‘ wählen

../_images/demodata-refresh.jpg
  • Vermutlich wollen sie die Datenbank jetzt umbenennen: Rechtsklick auf die Datenbank, klick auf Eigenschaften… und geben sie einen neuen Namen ein.

Es sind jetzt 7 Schemata in der Datenbank vorhanden (public, qgep_import, qgep_network, qgep_swmm, qgep_od, qgep_sys, qgep_vl)

2.3.1.2. Rollen und Zugriffsrechte erstellen

Bemerkung

Die QGEP-Rollen werden in den Dateien https://github.com/QGEP/datamodel/blob/master/12_0_roles.sql (pro Cluster) und https://github.com/QGEP/datamodel/blob/master/12_1_roles.sql (pro Datenbank) definiert. Es wird empfohlen, diese zu verwenden, wenn Sie QGEP in einer Produktionsumgebung einsetzen.

Kopieren Einsetzen und Starten der beiden .sql nacheinander im Query Editor von pgAdmin4 (Tools > Query Tool).

2.3.1.3. Leeres Datenbank-Schema

Es ist auch möglich, ein leeres Datenbank-Schema zu erstellen (ohne Demodatensatz).

Bemerkung

Wenn dieses SQL in einem SQL Abfrage Fenster gestartet wird, gibt es einen Fehler. Es muss ein BAT-File benutzt werden.

  • Benutze eine BAT-Datei wie folgt, um die Datenbank, die Erweiterungen und die Schemata mit Wertelisten zu erzeugen (ersetzen sie x.y.z mit ihrer Versionnummer):

    @echo off
    
    set filename="qgep_vx.y.z_structure_with_value_lists.sql"
    
    if not exist %filename% (
       echo "File %filename% does not exist. Please download the latest datamodel from https://github.com/QGEP/datamodel/releases (structure_with_value_lists.sql) and adjust filename in this batch file."
       PAUSE
       exit -1
    )
    
    set /p db="Please enter the database name? (e.g. qgep_community) "
    set /p password="Please enter the password for user postgres? "
    
    set port=5432
    set PATH=%PATH%;C:\Program Files\PostgreSQL\12\bin
    set PGPASSWORD=%password%
    
    createdb -U postgres -p %port% %db%
    
    psql -U postgres -h localhost -p %port% -d %db% -f %filename%
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA public TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_vl TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_od TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_import TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_swmm TO ""qgep"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA qgep_sys TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_od TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_swmm TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA qgep_import TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA qgep_vl TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA qgep_sys TO ""qgep""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON ALL SEQUENCES IN SCHEMA qgep_od TO ""qgep"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW qgep_od.vw_network_node"
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW qgep_od.vw_network_segment"
    
    PAUSE
    

Bemerkung

Es kann irgendein Datenbankname verwendet werden.

  • Die Berechtigungen definieren für die Schemata qgep_od, qgep_sys, qgep_vl, qgep_network, qgep_import, qgep_swmm wie im Kapitel Rollen und Zugriffsrechte erzeugen beschrieben .

2.3.1.4. Erzeugen des Datenmodells unter Linux

Es ist auch unter LINUX möglich das Datenmodell zu erzeugen

  • Download des Datenmodells

    git clone https://github.com/QGEP/datamodel
    cd datamodel
    
  • Anpassen des Konfigurationsfile „pg_service.conf“ und setzen des Service auf „pg_qgep“, siehe „pg_service-linux“

  • Erzeugen der Datenbank

    psql -U postgres -c 'CREATE DATABASE qgep;'
    
  • Starten Sie das Skript:

    ./scripts/db_setup.sh
    

Wenn Sie eine andere SRID verwenden möchten, dann benutzen Sie die -s option. Zum Beispiel ./scripts/dbsetup.sh -s 2056 für SRID 2056.

Wenn Sie schon ein Datenmodell haben und dieses erneut erzeugen möchten, dann nutzen Sie die -f` Option: ./scripts/db_setup.sh -f.

Sie können die -r Option nutzen, um die folgenden Rollen hinzuzufügen (qgep_viewer, qgep_user, qgep_manager, qgep_sysadmin).

  • Viewer: Kann Tabellen und Views anschauen.

  • User: Kann Daten editieren.

  • Manager: Kann Daten und Wertebereiche bearbeiten.

  • Admin: Datenbank Administrator.