\chapter{Bases de données}
\label{chap:bdd} \index{SQL}

% ----------------------------------------------------------------


% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
\section{sqlite} \index{sqlite}

Avantages : un produit éprouvé depuis longtemps, toutes
les données placées dans un fichier unique facilement
transportable, vraiment multi-plateforme.

 
% ----------------------------------------------------------------
\subsection{CLI} \index{cli}

Commandes internes (\textsl{meta-commands})~:

Utilisez \textbf{.help} en premier secours !

% ----------------------------------------------------------------
\subsection{Libreoffice} \index{Libreoffice}

Il peut utiliser des bases en SQLite.

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

\section{GDBM} \index{GDBM}

\begin{quote}
GDBM - The GNU database manager.  Includes dbm and ndbm compatibility.
\end{quote}

Gnu DBM permet de stocker des paires clef/valeur dans un fichier
de données. Chacune de ces clefs doit être unique, et doit être
liée avec une seule valeur\footnote{Peut-on alors parler
de bijection relationnelle ?}.
On peut appeler ça une table associative,
ou en anglais une \textsl{hashtable},
un terme qui rappelle le principe sous-jacent.

% ----------------------------------------------------------------

\subsection{Exemple en Perl} \index{Perl}

Nous allons extraire une donnée du fichier \texttt{/etc/passwd}
et la stocker en utilisant le nom du \textsl{yuser}
comme clef d'accès.
Une tâche pour laquelle Perl est optimal\footnote{krkrkr}
grâce au mécanisme du \texttt{tie} que je songe à
expliquer\footnote{un de ces jours...} dans le chapitre approprié
vers la page \pageref{chap:Perl}. 

\lstinputlisting[language=perl]{code/bdd/mkgdbm.pl}

Vous remarquerez que pour cet exemple, nous avons clef et valeur qui
sont du texte. Alors que DBM est prévu pour stocker des blocs de
binaire. Pour faciliter la récupération de ces chaines de caractères
par un hypothétique\footnote{Oui, je vais l'écrire bientôt.} programme
en C, le programme Perl rajoute un \texttt{'\textbackslash0'}
(fin de chaine) aux deux champs concernés.
% ----------------------------------------------------------------

\subsection{Exemple en C} \index{C}

XXX \index{XXX}

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

\section{Postgresql}

Le poids lourd du domaine.

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

\section{Et le "NoSQL" ?}	\index{nosql} \index{troll}

Pour parler de ça, je préfère attendre Vendredi.

% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
