The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural slicing using dependence graphs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Automatic partitioning of a program dependence graph into parallel tasks
IBM Journal of Research and Development
Precise executable interprocedural slices
ACM Letters on Programming Languages and Systems (LOPLAS)
The Coign automatic distributed partitioning system
OSDI '99 Proceedings of the third symposium on Operating systems design and implementation
Automating physical database design in a parallel database
Proceedings of the 2002 ACM SIGMOD international conference on Management of data
ACM Transactions on Computer Systems (TOCS)
Proceedings of a symposium on Compiler optimization
Using Replication and Partitioning to Build Secure Distributed Systems
SP '03 Proceedings of the 2003 IEEE Symposium on Security and Privacy
Integrating vertical and horizontal partitioning into automated physical database design
SIGMOD '04 Proceedings of the 2004 ACM SIGMOD international conference on Management of data
Parameterized object sensitivity for points-to analysis for Java
ACM Transactions on Software Engineering and Methodology (TOSEM)
Tactics-based remote execution for mobile computing
Proceedings of the 1st international conference on Mobile systems, applications and services
LINQ: reconciling object, relations and XML in the .NET framework
Proceedings of the 2006 ACM SIGMOD international conference on Management of data
A unified platform for data driven web applications with automatic client-server partitioning
Proceedings of the 16th international conference on World Wide Web
Secure web applications via automatic partitioning
Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles
Interprocedural query extraction for transparent persistence
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Rewriting procedures for batched bindings
Proceedings of the VLDB Endowment
Wishbone: profile-based partitioning for sensornet applications
NSDI'09 Proceedings of the 6th USENIX symposium on Networked systems design and implementation
The Script-Writer's Dream: How to Write Great SQL in Your Own Language, and Be Sure It Will Succeed
DBPL '09 Proceedings of the 12th International Symposium on Database Programming Languages
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
Links: web programming without tiers
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
MAUI: making smartphones last longer with code offload
Proceedings of the 8th international conference on Mobile systems, applications, and services
Pick your contexts well: understanding object-sensitivity
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CloneCloud: elastic execution between mobile device and cloud
Proceedings of the sixth conference on Computer systems
Odessa: enabling interactive perception applications on mobile devices
MobiSys '11 Proceedings of the 9th international conference on Mobile systems, applications, and services
Program transformations for asynchronous query submission
ICDE '11 Proceedings of the 2011 IEEE 27th International Conference on Data Engineering
Sprint: speculative prefetching of remote data
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
JReq: database queries in imperative languages
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
AppSleuth: a tool for database tuning at the application level
Proceedings of the 16th International Conference on Extending Database Technology
Optimizing database-backed applications with query synthesis
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Speeding up database applications with Pyxis
Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data
Rhea: automatic filtering for unstructured cloud storage
nsdi'13 Proceedings of the 10th USENIX conference on Networked Systems Design and Implementation
Hi-index | 0.00 |
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.