Repository logo
Log in(current)
Repository logoMIT Open ScholarshipDSpace@MIT
  1. Home
  2. MIT Open Access Articles
  3. MIT Open Access Articles
  4. A program optimization for automatic database result caching

A program optimization for automatic database result caching

Thumbnail Image
Download
Name

A program optimization.pdf

Size

428.55 KB

Format

Adobe PDF

Checksum (MD5)

324dbbca20b8655809e0a941f85e2be7

Author(s)
Scully, Ziv
•
Chlipala, Adam
Date Issued
January 2017
Journal
Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages - POPL 2017
Publisher
Association for Computing Machinery (ACM)
Citation
Scully, Ziv, and Adam Chlipala. “A Program Optimization for Automatic Database Result Caching.” 44th ACM SIGPLAN Symposium on Principles of Programming Languages, Paris, France 15-21 January, 2017. ACM Press, 2017. 271–284.
Version
Author's final manuscript
Abstract
Most popular Web applications rely on persistent databases based on languages like SQL for declarative specification of data models and the operations that read and modify them. As applications scale up in user base, they often face challenges responding quickly enough to the high volume of requests. A common aid is caching of database results in the application's memory space, taking advantage of program-specific knowledge of which caching schemes are sound and useful, embodied in handwritten modifications that make the program less maintainable. These modifications also require nontrivial reasoning about the read-write dependencies across operations. In this paper, we present a compiler optimization that automatically adds sound SQL caching to Web applications coded in the Ur/Web domain-specific functional language, with no modifications required to source code. We use a custom cache implementation that supports concurrent operations without compromising the transactional semantics of the database abstraction. Through experiments with microbenchmarks and production Ur/Web applications, we show that our optimization in many cases enables an easy doubling or more of an application's throughput, requiring nothing more than passing an extra command-line flag to the compiler.
MIT Department
Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science
Terms of Use
Creative Commons Attribution-Noncommercial-Share Alike
http://creativecommons.org/licenses/by-nc-sa/4.0/
Persistent DSpace Link
http://hdl.handle.net/1721.1/110807
DOI of Published Version
https://doi.org/10.1145/3009837.3009891
Repository logo
PrivacyPermissionsAccessibilityContact us
Repository logo
Notify us about copyright concerns.