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...
Main Author: | |
---|---|
Other Authors: | |
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 |