\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. % ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++