From 065d6e1e06e97d60443b78ec2ac5da0bb2abb760 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Fri, 13 Jan 2023 13:51:39 +0100 Subject: [PATCH] Talk about K2V specifics --- doc/talks/2023-01-18-tocatta/talk.pdf | Bin 2490671 -> 2497912 bytes doc/talks/2023-01-18-tocatta/talk.tex | 74 +++++++++++++++++++++----- 2 files changed, 62 insertions(+), 12 deletions(-) diff --git a/doc/talks/2023-01-18-tocatta/talk.pdf b/doc/talks/2023-01-18-tocatta/talk.pdf index 3d0c88300e490e3e9b75abec23940d125048aeef..9522f8b073c6666d27773664a293b286cbe7bca3 100644 GIT binary patch delta 35381 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 va8_@hlt=+$VM^oq>XsBUTDu=b_}O>_!OEnxWT Exposes the partitoning mechanism of Garage\\ K2V = partition key / sort key / value (like Dynamo) \vspace{1em} - \item<3-> Coordination-free, CRDT-friendly (inspired by Riak)\\ + \item<3-> Weakly consistent, CRDT-friendly\\ + $\to$ no support for transactions (not ACID) \vspace{1em} \item<4-> Cryptography-friendly: values are binary blobs \end{itemize} \end{frame} +\begin{frame} + \frametitle{Handling concurrent values} + \textbf{How to handle concurrency?} Example: + \vspace{1em} + \begin{enumerate} + \item Client $A$ reads the initial value of a key, $x_0$ + \vspace{1em} + \item<2-> Client $B$ also reads the initial value $x_0$ of that key + \vspace{1em} + \item<3-> Client $A$ modifies $x_0$, and writes a new value $x_1$ + \vspace{1em} + \item<4-> Client $B$ also modifies $x_0$, and writes a new value $x'_1$,\\ + without having a chance to first read $x_1$\\ + \vspace{1em} + $\to$ what should the final state be? + \end{enumerate} +\end{frame} + +\begin{frame} + \frametitle{Handling concurrent values} + \begin{itemize} + \item If we keep only $x_1$ or $x'_1$, we risk \textbf{loosing application data} + \vspace{1.5em} + \item Values are opaque binary blobs, \textbf{K2V cannot resolve conflicts} by itself\\ + (e.g. by implementing a CRDT) + \vspace{1.5em} + \item Solution: \textbf{we keep both!}\\ + $\to$ the value of the key is now $\{x_1, x'_1\}$\\ + $\to$ the client application can decide how to resolve conflicts on the next read + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Keeping track of causality} + How does K2V know that $x_1$ and $x'_1$ are concurrent? + \vspace{1em} + \begin{itemize} + \item $read()$ returns \textbf{a set of values} and an associated \textbf{causality token}\\ + \vspace{1.5em} + \item When calling $write()$, the client sends \textbf{the causality token from its last read} + \vspace{1.5em} + \item The causality token represents the set of values \textbf{already seen by the client}\\ + $\to$ those values are the \textbf{causal past} of the write operation\\ + $\to$ K2V can keep concurrent values and overwrite all ones in the causal past + \vspace{1.5em} + \item Internally, the causality token is \textbf{a vector clock} + \end{itemize} +\end{frame} + \begin{frame} \frametitle{Application: an e-mail storage server} \begin{center} @@ -800,7 +856,7 @@ \begin{frame} \frametitle{A new model for building resilient software} - \begin{itemize} + \begin{enumerate} \item Design a data model suited to K2V\\ {\footnotesize (see Cassandra docs on porting SQL data models to Cassandra)} \vspace{1em} @@ -810,22 +866,16 @@ \item Store opaque binary blobs to provide End-to-End Encryption\\ \end{itemize} \vspace{1em} - \item Store big blobs (files) in S3 + \item Store big blobs (files) using the S3 API \vspace{1em} \item Let Garage manage sharding, replication, failover, etc. - \end{itemize} + \end{enumerate} \end{frame} \begin{frame} \frametitle{Research perspectives} \begin{itemize} - \item Write about Garage's global architecture \emph{(paper in progress)} - \vspace{1em} - \item Measure and improve Garage's performances - \vspace{1em} - \item Discuss the optimal layout algorithm, provide proofs - \vspace{1em} - \item Write about our proposed architecture for (E2EE) apps over K2V+S3 + \item TODO \end{itemize} \end{frame}