Konferenz 2009/Historisierung

Aus FOSSGIS Wiki
Zur Navigation springenZur Suche springen
Referenten
Andreas Neumann Dr. Horst Düster

Der Zeitaspekt wurde und wird in vielen GIS und Datenbanksystemen vernachlässigt, obwohl er neben den Geometrie- und Attributdaten eine ebenso wichtige Komponente im GIS darstellt. Häufig ist es gewünscht, alte Datenstände einer Datenbank zu rekonstruieren. Zudem ist eine Nachvollziehbarkeit nützlich: wer hat wann welche Werte in welchem Record geändert? Zeitliche Analysen greifen ebenfalls auf historische Datenstände zurück. Es wäre nützlich wenn eine zentrale Tabelle alle Zeitstände enthält und Views die Zeitschnitte aus der zentralen Tabelle bei Bedarf erstellen.

Mit geeigneten Datenbankmitteln ist es möglich, sämtliche Änderungen in geographischen Datenbanken automatisch zu historisieren und auszuwerten. Die Präsentation zeigt wie mit einem System von Triggern, Regeln, Views, sowie Stored Procedures eine historisierte Datenbank entsteht. Das System wurde auf Basis Postgis und QuantumGIS umgesetzt, lässt sich aber auch auf andere Systeme übertragen die die nötigen Datenbank-Features zur Verfügung stellen. Umgesetzt wurden 2 verschiedene Ansätze: Beim Repository-Ansatz des Kantons Solothurn werden Daten ausgecheckt, extern bearbeitet und danach inkrementell wieder eingecheckt. Oder es werden Daten von externen Datenproduzenten eingecheckt und historisiert. Der Live-Historisierungsansatz wie er bei der Stadt Uster zum Einsatz kommt geht auf einen Ansatz der Firma Varlena sowie das alte TimeTravel Feature von PostgreSQL zurück. Die Daten werden nicht aus- und wiedereingecheckt, sondern live in PostGIS bearbeitet. Dabei werden Records nie gelöscht oder bei Änderungen überschrieben, sondern archiviert. Es werden wie beim ersten Ansatz 2 Datumsstempel verwendet: create_date (wird beim Anlegen eines Records auf den aktuellen Zeitstempel gesetzt) und archive_date. Das archive_date wird dann gesetzt, wenn der Record durch Löschung oder Aktualisierung obsolet wird. Die jeweils aktuelle Version der Tabelle wird über einen View dargestellt, der diejenigen Records selektiert, die noch kein archive_date gesetzt haben. Ältere Stände können ebenfalls über Views oder SELECT Statements abgeleitet werden.

Die Präsentation zeigt die technische Umsetzung, die Vor- und Nachteile der beiden Ansätze, sowie einige Werkzeuge (PL/pgSQL oder PL/Perl-Funktionen) die das Einrichten von und den Umgang mit historisierten Tabellen erleichtern. Zudem werden die Abgleichungsroutinen des Solothurner Geodatenrepositories vorgestellt, die den Abgleich mit externen Daten ermöglichen. Schließlich werden einige Gedanken formuliert, wie man Änderungen in historisierten Tabellen visualisieren und auswerten könnte.