Automatic Reconfiguration of High Performance Data Management Systems
High performance and high availability data management systems have so far mostly relied upon specialized hardware or proprietary software or both. Even though powerful hardware infrastructures built out of commodity components have become affordable in recent years, software still remains an obstacle to open high-end data management. At the University of Lugano we have recently designed and implemented Sprint, a distributed data management middleware targeting modern multi-tier architectures typical of web applications. Sprint aims to attain high performance and high availability by efficiently orchestrating commodity in-memory database engines (IMDBs) running in clusters of shared-nothing servers. While it offers great potential for adaptation to different application profiles and component failures, dynamically reconfiguring such a complex system is a difficult problem. Briefly, two aspects amount to the challenge: (a) How to ensure that strong consistency will not be violated during reconfiguration? (b) How to determine the right system configuration for a given workload with respect to performance and availability requirements? These are orthogonal, yet complementary issues. The goal of this proposal is to study them in detail, suggest provably correct solutions, integrate them into Sprint, and experimentally analyze their behavior. This project will contribute to the research on the design and implementation of highly efficient and available data-management systems. The main focus of the project will be on reconfiguration for performance and availability. This project will revisit traditional algorithms and seek to understand how their performance and availability are affected by membership and workload changes.