MangoDB

MongoDB est l’une des base de données composant le mouvement NoSQL. L’intérêt de ce genre de bases de données se ressent dans la manipulation de très grosses bases de données où le temps de réponse compte plus que l’intégrité des données.

MongoDB est une base de données orientée document développée en C++, le projet dispose d’une popularité importante et aussi d’utilisateurs comme MTV, Disney Foursquare, Sourceforge….,Par ailleurs la société 10gen, qui a changé son nom par mongodb, entité commerciale en charge du développement de MongoDB fournit des services de support et de formation autour de la solution.

Documents sous MongoDB

MongoDB est une base documentaire dans laquelle les documents sont regroupés sous forme de collections, les collections étant l’équivalent des tables du SQL. Il est possible de représenter chaque document au format JSON (MongoDB utilise une variante binaire plus compacte de JSON nommé BSON pour son stockage interne). Chaque Document dispose d’une clé unique permettant de l’identifier dans la collection.

Architecture 

Mongo  a été conçu pour fonctionner selon plusieurs modes distincts :

  1. Serveur local
  2. Réplication maître/esclave
  3. Réplication via Replica Set ( ensemble de serveurs traitent les mêmes données)
  4. Partitionnement des données selon leur clé via sharding ( partitionnement des données sur plusieurs serveurs).

Serveur local:

Dans ce mode mettant en jeu un seul serveur, un seul processus nommé mongod est utilisé et traite les données issues des requêtes du client.

Réplication maître esclave :

Dans le mode maitre /esclave, on lance deux serveurs mongod nommée maître et esclave.

Les données sont écrites sur le maître uniquement. Le maître réplique l’ensemble des écritures, avec une certaine latence. Le client peut choisir de lire soit sur l’esclave, soit sur le maître. Ce mode présente comme faiblesse majeure sa faible tolérance à la panne, car en cas de panne du serveur maître, l’application cliente est en incapacité d’écrire sur la base. On doit redémarrer manuellement le serveur esclave en mode maître.

Réplication par Replica Set :

Il s’agit d’un mode de réplication plus avancé que le mode maître/esclave, et on peut le mettre en place dés lors que l’on dispose d’au moins trois machines physiques. Il respecte l’infrastructure suivante :

  1. On ajoute n serveurs au Replica Set, Chaque serveur dispose d’une priorité.
  2. Un des serveurs est considéré comme le noeud primaire. On peut voir le rôle de noeud primaire comme celui du serveur maître dans le modèle m/e : il s’agit du noeud qui sera en charge des écritures et des réplications vers les autres serveurs.
  3. En cas de défaillance du noeud primaire, un nouveau noeud au sein du Replica Set est choisi et devient noeud primaire.

Partitionnement des données via sharding:

Les mécanismes de réplication sont intéressants dans la mesure où ils permettent de faire évoluer les performances en lecture sur la base de données. Cependant avec ce système l’écriture de données repose un seul serveur. Pour pallier à ce problème, il est nécessaire d’utiliser la notion de sharding :

  1. Un shard contient un ou plusieurs serveurs : un serveur seul, un couple m/e ou un replica set.
  2. Pour partitionner une collection sur plusieurs shards on définit sur celle-ci une shard key. Il s’agit d’une liste de champs du document qui permettront au système de définir sur quel shard un document doit être stocké.

Deux éléments d’architecture sont ajoutés :

  1. Serveur mongos : il s’agit d’un ou plusieurs serveurs dont le rôle et de router les requêtes du client vers le shard approprié
  2. Configuration mongod : ces serveurs stockent la configuration du sharding et sont utilisés par les autres instances afin d’être en mesure de déterminer sur quel shard les opérations doivent être effectuées.

Nous avons vu une petite introduction à la base de données MongoDB. Nous allons essayer de détailler un peu les choses dans les prochains tutoriels.