An important goal for database systems today is to provide elastic scale-out, i.e., the ability to grow and shrink processing capacity on demand, with varying load. Database systems are difficult to scale since they are stateful -- they manage a large database, and it is important when scaling to multiple server machines to provide mechanisms so that these machines can collaboratively manage the database and maintain its consistency. Database partitioning is often used to solve this problem, with each server machine being responsible for one partition. In this paper, we propose that the flexibility provided by a partitioned, shared nothing parallel database system can be exploited to provide elastic scale-out. The idea is to start with a small number of server machines that manage all partitions, and to elastically scale out by dynamically adding new server machines and redistributing database partitions among these servers. We present an implementation of this approach for elastic scale-out using VoltDB -- an in-memory, partitioned, shared nothing parallel database system. Our main goal in this paper is to identify several manageability problems that arise when using this approach for elastic scale-out. The paper presents some of these problems and outlines a research agenda for this area.
展开▼