II.8. Database Versioning

Modern software systems are subject to frequent changes. Developing a new version of an application usually entail changes to the database, as well. The developer specifies an evolution script, which evolves both the schema and the already existing data. After running it, the previous version of the database is not available anymore. However, in modern software landscapes, with multiple applications running in multiple versions simultaneously, this is not acceptable. Hence, we need database versioning. The database, as the single point of truth, continuously supports all schema versions.

Goal of the this topic is to design a database evolution language to specify schema and data transformations in single consistent units where all transformations are invertible. Based on this language, a system should be developed, that is able to translate SQL operations forward and backward along schema transformations to propagate the SQL operations to all existing schema versions, so that all schema versions stay continuously available, significantly simplifying a software developer's life. Further aspects to consider are query optimization of such translated queries as well as the migration process of the physical data and the optimization of the physical data storage given workloads on multiple schema versions.

Main Advisor at Technische Universität Dresden (TUD)
Co-advisor at Aalborg Universitet (AAU)