Automatic Partitioning of Database Applications
Alvin Cheung, Owen Arden, Samuel Madden, Andrew C. Myers
Proceedings of VLDB 2012
Database-backed applications are nearly ubiquitous in our daily lives. Applications that make many small accesses to the
database create two challenges for developers: increased latency and wasted resources from numerous
network round trips. A well-known technique to improve
transactional database application performance is to convert part of the
application into stored procedures that are executed on the database server.
Unfortunately, this conversion is often difficult.
In this paper we describe Pyxis, a system that takes
database-backed applications and automatically partitions their code into two
pieces, one of which is executed on the application server and the other on the
database server. Pyxis profiles the application and server
loads, statically analyzes the code's dependencies, and produces a
partitioning that minimizes the
number of control transfers as well as the amount of data sent during each transfer.
Our experiments using TPC-C and TPC-W show that Pyxis is able to generate
partitions with up to 3x reduction in latency
and 1.7x improvement in throughput when compared to
a traditional non-partitioned implementation and has comparable performance
to that of a custom stored procedure implementation.
We are preparing for a release of the Pyxis source code. If you are interested
please send us an
[MIT news article]