Easy Freshness with Pequod Cache Joins

This thesis presents the design of Pequod, a distributed, application-level Web cache. Web developers store data in application-level caches to avoid expensive operations on persistent storage. While useful for reducing the latency of data access, an application-level cache adds complexity to the ap...

Full description

Bibliographic Details
Main Author: Kate, Bryan Nathan
Other Authors: Seltzer, Margo
Format: Others
Language:en
Published: Harvard University 2015
Subjects:
Online Access:http://nrs.harvard.edu/urn-3:HUL.InstRepos:14226097
id ndltd-harvard.edu-oai-dash.harvard.edu-1-14226097
record_format oai_dc
spelling ndltd-harvard.edu-oai-dash.harvard.edu-1-142260972017-07-27T15:51:30ZEasy Freshness with Pequod Cache JoinsKate, Bryan NathanComputer ScienceThis thesis presents the design of Pequod, a distributed, application-level Web cache. Web developers store data in application-level caches to avoid expensive operations on persistent storage. While useful for reducing the latency of data access, an application-level cache adds complexity to the application. The developer is responsible for keeping the cached data consistent with persistent storage. This consistency task can be difficult and costly, especially when the cached data represent the derived output of a computation. Pequod improves on the state-of-the-art by introducing an abstraction, the cache join, that caches derived data without requiring extensive consistency-related application maintenance. Cache joins provide a mechanism for filtering, joining, and aggregating cached data. Pequod assumes the responsibility for maintaining cache freshness by automatically applying updates to derived data as inputs change over time. This thesis describes how cache joins are defined using a declarative syntax to overlay a relational data model on a key-value store, how cache data are generated on demand and kept fresh with a combination of eager and lazy incremental updates, how Pequod uses the memory and computational resources of multiple machines to grow the cache, and how the correctness of derived data is maintained in the face of eviction. We show through experimentation that cache joins can be used to improve the performance of Web applications that cache derived data. We find that moving computation and maintenance tasks into the cache, where they can often be performed more efficiently, accounts for the majority of the improvement.Seltzer, MargoMorrisett, GregMorris, Robert2015-03-18T13:10:23Z2015-032015-01-1420152015-03-18T13:10:23ZThesis or Dissertationtextapplication/pdfKate, Bryan Nathan. 2015. Easy Freshness with Pequod Cache Joins. Doctoral dissertation, Harvard University, Graduate School of Arts & Sciences.http://nrs.harvard.edu/urn-3:HUL.InstRepos:14226097enopenhttp://nrs.harvard.edu/urn-3:HUL.InstRepos:dash.current.terms-of-use#LAAHarvard University
collection NDLTD
language en
format Others
sources NDLTD
topic Computer Science
spellingShingle Computer Science
Kate, Bryan Nathan
Easy Freshness with Pequod Cache Joins
description This thesis presents the design of Pequod, a distributed, application-level Web cache. Web developers store data in application-level caches to avoid expensive operations on persistent storage. While useful for reducing the latency of data access, an application-level cache adds complexity to the application. The developer is responsible for keeping the cached data consistent with persistent storage. This consistency task can be difficult and costly, especially when the cached data represent the derived output of a computation. Pequod improves on the state-of-the-art by introducing an abstraction, the cache join, that caches derived data without requiring extensive consistency-related application maintenance. Cache joins provide a mechanism for filtering, joining, and aggregating cached data. Pequod assumes the responsibility for maintaining cache freshness by automatically applying updates to derived data as inputs change over time. This thesis describes how cache joins are defined using a declarative syntax to overlay a relational data model on a key-value store, how cache data are generated on demand and kept fresh with a combination of eager and lazy incremental updates, how Pequod uses the memory and computational resources of multiple machines to grow the cache, and how the correctness of derived data is maintained in the face of eviction. We show through experimentation that cache joins can be used to improve the performance of Web applications that cache derived data. We find that moving computation and maintenance tasks into the cache, where they can often be performed more efficiently, accounts for the majority of the improvement.
author2 Seltzer, Margo
author_facet Seltzer, Margo
Kate, Bryan Nathan
author Kate, Bryan Nathan
author_sort Kate, Bryan Nathan
title Easy Freshness with Pequod Cache Joins
title_short Easy Freshness with Pequod Cache Joins
title_full Easy Freshness with Pequod Cache Joins
title_fullStr Easy Freshness with Pequod Cache Joins
title_full_unstemmed Easy Freshness with Pequod Cache Joins
title_sort easy freshness with pequod cache joins
publisher Harvard University
publishDate 2015
url http://nrs.harvard.edu/urn-3:HUL.InstRepos:14226097
work_keys_str_mv AT katebryannathan easyfreshnesswithpequodcachejoins
_version_ 1718507014389235712