progress (problème de recherche: DB)

This commit is contained in:
Armaël Guéneau 2025-04-02 23:11:26 +02:00
parent ad1f2eab57
commit d03ed378b0
10 changed files with 145 additions and 3 deletions

View file

@ -6,5 +6,6 @@
*.log
*.fls
*.fdb_latexmk
*.vrb
.auctex-auto
*~
*~

View file

@ -9,13 +9,18 @@ ASSETS=assets/lattice/lattice1.pdf_tex \
assets/logos/deuxfleurs.pdf \
assets/timeline-22-24.pdf
talk.pdf: talk.tex $(ASSETS)
.PHONY: main
main: talk.tex $(ASSETS)
latexmk -pdf talk.tex
.PHONY: loop
loop:
loop: $(ASSETS)
latexmk -pdf -pvc talk.tex
.PHONY: clean
clean:
latexmk -c
%.pdf: %.svg
inkscape -D -z --file=$^ --export-pdf=$@

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View file

@ -359,10 +359,146 @@ Le design priorise une \textbf{faible empreinte en ressources}, une \textbf{tol
\end{frame}
\begin{frame}
\frametitle{Architecture de Garage}
\begin{center}
\includegraphics[width=.45\linewidth]{assets/garage.drawio.pdf}
\end{center}
\end{frame}
\end{document}
\begin{frame}
problèmes de recherche
\end{frame}
\begin{frame}{Auto-hébergement traditionnel : pas de haute disponibilité}
\begin{center}
\includegraphics[width=0.8\textwidth]{services-oldschool.png}
\end{center}
\end{frame}
\begin{frame}{Deuxfleurs aujourd'hui : haute disponibilité pour le stockage objet}
\begin{center}
\includegraphics[width=0.8\textwidth]{services-garage.png}
\end{center}
\end{frame}
\begin{frame}{Objectif : haute disponibilité pour les données applicatives}
\begin{center}
\only<1>{\includegraphics[width=0.8\textwidth]{services-bdd.png}}%
\only<2>{\includegraphics[width=0.8\textwidth]{services-bdd-modifies.png}}
\end{center}
\end{frame}
\begin{frame}
\textbf{Question : quel modèle de ``base de données distribuée'' veut-on dans ce contexte ?}
\vfill
Contraintes :
\begin{itemize}
\item tolérance aux fautes $\Rightarrow$ réplication et donc questions de cohérence
\item géo-distribution avec latence $\Rightarrow$ cohérence plus faible pour avoir des performances acceptables
\item ressources matérielles limitées $\Rightarrow$ contexte plus ``Edge'' que ``Cloud''
\end{itemize}
\end{frame}
\begin{frame}{}
{\large \textbf{Question plus précise :} quel est le bon compromis entre la facilité
d'implémentation et d'opération de la base de données, et la facilité
d'utilisation par les applications ?}
\bigskip
\begin{itemize}
\item quel modèle de données ? quelles garanties de cohérence ?
\item solutions plutôt à chercher du côté des bases NoSQL (Cassandra, Riak, Scylla, ...)
\end{itemize}
\end{frame}
\begin{frame}{Une étude de cas encore expérimentale}
\vfill
\begin{itemize}
\setlength\itemsep{1em}
\item \textbf{Aerogramme} : service d'hébergement e-mail distribué
%\qquad \includegraphics[width=3em]{assets/logos/aerogramme.pdf}
\item[] \hspace{-1em} implémenté par dessus :
\item \textbf{Garage K2V} : BDD clé-valeur, extension expérimentale de Garage
\end{itemize}
\vfill
\begin{center} \includegraphics[width=0.45\textwidth]{aerogramme.png} \end{center}
\end{frame}
\begin{frame}{Garage K2V}
\begin{itemize}
\setlength\itemsep{1em}
\item API clé-valeur
\begin{itemize}
\item opérations sur clés individuelles et intervalles de clés
\item la structure des clés expose la localisation des données : partition key + sort key
\end{itemize}
\item cohérence faible
\begin{itemize}
\item read-after-write sur une même clé
\item pas de cohérence entre différentes clés
\end{itemize}
\item les écritures concurrentes sont détectées et doivent être résolues par l'application
\end{itemize}
\end{frame}
\begin{frame}{Aerogramme : serveur IMAP par dessus Garage}
\begin{center}
\includegraphics[height=0.9\textheight]{aerogramme-general.png}
\end{center}
\end{frame}
\begin{frame}{Aerogramme : modèle de données}
\begin{center}
\includegraphics[width=.4\linewidth]{aerogramme_datatype.drawio.pdf}
\end{center}
\end{frame}
\begin{frame}{Aerogramme : log d'opérations et cohérence}
Log K2V : historique d'opérations sur une boite mail
\medskip
\begin{itemize}
\item cohérence faible $\Rightarrow$ certaines opérations sont ajoutées de manière concurrente
\item ... on peut donc avoir des \textbf{conflits} entre les noeuds pour numéroter un email !
\item \textbf{astuce} : IMAP permet au serveur de déclarer aux clients qu'il
faut invalider tous les numéros d'email $\Rightarrow$ permet de renuméroter en cas de conflit
\end{itemize}
\vfill\pause
Conclusion : le fonctionnement d'Aerogramme est subtil
\medskip
\begin{itemize}
\item uniquement possible grâce à une fonctionnalité obscure de IMAP
\item requiert probablement également la cohérence ``monotonic read'' dans K2V (TODO)
\item \textbf{opportunité pour un modèle et une preuve formelle}
\end{itemize}
\end{frame}
\end{document}
%% vim: set ts=4 sw=4 tw=0 noet spelllang=en :