Mongodb est un soft opensource de DB non relationel (Nosql), orienté document sans schéma écrit en C++. L’avantage des systèmes Nosql sont les hautes performances et les contraintes moindre grâce à la non présence de schéma de données.
J’ai testé il y a quelques mois HBase, mais même si les performances étaient relativement bonnes pour ce que je voulais faire (je le décrirai ici un jour), je voulais me faire une idée sur les autres solutions, et plus particulièrement Mongodb puis peut être plus tard Tokyo Cabinet (ou son successeur Kyoto Cabinet).
Je décris dans cet article comment installer et tester rapidement un serveur mongodb. Dans des articles suivants, je testerai notamment le drivers PHP et comment faire des requêtes de lecture et écriture en base.
Télécharger mongdb:
$ wget http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.3.tgz
$ tar xvfz mongodb-linux-i686-1.4.3.tgz
Lancer le serveur:
$ cd mongodb-linux-i686-1.4.3
$ ./bin/mongod --dbpath /tmp/mongodb/db/
Fri Jun 4 11:07:26 Mongo DB : starting : pid = 28548 port = 27017 dbpath = /tmp/mongodb/db/ master = 0 slave = 0 32-bit
Fri Jun 4 11:07:26 db version v1.4.3, pdfile version 4.5
Fri Jun 4 11:07:26 git version: 47ffbdfd53f46edeb6ff54bbb734783db7abc8ca
[...]
Dans un autre terminal, lancement d’un client et test de quelques requêtes:
On utilise la db « testdb »:
switched to db testdb
Dans laquelle on enregistre quelques valeurs:
{ "name" : "xin", "age" : 24 }
> db.people.save( person )
> person = { 'name': 'patrick', 'age': 28 }
{ "name" : "patrick", "age" : 28 }
> db.people.save( person )
On vérifie le contenu de la base:
{ "_id" : ObjectId("4c08c38bb91ea16336bdddf2"), "name" : "xin", "age" : 24 }
{ "_id" : ObjectId("4c08c394b91ea16336bdddf3"), "name" : "patrick", "age" : 28 }
On voit que mongodb rajoute pour chaque enregistrement un id interne.
On peut limiter le nombre de résultat par requête:
{ "_id" : ObjectId("4c08c38bb91ea16336bdddf2"), "name" : "xin", "age" : 24 }
Ou encore affiner le résultat en cherchant des enregistrements par valeurs spécifiques:
{ "_id" : ObjectId("4c08c38bb91ea16336bdddf2"), "name" : "xin", "age" : 24 }
On pourra enregistrer le résultat des requêtes dans des variables:
> print(tojson(my_result))
{
"_id" : ObjectId("4c08c394b91ea16336bdddf3"),
"name" : "patrick",
"age" : 27
}
Plus d’information sur la page de tutoriel sur mongodb.org.