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

  • Create a new database with UTF8 encoding (e.g. tww_prod).

2.3.1.1. Demodaten einrichten

Das aktuelle Datenbank-Schema mit dem Demodatensatz einrichten

Weiter in pgAdmin:

  • Right click the tww_prod database

    • ‚Restore‘ wählen

    • Load your download of tww_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.

There are now 7 schemas in the database (public, tww_import, tww_network, tww_swmm, tww_od, tww_sys, tww_vl)

2.3.1.2. Rollen und Zugriffsrechte erstellen

Bemerkung

The TWW roles are defined in the https://github.com/TWW/datamodel/blob/master/12_0_roles.sql (per cluster) and https://github.com/TWW/datamodel/blob/master/12_1_roles.sql (per database) files. It is recommended to use these when using TWW in a production environment.

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="tww_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/TWW/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. tww_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 ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_vl TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_od TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_import TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_swmm TO ""tww"""
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON SCHEMA tww_sys TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_od TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_swmm TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tww_import TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA tww_vl TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA tww_sys TO ""tww""";
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT SELECT ON ALL TABLES IN SCHEMA public TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "GRANT USAGE ON ALL SEQUENCES IN SCHEMA tww_od TO ""tww"""
    
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW tww_od.vw_network_node"
    psql -U postgres -h localhost -p %port% -d %db% -c "REFRESH MATERIALIZED VIEW tww_od.vw_network_segment"
    
    PAUSE
    

Bemerkung

Es kann irgendein Datenbankname verwendet werden.

  • Update privileges for the tww_od, tww_sys, tww_vl, tww_network, tww_import, tww_swmm schema as described in the chapter Create minimal roles and access.

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/TWW/datamodel
    cd datamodel
    
  • Setup the pg_service.conf file and add the pg_tww service as in the Linux/macOS pg_service section.

  • Erzeugen der Datenbank

    psql -U postgres -c 'CREATE DATABASE tww;'
    
  • 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.

You can use the -r option to add roles (tww_viewer, tww_user, tww_manager, tww_sysadmin).

  • Viewer: Kann Tabellen und Views anschauen.

  • User: Kann Daten editieren.

  • Manager: Kann Daten und Wertebereiche bearbeiten.

  • Admin: Datenbank Administrator.