Cloud computing has emerged as a multi-billion dollar industry and as a successful paradigm for web application deployment. Economies-of-scale, elasticity, and pay-per-use pricing have been the biggest promises of cloud. Database management systems (DBMSs) serving these web applications form a critical component of the cloud software stack. These DBMSs must be able to scale-out to clusters of commodity servers to serve thousands of applications and their huge amounts of data. Moreover, to minimize the operating costs such DBMSs must also be elastic, i.e. posses the ability to increase and decrease the cluster size in a live system. This is in addition to serving a variety of applications (i.e. support multitenancy) while being self-managing, fault-tolerant, and highly available.
The overarching goal of my dissertation is to propose abstractions, protocols, and paradigms to design scalable and elastic database management systems that address the unique set of challenges posed by the cloud. My dissertation shows that with careful choice of design and features, it is possible to architect scalable DBMSs that efficiently support transactional semantics to ease application design and elastically adapt to fluctuating operational demands to optimize the operating cost. In this talk, I will outline my work that embodies this principle. In the first part, I will present techniques and system architectures to enable efficient and scalable transaction processing on clusters of commodity servers. In the second part, I will present techniques for on-demand database migration in a live system, a primitive operation critical to support lightweight elasticity as a first class feature in DBMSs. I will conclude the talk with a discussion of possible future directions.