Mongo DB

Mongo est un système de base de données dans la veine « NoSql ».

L’idée sous-jacente du mouvement NoSql est d’avoir des bases plus adaptées au besoin réel de l’application plutôt que d’utiliser systématiquement une base relationnelle du type Oracle, Mysql ou Sql Serveur. Il existe beaucoup de bases dites « NoSql ». On peut citer Hadoop, Cassandra, Riak, Domino, CouchDb etc…

Nous avons choisi, pour le projet Kiwi Backup, de nous appuyer sur mongodb qui est une base orientée document, gérant des index de type BTree et permettant une réplication simple sur plusieurs serveurs. De plus il existe des librairies d’accès en Php, Python et beaucoup d’autres langages.

Les fonctionnalités de Mongo qui ont fait la différence sont les suivantes :

  • Base orientée Document avec un langage de requête riche
  • ReplicatSet. Un groupe de machines peut se partager la gestion d’une base de données par le biai d’un système de réplication. L’originalité des réplicatSet est dans la capacité automatique de changer de master en cas de problème, sans interruption et totalement automatiquement. Ce qui n’est pas le cas des systèmes de réplication de mysql par exemple.
  • Possibilité de sharding sur une collection ( table ) afin d’absorber des charges importantes tant en volume qu’en nombre de requêtes.
  • Usage de JSON comme interface de commande.
  • Possibilité d’implémenter des requêtes complexes sous forme de MapReduce.

Les points négatifs sont la gestion limitée des systèmes 32 bits et la « gourmandise » en espace disque dans le cas de petites collections.

MongoDb est une corde de plus à notre arc mais ne remplace pas Mysql pour la plupart des projets.