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
|
*.log
|
||||||
*.fls
|
*.fls
|
||||||
*.fdb_latexmk
|
*.fdb_latexmk
|
||||||
|
*.vrb
|
||||||
.auctex-auto
|
.auctex-auto
|
||||||
*~
|
*~
|
||||||
|
|
|
@ -9,13 +9,18 @@ ASSETS=assets/lattice/lattice1.pdf_tex \
|
||||||
assets/logos/deuxfleurs.pdf \
|
assets/logos/deuxfleurs.pdf \
|
||||||
assets/timeline-22-24.pdf
|
assets/timeline-22-24.pdf
|
||||||
|
|
||||||
talk.pdf: talk.tex $(ASSETS)
|
.PHONY: main
|
||||||
|
main: talk.tex $(ASSETS)
|
||||||
latexmk -pdf talk.tex
|
latexmk -pdf talk.tex
|
||||||
|
|
||||||
.PHONY: loop
|
.PHONY: loop
|
||||||
loop:
|
loop: $(ASSETS)
|
||||||
latexmk -pdf -pvc talk.tex
|
latexmk -pdf -pvc talk.tex
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
latexmk -c
|
||||||
|
|
||||||
%.pdf: %.svg
|
%.pdf: %.svg
|
||||||
inkscape -D -z --file=$^ --export-pdf=$@
|
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}
|
\end{frame}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{frame}
|
||||||
|
\frametitle{Architecture de Garage}
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=.45\linewidth]{assets/garage.drawio.pdf}
|
||||||
|
\end{center}
|
||||||
|
\end{frame}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|
||||||
\begin{frame}
|
\begin{frame}
|
||||||
problèmes de recherche
|
problèmes de recherche
|
||||||
\end{frame}
|
\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 :
|
%% vim: set ts=4 sw=4 tw=0 noet spelllang=en :
|
||||||
|
|
Loading…
Add table
Reference in a new issue