ArangoDB, base de données pour les indécis

Ce logiciel étonnant, utilisable en production, permet de stocker des données en documents, en graphes, en clés-valeurs...

Il convient parfaitement pour une nouvelle entreprise ou un nouveau service dont on ne peut prévoir sur le long terme quel modèle de stockage et d'accès aux données sera le meilleur.
La base de donnée et l'index sont stockés en mémoire. Les données sont dupliquées sur disque dur, mais en cas de redémarrage, l'index doit se reconstruire car il n'existe qu'en mémoire.

C'est un logiciel gratuit sous licence Apache.

ArangoDB

ArangoDB ne supporte pas les modèles suivants:

  1. Relationnel.
    Les données sont stockées en lignes et colonnes dans des tables. Une ligne correspond en général à un produit, un évènement, un client, etc... Les colonnes aux attributs, par exemple nom, adresse, tél. de chaque client. Ajouter, supprimer, modifier une ligne est très rapide, modifier les colonnes plus difficile car il faut mettre à jour toutes les lignes existantes, à défaut de quoi les résultats des requêtes seraient indéfinis.
  2. Tables NoSQL.
    Ce modèle a été créé pour le cas où l'on doit aussi souvent modifier les colonnes que les lignes. Prenons par exemple le cas d'une compagnie aérienne. Dans sa base chaque ligne comprend le numéro de vol, l'avion, le pilote, les passagers. Le nombre de colonne dépend de chaque ligne. Il est facile de modifier les éléments d'un vol, de changer les passagers. Voir pour plus détails NoSQL.

ArangoDB supporte les modèles NoSQL suivants:

  1. Document.
    Le structure de la base n'est pas définie dans les tables, elle se trouve dans les documents qui sont stockés. L'utilisateur met dans chaque document toutes les informations qui se rapportent à un objet, un produit par exemple. Ce document est stocké tel quel dans la base. Les documents ont la même structure, quoi que le contenu puisse différer, et il est codé en JSON (d'autres logiciels utilisent XML ou un autre format).
    On peut exécuter les mêmes requêtes que pour une base relationnelle, mais les opérations doivent être définies dans des scripts.
  2. Graphe.
    Ici non plus, la base n'a plus de table, les données sont stockées dans des noeuds, reliés entre eux par des relations qui représentent les relations entre les objets dans le monde réel.
  3. Clé/Valeur
    Ce type de stockage qui est identique à celui d'un tableau associatif (récursif ou non), est très rapide d'accès. On peut stocker par exemple sur chaque ligne une URL et la page correspondante. C'est une version réduite de la base relationnelle mais qui dispose de tous les attributs fonctionnels comme la réplication, les requêtes combinatoires, etc...

Ces modèles ne coexistent pas dans une même base de donnée ArangoDB, chacun se trouve dans une base, mais on peut les organiser en clusters, sans opération de gestion supplémentaire, et exécuter des requêtes sur l'ensemble des clusters comme s'il s'agissait d'une unique base de donnée.

Pour réaliser des requêtes, sur les trois modèles, le système a son propre langage, AQL (Arango Query Language). La syntaxe est intermédiaire entre SQL et un langage procédural en permet d'inclure des données au format JSON.
Le résultat de chaque requête est un tableau associatif.

On voit qu'un système de stockage de donnée basé sur ArangoDB offre une très grande liberté quand au contenu que l'on pourra enregistrer. Non seulement celui-ci peut combiner des modèles de stockage différents, mais le modèle document lui-même permet de faire évoluer le type de contenu à volonté, pourvu que l'on ajoute les scripts pour y accéder.

Le site ArangoDB donne plus de détails sur les spécifications du logiciel. Précisons qu'il s'agit d'un logiciel stable, utilisé en production par de nombreuses entreprises. Et gratuit.