Web application developers partition and replicate their data amongst a set of SQL databases to achieve higher throughput. Given multiple copies of tables partioned different ways, developers must manually select different replicas in their application code. This work presents Dixie, a query planner and executor which automatically executes queries over replicas of partitioned data stored in a set of relational databases, and optimizes for high throughput. The challenge in choosing a good query plan lies in predicting query cost, which Dixie does by balancing row retrieval costs with the overhead of contacting many servers to execute a query. For web workloads, per-query overhead in the servers is a large part of the overall cost of execution. Dixie's cost calculation tends to minimize the number of servers used to satisfy a query, which is essential for minimizing this query overhead and obtaining high throughput; this is in direct contrast to optimizers over large data sets that try to maximize parallelism by parallelizing the execution of a query over all the servers. Dixie automatically takes advantage of the addition or removal of replicas without requiring changes in the application code. We show that Dixie sometimes chooses plans that existing parallel database query optimizers might not consider. For certain queries, Dixie chooses a plan that gives a 2.3x improvement in overall system throughput over a plan which does not take into account perserver query overhead costs. Using table replicas, Dixie provides a throughput improvement of 35% over a naive execution without replicas on an artificial workload generated by Pinax, an open source social web site. Thesis Supervisor: Robert T. Morris Title: Professor
[1]
Michael Bächle,et al.
Ruby on Rails
,
2006,
Softwaretechnik-Trends.
[2]
Michael Stonebraker,et al.
C-Store: A Column-oriented DBMS
,
2005,
VLDB.
[3]
David J. DeWitt,et al.
Read-optimized databases, in depth
,
2008,
Proc. VLDB Endow..
[4]
Donovan A. Schneider,et al.
The Gamma Database Machine Project
,
1990,
IEEE Trans. Knowl. Data Eng..
[5]
Hans-Arno Jacobsen,et al.
PNUTS: Yahoo!'s hosted data serving platform
,
2008,
Proc. VLDB Endow..
[6]
Carlo Curino,et al.
Schism
,
2010,
Proc. VLDB Endow..
[7]
Michael Stonebraker,et al.
H-store: a high-performance, distributed main memory transaction processing system
,
2008,
Proc. VLDB Endow..
[8]
Prashant Malik,et al.
Cassandra: structured storage system on a P2P network
,
2009,
PODC '09.
[9]
Tom W. Keller,et al.
Data placement in Bubba
,
1988,
SIGMOD '88.
[10]
Michael Stonebraker,et al.
The Case for Shared Nothing
,
1985,
HPTS.
[11]
Wilson C. Hsieh,et al.
Bigtable: A Distributed Storage System for Structured Data
,
2006,
TOCS.