AbstractMany of today’s software applications are backed by database management systems (DBMS), most of them using a relational data model. With increasing system complexity and changing requirements arises the need to adapt and evolve software applications to meet new objectives. In the context of data intensive applications, adaptations may be performed at the database level (e.g., schema changes, data migration) or at the level of the software application (e.g., program code). Changes made at either level often entail changes at the other level in order for the overall system to keep functioning. The synchronization of adaptation at different levels is often referred to as the schema/program co-evolution challenge.
Bidirectional transformations (bx) play an important role in the database/program co-evolution challenge. bx can be used to decouple the evolution of the database schema from the evolution of the program code, for example, by allowing changes to the database structure to be implemented while some programs can remain unchanged. In earlier work, J. Terwilliger introduced the theoretical concept of a Channel as a bx-based mechanism to decouple “virtual databases” used by the application code from the actual representation of the data maintained within the DBMS (a.k.a. “physical schema”).
In this Master’s thesis, we report on considerations and experiments implementing such Channels in practice in the context of a complex real-world application. We focus on Channels implementing Pivot and Unpivot transformations, present different alternatives for generating such Channels and discuss their performance characteristics at scale. We also present a transformational tool to generate these Channels.
|Date of Award||2 Sep 2014|
|Supervisor||Anthony Cleve (Supervisor)|