diff --git a/doc/talks/2023-01-18-tocatta/Makefile b/doc/talks/2023-01-18-tocatta/Makefile
index a1f76e15..554f7b97 100644
--- a/doc/talks/2023-01-18-tocatta/Makefile
+++ b/doc/talks/2023-01-18-tocatta/Makefile
@@ -12,10 +12,16 @@ ASSETS=assets/consistent_hashing_1.pdf \
assets/lattice6.pdf_tex \
assets/lattice7.pdf_tex \
assets/lattice8.pdf_tex \
- assets/lattice9.pdf_tex \
- assets/latticeA.pdf_tex \
- assets/latticeB.pdf_tex \
- assets/latticeC.pdf_tex \
+ assets/latticeB_1.pdf_tex \
+ assets/latticeB_2.pdf_tex \
+ assets/latticeB_3.pdf_tex \
+ assets/latticeB_4.pdf_tex \
+ assets/latticeB_5.pdf_tex \
+ assets/latticeB_6.pdf_tex \
+ assets/latticeB_7.pdf_tex \
+ assets/latticeB_8.pdf_tex \
+ assets/latticeB_9.pdf_tex \
+ assets/latticeB_10.pdf_tex \
assets/deuxfleurs.pdf
talk.pdf: talk.tex $(ASSETS)
diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice8.svg b/doc/talks/2023-01-18-tocatta/assets/lattice8.svg
index 3bada791..c94a69b2 100644
--- a/doc/talks/2023-01-18-tocatta/assets/lattice8.svg
+++ b/doc/talks/2023-01-18-tocatta/assets/lattice8.svg
@@ -25,8 +25,8 @@
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.4734708"
- inkscape:cx="451.65469"
- inkscape:cy="272.14655"
+ inkscape:cx="399.39712"
+ inkscape:cy="248.39311"
inkscape:window-width="1920"
inkscape:window-height="999"
inkscape:window-x="0"
@@ -433,8 +433,8 @@
$write(\{a\})$:
+ $read()$:
$\sqsupseteq \{a\} \to$ OK
$\not\sqsupseteq \{a\}$
+ y="41.972523">$\sqsupseteq \{a\}$
+
+ $\to \{\}$
return OK
-
-
+ return $\{\}\sqcup\{a\}=\{a\}$
$write(\{b\})$:
- $\not\sqsupseteq \{b\}$
- $\not\sqsupseteq \{b\}$
- $\not\sqsupseteq \{b\}$
+ y="83.577797">$\to \{a\}$
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg
new file mode 100644
index 00000000..92232a1b
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_1.svg
@@ -0,0 +1,576 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg
new file mode 100644
index 00000000..34c24e0d
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_10.svg
@@ -0,0 +1,715 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeC.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg
similarity index 86%
rename from doc/talks/2023-01-18-tocatta/assets/latticeC.svg
rename to doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg
index c815af94..c07cba2b 100644
--- a/doc/talks/2023-01-18-tocatta/assets/latticeC.svg
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_2.svg
@@ -3,12 +3,12 @@
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeA.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg
similarity index 89%
rename from doc/talks/2023-01-18-tocatta/assets/latticeA.svg
rename to doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg
index 400ccff8..198d1f5d 100644
--- a/doc/talks/2023-01-18-tocatta/assets/latticeA.svg
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_3.svg
@@ -3,12 +3,12 @@
diff --git a/doc/talks/2023-01-18-tocatta/assets/lattice9.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg
similarity index 90%
rename from doc/talks/2023-01-18-tocatta/assets/lattice9.svg
rename to doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg
index 8b3c6585..c5f6148d 100644
--- a/doc/talks/2023-01-18-tocatta/assets/lattice9.svg
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_4.svg
@@ -3,12 +3,12 @@
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg
similarity index 88%
rename from doc/talks/2023-01-18-tocatta/assets/latticeB.svg
rename to doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg
index 06725d75..c2b668be 100644
--- a/doc/talks/2023-01-18-tocatta/assets/latticeB.svg
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_5.svg
@@ -3,12 +3,12 @@
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg
new file mode 100644
index 00000000..980823fc
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_6.svg
@@ -0,0 +1,632 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg
new file mode 100644
index 00000000..154c0b7d
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_7.svg
@@ -0,0 +1,654 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg
new file mode 100644
index 00000000..21766415
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_8.svg
@@ -0,0 +1,671 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg b/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg
new file mode 100644
index 00000000..b60f8afe
--- /dev/null
+++ b/doc/talks/2023-01-18-tocatta/assets/latticeB_9.svg
@@ -0,0 +1,699 @@
+
+
+
+
diff --git a/doc/talks/2023-01-18-tocatta/talk.pdf b/doc/talks/2023-01-18-tocatta/talk.pdf
index e4acf75e..6a70fcd7 100644
Binary files a/doc/talks/2023-01-18-tocatta/talk.pdf and b/doc/talks/2023-01-18-tocatta/talk.pdf differ
diff --git a/doc/talks/2023-01-18-tocatta/talk.tex b/doc/talks/2023-01-18-tocatta/talk.tex
index db6d26ef..4c3e4eeb 100644
--- a/doc/talks/2023-01-18-tocatta/talk.tex
+++ b/doc/talks/2023-01-18-tocatta/talk.tex
@@ -49,7 +49,7 @@
\title{Garage}
\subtitle{a lightweight and robust geo-distributed data storage system}
-\author{Deuxfleurs Association}
+\author{Alex Auvolat, Deuxfleurs Association}
\date{Inria, 2023-01-18}
\begin{document}
@@ -59,7 +59,7 @@
\includegraphics[width=.3\linewidth]{../../sticker/Garage.pdf}
\vspace{1em}
- {\large\bf Deuxfleurs Association}
+ {\large\bf Alex Auvolat, Deuxfleurs Association}
\vspace{1em}
\url{https://garagehq.deuxfleurs.fr/}
@@ -68,7 +68,7 @@
\end{frame}
\begin{frame}
- \frametitle{Who we are}
+ \frametitle{Who I am}
\begin{columns}[t]
\begin{column}{.2\textwidth}
\centering
@@ -82,21 +82,6 @@
~
\end{column}
\end{columns}
- \vspace{1em}
-
- \begin{columns}[t]
- \begin{column}{.2\textwidth}
- ~
- \end{column}
- \begin{column}{.6\textwidth}
- \textbf{Quentin Dufour}\\
- PhD; co-founder of Deuxfleurs
- \end{column}
- \begin{column}{.2\textwidth}
- \centering
- \adjincludegraphics[width=.5\linewidth, valign=t]{assets/quentin.jpg}
- \end{column}
- \end{columns}
\vspace{2em}
\begin{columns}[t]
@@ -546,7 +531,7 @@
\vspace{1em}
- \textbf{CRDTs only}\\(conflict-free replicated data types)
+ \textbf{Limited objects such as CRDTs}\\(conflict-free replicated data types)
\vspace{1em}
Part of the complexity is \textbf{reported to the consumer of the API}\\~
@@ -647,6 +632,13 @@
\end{itemize}
\end{frame}
+\begin{frame}
+ \frametitle{Performance gains in practice}
+ \begin{center}
+ \includegraphics[width=.8\linewidth]{assets/endpoint-latency-dc.png}
+ \end{center}
+\end{frame}
+
\begin{frame}
\frametitle{What can we implement without consensus?}
\begin{itemize}
@@ -664,7 +656,7 @@
\end{frame}
\begin{frame}
- \frametitle{Understanding CRDTs and quorums}
+ \frametitle{CRDTs and quorums: read-after-write consistency}
\begin{figure}
\centering
\def\svgwidth{.8\textwidth}
@@ -676,15 +668,11 @@
\only<6>{\import{assets/}{lattice6.pdf_tex}}%
\only<7>{\import{assets/}{lattice7.pdf_tex}}%
\only<8>{\import{assets/}{lattice8.pdf_tex}}%
- \only<9>{\import{assets/}{lattice9.pdf_tex}}%
- \only<10>{\import{assets/}{latticeA.pdf_tex}}%
- \only<11>{\import{assets/}{latticeB.pdf_tex}}%
- \only<12>{\import{assets/}{latticeC.pdf_tex}}%
\end{figure}
\end{frame}
\begin{frame}
- \frametitle{Read-after-write consistency:}
+ \frametitle{CRDTs and quorums: read-after-write consistency}
\textbf{Property:} If node $A$ did an operation $write(x)$ and received an OK response,\\
\hspace{2cm} and node $B$ starts an operation $read()$ after $A$ received OK,\\
\hspace{2cm} then $B$ will read a value $x' \sqsupseteq x$.
@@ -718,7 +706,25 @@
\end{frame}
\begin{frame}
- \frametitle{Monotonical read consistency:}
+ \frametitle{CRDTs and quorums: monotonic-reads consistency}
+ \begin{figure}
+ \centering
+ \def\svgwidth{.8\textwidth}
+ \only<1>{\import{assets/}{latticeB_1.pdf_tex}}%
+ \only<2>{\import{assets/}{latticeB_2.pdf_tex}}%
+ \only<3>{\import{assets/}{latticeB_3.pdf_tex}}%
+ \only<4>{\import{assets/}{latticeB_4.pdf_tex}}%
+ \only<5>{\import{assets/}{latticeB_5.pdf_tex}}%
+ \only<6>{\import{assets/}{latticeB_6.pdf_tex}}%
+ \only<7>{\import{assets/}{latticeB_7.pdf_tex}}%
+ \only<8>{\import{assets/}{latticeB_8.pdf_tex}}%
+ \only<9>{\import{assets/}{latticeB_9.pdf_tex}}%
+ \only<10>{\import{assets/}{latticeB_10.pdf_tex}}%
+ \end{figure}
+\end{frame}
+
+\begin{frame}
+ \frametitle{CRDTs and quorums: monotonic-reads consistency}
\textbf{Property:} If node $A$ did an operation $read()$ and received $x$ as a response,\\
\hspace{2cm} and node $B$ starts an operation $read()$ after $A$ received $x$,\\
\hspace{2cm} then $B$ will read a value $x' \sqsupseteq x$.
@@ -735,14 +741,8 @@
\end{enumerate}
\vspace{1em}
- This makes reads slower in some cases, and is \textbf{not implemented in Garage}.
-\end{frame}
-\begin{frame}
- \frametitle{Performance gains in practice}
- \begin{center}
- \includegraphics[width=.8\linewidth]{assets/endpoint-latency-dc.png}
- \end{center}
+ This makes reads slower in some cases, and is \textbf{not implemented in Garage}.
\end{frame}
\begin{frame}