  We introduce end-to-end support of co-existing schema versions within one
database. While it is state of the art to run multiple versions of a
continuously developed application concurrently, it is hard to do the same for
databases. In order to keep multiple co-existing schema versions alive; which
are all accessing the same data set; developers usually employ handwritten
delta code (e.g. views and triggers in SQL). This delta code is hard to write
and hard to maintain: if a database administrator decides to adapt the physical
table schema, all handwritten delta code needs to be adapted as well, which is
expensive and error-prone in practice. In this paper, we present InVerDa:
developers use the simple bidirectional database evolution language BiDEL,
which carries enough information to generate all delta code automatically.
Without additional effort, new schema versions become immediately accessible
and data changes in any version are visible in all schema versions at the same
time. InVerDa also allows for easily changing the physical table design without
affecting the availability of co-existing schema versions. This greatly
increases robustness (orders of magnitude less lines of code) and allows for
significant performance optimization. A main contribution is the formal
evaluation that each schema version acts like a common full-fledged database
schema independently of the chosen physical table design.
