Bases de données

 

Le stockage et l'interrogation de données sont une composante essentielle de la plupart des applications et système d'informations. Pour manipuler ces données, il existe ce qu'on appelle des systèmes de gestion de bases de données, abrégé souvent en SGDB (en anglais : Database Management Systems ou DBMS). C'est par leur intermédiaire qu'on peut les enregistrer puis les retrouver, les assembler, les transformer ou établir des connexions entre elles.

Le site australien DB-Engines recense, classe et présente les principaux SGDB utilisés dans le monde. Au top 5, on trouve en première place Oracle, suivi d'assez près par MySQL et Microsoft SQL Server, puis PostgreSQL et MongoDB.

Les quatre premiers sont des systèmes dit relationnels, car les données sont stockées sous forme de matrices et manipulées au travers d'opérations issues de l'algèbre relationnelle. Le principal langage de requête utilisé avec ces systèmes est le fameux SQL (Structured Query Language), qui est un langage normalisé par l'ANSI.

Le cinquième système, MongoDB, est d'un genre nouveau dit NoSQL. Cette appellation qui signifiait au départ  “sans SQL” (No SQL) s'est rapidement substituée par “pas seulement avec SQL” (Not Only SQL), désignant différentes approches venant compléter le modèle SQL sans nécessairement le remplacer. De gros acteurs du Web tels que Google, Facebook, Twitter, Amazon, LinkedIn, ont contribué au développement de ces nouveaux outils, en ayant eux-mêmes besoin pour leur propres infrastructures.


Les systèmes relationnels

Ces systèmes, qui ont fait leur preuve et dominent le marché depuis plus de vingt ans, sont parfaitement adaptés à l'informatique de gestion, qui constitue aujourd'hui encore la demande la plus répandue. Dans la plupart des cas, ils répondront parfaitement à vos besoins. Ils présentent l'avantage de disposer d'un vaste panel d'outils de développement et d'exploitation matures et d'utiliser un langage de requête commun standard, le SQL.

Deux des quatre systèmes les plus utilisés sont open-source : MySQL et PostgreSQL. MySQL est très apprécié pour sa simplicité d'utilisation. Il fonctionne sur la plupart des systèmes d'exploitation. Distribué sous une double licence libre et propriétaire, il a fait l'objet de nombreux débats après son rachat par Oracle. Pour garantir son caractère libre, la fondation MariaDB en a créé une version parallèle, entièrement compatible, qui tend à se substituer à lui sur des projets open-source.

PostgreSQL est un système multiplate-forme stable et puissant, aux fonctionnalités comparables à celles d'Oracle. C'est celui qui respecte le plus scrupuleusement les standards SQL. Il est développé et maintenu par un solide communauté, qui lui assure sa pleine indépendance.


Les systèmes NoSQL

Avec l'essor d'internet et l’apparition de grandes plates-formes d'échanges et réseaux sociaux, de nouveaux besoins sont apparus avec des contraintes spécifiques : charge très importante, stockage décentralisé, parallèlisme, risque élevé de panne. De nouvelles approches sont ainsi apparues.

On distingue généralement quatre types de systèmes NoSQL :

  • les systèmes orientés clés/valeurs, volontairement rudimentaire pour une performance accrue (par exemple Redis) - ils sont assez prisés pour des systèmes de stockage de cache ou de sessions distribuées, notamment là où l'intégrité relationnelle des données est non significative ;
  • les systèmes orientés colonnes, très adaptés pour des analyses et traitements massifs de données (par exemple Cassandra) - ils se distinguent des systèmes relationnels par la flexibilité, et notamment la possibilité d'adapter à tout moment leur structure à la nature des données ;
  • les systèmes orientés documents, favorisant le stockage structuré de documents sans imposer un modèle (par exemple MongoDB ou CouchDB). Ils permettent d'effectuer des requêtes sur le contenu des objets et sont particulièrement appréciés dans le milieu du développement des CMS ;
  • les systèmes orientés graphes (par exemple Neo4j), très efficaces pour traiter les problématiques liées aux réseaux (cartographie, relations entre personnes, etc.).

D'une manière générale, ces différents systèmes ont pour but de s'affranchir de la rigidité des modèles relationnels afin de profiter, pour un problème donné, du maximum de performances possible que ce soit en termes de volume de données, de temps de recherche ou de simplicité de distribution des données.
L'emploi d'un système NoSQL doit avant tout résulter d'une analyse précise des besoins et du constat de l'inadéquation du modèle relationnel.


Pour aller plus loin

> SQL.sh : Cours et tutoriels le langage SQL (Vous y trouverez également une brève présentation de différents systèmes de bases de données)

> Manuel officiel de MySQL (traduction en français)

> Site de la communauté francophone de PostgreSQL

> Livre blanc Smile sur NoSQL : Une nouvelle approche du stockage et de la manipulation des données

> Présentation de Cassandra (sur la base des cours de Dominique Revuz et de Etienne Duris, Ingénieurs2000)