das vollständige PostNAS-Datenmodell
Das von kvwmap verwendete PostNAS-Datenmodell wurde mit dem Tool xmi2db auf Basis des AAA-Implementierungsmodells erzeugt und bildet das ALKIS-Datenmodell vollständig ab. Bei der Erstellung des alkis-Schemas für kvwmap wurden folgende Konstanten eingestellt:
- GEOMETRY_COLUMN_NAME = wkb_geometry
- GEOMETRY_EPSG_CODE = 25833
- LINESTRING_AS_GEOMETRY = true
- WITH_UUID_OSSP = true
- RENAME_OPTIONAL_FIRST = true
- RENAME_ZEIGT_AUF_EXTERNES = false
- WITH_CODE_LISTS = true
Das in kvwmap verwendete alkis-Schema und die gfs-Datei entspricht der Ausgabe von xmi2db vom 16.11.2017.
Das Datenbankschema heißt "alkis" und wird bei Aktivierung des Plugins ALKIS durch Ausführung von Migrationsdateien bei der Aktualisierung der Datenbank automatisch angelegt. Bei dieser DB-Aktualiserung werden neben dem Basisschema außerdem weitere Tabellen, Sichten und Indizes angelegt, die von kvwmap benötigt werden.
Migration von kvwmap Version 2.7 auf Version 2.8
Wenn ein kvwmap-Server von Version 2.7 auf Version 2.8 umgestellt werden soll und bisher auch schon das alte PostNAS-Schema verwendet wurde, sind mehrere Schritte für die Umstellung notwendig.
Damit die Umstellung eines Produktivsystems möglichst ohne große Ausfallzeit erfolgen kann, wird folgende Vorgehensweise empfohlen:
1. Erstellung einer Testumgebung durch Kopieren der kvwmap-Installation
Die vorhandene kvwmap-Installation wird kopiert. D.h. das kvwmap-Webverzeichnis, die MySQL-DB und die PostGIS-DB. Diese Kopie wird lauffähig gemacht (Anpassen der config.php, Web-Verzeichnis freigeben). In der weiteren Beschreibung wird von folgendem Beispiel ausgegangen:
Produktivsystem | Testsystem | |
Webverzeichnis | kvwmap | kvwmap_test |
MySQL-DB | kvwmapdb | kvwmapdb_test |
PostGIS-DB | kvwmapsp | kvwmapsp_test |
2. In kvwmapsp_test: Umbenennung des Schemas "alkis" in "alkis_alt"
In der Test-DB "kvwmapsp_test" wird das vorhandene Schema "alkis" in "alkis_alt" (oder ähnliches) umbenannt.
3. In kvwmap_test: Update des Quellcodes und der Datenbanken
In "kvwmap_test" wird in den develop-Branch gewechselt (git checkout develop). Dieser Branch beinhaltet die Unterstützung für das vollständige PostNAS-Schema.
Danach werden über die Administratoroberfläche zunächst der Quellcode und danach die Datenbanken aktualisiert. Dadurch wird das neue, vollständige Schema "alkis" in der PostGIS-DB angelegt.
4. In kvwmapsp_test: Einlesen eines neuen Grunddatenbestandes
Das neue Schema "alkis" wird mit einem neuen Grunddatenbestand befüllt. Siehe ALKIS-Daten einlesen.
5. In kvwmapsp_test: Anpassung der Sichten, Funktionen, Regeln, usw.
Alle Sichten, Funktionen, Regeln, usw., die auf das alte Schema "alkis" zugegriffen haben, müssen angepasst werden.
Bei Sichten ist es so, dass diese durch die Umbenennung vom alten Schema "alkis" in "alkis_alt" jetzt auch auf "alkis_alt" zugreifen. Dies muss angepasst werden, so dass sie wieder auf das neue Schema "alkis" zugreifen. Außerdem muss die andere Struktur des neuen Schemas "alkis" berücksichtigt werden.
Auch Triggerfunktionen, Funktionen und Regeln müssen auf die Struktur des neuen Schemas "alkis" angepasst werden.
!!! WICHTIG: Alle diese Anpassungen müssen in einem SQL-Skript festgehalten werden, welches man dann später auf der PostGIS-DB "kvwmapsp" des Produktivsystems ausführen kann. !!!
6. In kvwmapdb_test: Anpassung der Layerdefinitionen
Im Test-System müssen alle Layerdefinitionen, die auf das Schema "alkis" zugreifen, auf die neue Datenstruktur angepasst werden.
!!! WICHTIG: Auch diese Anpassungen müssen in einem SQL-Skript festgehalten werden, welches man dann später auf der MySQL-DB "kvwmapdb" des Produktivsystems ausführen kann. !!!
7. Umstellung des Produktivsystems
Wenn alle Anpassungen in der PostGIS-DB "kvwmapsp_test" und der MySQL-DB "kvwmapdb_test" vorgenommen worden sind und das Testsystem mit dem neuen Schema gründlich getestet wurde, kann das Produktivsystem umgestellt werden.
Dazu werden die Schritte 2 - 4 nun auf dem Produktivsystem in kvmwapsp ausgeführt. Schritt 4 kann auch erfolgen in dem man vom ALKIS-Schema in kvwmapsp_test ein dump ausführt und ein restore in kvwmapsp einspielt oder durch Ausführen der Transaktionsdateien.
Danach werden die beiden Änderungsskripte auf der MySQL-DB "kvwmapdb" und der PostGIS-DB "kvwmapsp" ausgeführt.
Da bei dem restore des alkis-Schemas in kvwmapsp Probleme auftreten können wegen Abhängigkeiten haben wir eine 4 Stufige Lösung:
- Neue Datenbank kvwmapsp_neu anlegen und darin CREATE EXTENSION postgis
- Dann in kvwmapsp_neu alkis Schema aus kvwmapsp_test einlesen mit pg_restore
- Dump aller Schemata außer alkis (-N alkis) von kvwmapsp und einspielen mit pg_restore in kvwmapsp_neu
- Umbenennen kvwmapsp nach kvwmapsp_alt und kvwmapsp_neu nach kvwmapsp