Kögl, S. (2013). Bi-temporal data in document databases : based on MongoDB [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/159719
Viele aktuelle Anwendungen arbeiten mit zeitbezogenen Daten, wie beispielsweise dem zeitlichen Ablauf von Ereignissen und der zeitlichen Gültigkeit von Informationen. Die meisten Datenbanken bieten jedoch nur mangelnde Unterstützung für solche Anwendungsfälle, wodurch Entwickler dazu gezwungen werden, benötigte Funktionalitäten als Middleware oder direkt in der Anwendung selbst zu implementieren.<br />Bei solchen temporalen Daten wird dabei grundsätzlich zwischen valid-time, also der Zeit in der Information in der modellierten Realität gültig ist, und transaction-time, der Zeit in der die Information in der Datenbank vorhanden ist, unterschieden. Daten die über beide Zeit-Achsen verfügen, werden als bi-temporale Daten bezeichnet.<br />In den vergangenen Jahren hat sich ein Trend zu nicht-relationalen Datenbanken abgezeichnet. Diese versprechen bessere Skalierbarkeit und bessere Performance auf Kosten von ACID-Garantien und fehlender relationaler Integrität. Eine Untergruppe sind die dokumenten-orientierten Datenbanken, die Daten als voneinander unabhängige, strukturierte Dokumente beliebiger Form speichern.<br />In dieser Diplomarbeit wird evaluiert, inwiefern sich die dokumenten-basierte Datenbank MongoDB um Unterstützung für bi-temporale Funktionen erweitern lässt. Erweiterungen für die Datenbank werden vorgestellt, die automatische Verwaltung von historischen Datenbank-Inhalten mittels transaction-time erlauben. Alte Versionen von Dokumenten werden dabei nach Update- bzw Delete-Operationen beibehalten und mit ihrem Gültigkeits-Zeitraum versehen. Die Abfrage-Sprache von MongoDB wird erweitert, um zeitbezogene Aspekte in den Abfragen formulieren zu können.<br />Die Erweiterungen erlauben es Anwendungen mit historischen Daten zu arbeiten, um beispielsweise frühere Ergebnisse anhand der damaligen Daten rekonstruieren zu können, oder um Veränderungen der Daten über die Zeit zu analysieren. Da die Änderungen direkt in MongoDB implementiert sind, erzeugen sie für Anwendungen keine zusätzliche Komplexität oder Abhängigkeiten, wie es beispielsweise durch Middleware der Fall wäre.<br />Sie können außerdem die Möglichkeiten von MongoDB ohne Einschränkungen ausnützen. Die in dieser Diplomarbeit vorgestellten Änderungen sind online als Fork von MongoDB zugänglich. Durch die Verwendung der vorgestellten Erweiterungen ergeben sich jedoch auch Auswirkungen auf den regulären Betrieb von MongoDB-Instanzen, wie beispielsweise der erhöhte Speicherbedarf für historische Daten. Dies kann durch automatisches Löschen von historischen Daten ab einem bestimmten Alter jedoch abgewendet werden. Dadurch, dass MongoDB das Speichern Schema-freier Daten erlaubt, können historische Daten in ihrem ursprünglichen Format erhalten bleiben, auch wenn sich die Schemata aktueller Daten ändern. Die Anwendungen müssen dabei jedoch mit dem Format historischer Daten umgehen können oder diese gegebenenfalls vor der Verarbeitung transformieren.<br />Die Evaluierung zeigt, dass die Konzepte von MongoDB und Dokument-basierten Datenbanken im Allgemeinen für eine Erweiterung um transaction-time-Unterstützung eignen. Daraus resultieren jedoch Einschränkungen, beispielsweise im Bezug auf vorhandene Sharding-Funktionalitäten, die jedoch umgangen werden können. Mögliche Lösungsansätze werden inder Arbeit vorgestellt. Die aktuelle Architektur stellt sich jedoch in einigen Gebieten als problematisch für eine Erweiterung um bi-temporale Funktionen heraus.<br />Temporal Joins und entsprechende Constraints wäre nur mit erheblichem Aufwand umsetzbar. In dieser Diplomarbeit solche Einschränkungen und deren Auswirkungen behandelt.<br />
de
Many current applications are dealing with the temporal order of events and the temporal va-lidity of values in a historical context.<br />However, support for such temporal features is rare in state of the art database systems. This forces developers to implement required functionality in middleware and application layers. Such implementations are repetitive and error prone, and do not make use of the databases' full capabilities.<br />Such temporal components are typically classified into valid-time, the time to which a fact relates in the modeled reality, and transaction-time, the time at which a fact is known in the database.<br />Pieces of information that contain both time axes are called bi-temporal.<br />Recently there has been a trend towards non-relational databases. They aim to offer high scalability and performance mainly at the cost of ACID (Atomicity, Consistency, Isolation, Durability) guarantees and relational integrity. One section of this large group of databases are document-databases which store data as independent documents of arbitrary schemas.<br />This thesis evaluates the suitability of the document-database MongoDB for bi-temporal data and temporal functionality in general. An extension to MongoDB is introduced that enables automatic temporal data management using transaction-time support. Old versions of documents are automatically retained after update and delete operations, and annotated with transaction-time. The structured query language of MongoDB is extended to facilitate temporal aspects in queries.<br />The proposed extensions allow applications to work with historic versions of their data, for example to recreate earlier decisions based on then-current data and to retrieve changes of its data over time. The changes do not introduce the complexity of additional middleware as they are implemented as part of MongoDB and can take full advantage of its capabilities. All changes that are proposed in this thesis have been made available online as a fork of MongoDB.<br /> The proposed implementation has some implications on regular usage and operations of MongoDB, such as increased disk usage for temporal data.<br />This can be mitigated by purging historic documents after a configurable time horizon. Due to the fact that documents in MongoDB do not need to conform to a specific schema, historic data is available in its original form, and does not need to be modified as schemas evolve. This requires the application code to interpret or transform retrieved historic documents before processing.<br />The evaluation shows that the general concepts of MongoDB and document-databases in general are well-suited for transaction-time support. Side effects that limit the possible uses for sharding in combination with transaction-time support could be mitigated by future work proposed in the thesis. MongoDB's suitability for full bi-temporal support is limited in its current state of development. Some operations discussed in recent research, such as temporal joins and constraints, would require extensive changes to core design principles. This thesis will discuss the limitations discovered, as well as their consequences.