progress (problème de recherche: DB)
This commit is contained in:
parent
ad1f2eab57
commit
d03ed378b0
10 changed files with 145 additions and 3 deletions
3
2025-04-03-stack/.gitignore
vendored
3
2025-04-03-stack/.gitignore
vendored
|
@ -6,5 +6,6 @@
|
|||
*.log
|
||||
*.fls
|
||||
*.fdb_latexmk
|
||||
*.vrb
|
||||
.auctex-auto
|
||||
*~
|
||||
*~
|
||||
|
|
|
@ -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=$@
|
||||
|
||||
|
|
BIN
2025-04-03-stack/aerogramme-general.png
Normal file
BIN
2025-04-03-stack/aerogramme-general.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 115 KiB |
BIN
2025-04-03-stack/aerogramme.png
Normal file
BIN
2025-04-03-stack/aerogramme.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
BIN
2025-04-03-stack/aerogramme_datatype.drawio.pdf
Normal file
BIN
2025-04-03-stack/aerogramme_datatype.drawio.pdf
Normal file
Binary file not shown.
BIN
2025-04-03-stack/services-bdd-modifies.png
Normal file
BIN
2025-04-03-stack/services-bdd-modifies.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
BIN
2025-04-03-stack/services-bdd.png
Normal file
BIN
2025-04-03-stack/services-bdd.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
BIN
2025-04-03-stack/services-garage.png
Normal file
BIN
2025-04-03-stack/services-garage.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
BIN
2025-04-03-stack/services-oldschool.png
Normal file
BIN
2025-04-03-stack/services-oldschool.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
|
@ -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 :
|
||||
|
|
Loading…
Add table
Reference in a new issue