\documentclass[14pt]{beamer}
\usepackage{beamerthemeshadow}
\usepackage{graphicx}

\newcommand\T{\rule{0pt}{1.5em}}
\newcommand\B{\rule[-1.2ex]{0pt}{0pt}}

\title[Optimizing Distributed Read-Only Transactions]{\normalsize Optimizing Distributed Read-Only Transactions \\
  Using Multiversion Concurrency}
\author[Dan~Ports \and Austin~Clements \and Irene~Zhang]{\normalsize Dan~Ports \and Austin~Clements \and Irene~Zhang}
\date{\normalsize Tuesday, December 11, 2007}

\begin{document}

\frame{\titlepage}

\begin{frame}{Distributed Transactions}
  \large{Distributed transactions are useful\\for many applications\\}
  \vspace{2em}\pause
  \large{...but slow}
\end{frame}

\begin{frame}{System Architecture}
  \begin{overprint}
    \onslide<1>
    \includegraphics[page=1]{structure.pdf}
    \onslide<2>
    \includegraphics[page=2]{structure.pdf}
    \onslide<3>
    \includegraphics[page=3]{structure.pdf}
  \end{overprint}
\end{frame}

\begin{frame}{Distributed Transactions Can Be Fast}
  \large{Lower isolation levels?}
  \begin{itemize}
  \item\normalsize \emph{e.g.\ }\texttt{READ COMMITTED}, snapshot
    isolation, ...
    \item any hope for correctness? sanity?
  \end{itemize}

  \vspace{1em}\pause
  \large{Our solution:\\weaken \emph{causality} instead of
    \emph{serializability}}
    \begin{itemize}
      \normalsize
    \item All operations transactionally consistent
    \item Read only transactions may run slightly in past
    \end{itemize}
\end{frame}


\begin{frame}{Properties}
  \begin{enumerate}
  \item \textbf{Serializability}
  \item \textbf{$\mathbf{\epsilon}$-Freshness}
  \item r/o transactions \textbf{do not block or abort}
  \item \textbf{Local Causality}
  \end{enumerate}
  \pause
  \begin{alertblock}{\rule[-0.1em]{0pt}{1.1em}Anomaly: acausality}
    A read-only transaction may not see the results of a transaction
    that just committed on another node.
  \end{alertblock}
\end{frame}


\begin{frame}{Performance}
  \begin{overprint}
    \onslide<1>
    \begin{itemize}
    \item Built \texttt{\small ext2}-like filesystem atop block store
    \item Replayed 20,000 operations over 13 minutes\\
      from Berkeley NFS server trace
    \item 116 parallel clients\vspace{0.5em}
    \item Inferred transactions (open-close)
    \item 2 second allowable staleness\vspace{0.5em}
    \item Compared against standard OCC
    \end{itemize}
    \onslide<2>\vfil
    \hspace{-0.25in}
    \begin{tabular}{cccc}
      & \textbf{Plain OCC} & \textbf{Read-Opt.} & \textbf{Improvement}\\
      \hline
      \T\B\textbf{Network} & 15.0 MB & 11.0 MB & 27\%\\
      \T\B\textbf{Aborts} & 392 & 22 & 94\%\\
      \T\textbf{CPU time} & 14.5 min. & 35 sec. & 96\%\\
    \end{tabular}
    \vfil
  \end{overprint}
\end{frame}
\end{document}
