\svnInfo $Id$  

Application data caches are an efficient way to scale database-driven
web applications, but they do not integrate well with databases or web
applications. They break the consistency guarantees of the underlying
database, making it impossible for the application to see a consistent
view of the entire system. They provide a minimal interface that
requires the application to provide significant logic for keeping
cached values up to date, and often requires application developers to
understand the entire system in order to correctly manage the cache.

We provide an alternative with \txcache, an application-level cache
that ensures all data seen by an application during a transaction is
consistent, regardless of whether it comes from the cache or
database. \txcache guarantees consistency by modifying the database
server to return validity intervals, tagging data in the cache with
these intervals, and then only retrieving values from the cache that
were valid at a single point in time. By using validity intervals
instead of single timestamps, \txcache can make the best use of cached
data by lazily selecting the timestamp for each transaction.

\txcache provides an easier programming model for
application developers by allowing them to simply designate cacheable
functions, and then have the results of those functions automatically
cached. The \txcache library handles all of the complexity of managing
the cache and maintaining consistency across the system: it selects
keys, finds data in the cache consistent with the current transaction,
and automatically detects and invalidates potentially
changed objects as the database is updated.

Our experiments with the \rubis benchmark show that \txcache is
effective at improving scalability even when the application tolerates
only a small interval of staleness, and that providing transactional
consistency imposes only a minor performance penalty.

%%% Local Variables: 
%%% mode: latex
%%% TeX-PDF-mode: t
%%% TeX-master: "paper.tex"
%%% End: 

% LocalWords:  timestamp invalidations
