Le nom MongoDB est dérivé de Humongo nous DB.
Il s'agit d'une base de données NoSQL open source. MongoDB est développé et supporté commercialement par la société 10gen.
MongoDB se concentre sur l'évolutivité et les performances. MongoDB est une base de données orientée document sans schéma. Cela stocke les données sous forme d'objets JSON. Contrairement à la base de données SQL traditionnelle, vous n'avez pas besoin de définir un schéma. Le schéma est intégré dans le document de données lui-même, ce qui vous permet de modifier facilement le schéma à tout moment sans vous soucier de modifier l'un des documents précédents qui sont chargés. Des performances et une évolutivité élevées sont possibles car il n'y a pas de jointures ni de transactions multi-documents effectuées sur MongoDB. Cela permet également une réplication sur les serveurs avec la possibilité de basculer automatiquement. Vous pouvez également évoluer sur plusieurs serveurs pour une haute disponibilité.
Cet article est la 1ère partie d'une série d'articles sur MongoDB.
Installer MongoDB en utilisant YUM
L'installation de MongoDB à l'aide de yum est assez simple.
Configurer le référentiel Yum 10gen
Tout d'abord, ajoutez le référentiel 10gen à votre yum comme indiqué ci-dessous.
# vi /etc/yum.repos.d/10gen.repo [10gen] name=10gen Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64 gpgcheck=0 enabled=1
Remarque :ce qui précède concerne un système 64 bits. Si vous utilisez un système 32 bits, faites pointer la baseurl dans le fichier ci-dessus vers http://downloads-distro.mongodb.org/repo/redhat/os/i686
Maintenant, exécutez "yum info" pour afficher les packages mongo-10gen et mongo-10gen-server.
# yum info mongo-10gen Name : mongo-10gen Arch : x86_64 Version : 2.2.2 Release : mongodb_1 Size : 43 M Repo : 10gen Summary : mongo client shell and tools URL : http://www.mongodb.org License : AGPL 3.0 # yum info mongo-10gen-server Name : mongo-10gen-server Arch : x86_64 Version : 2.2.2 Release : mongodb_1 Size : 6.7 M Repo : 10gen Summary : mongo server, sharding server, and support scripts URL : http://www.mongodb.org License : AGPL 3.0
Installer les packages client et serveur Mongo
Installez ces deux packages mongo-* comme indiqué ci-dessous.
# yum install mongo-10gen mongo-10gen-server Installing : mongo-10gen-2.2.2-mongodb_1.x86_64 Installing : mongo-10gen-server-2.2.2-mongodb_1.x86_64
Vérifier le fichier mongod.conf
Cela installe également le fichier /etc/mongod.conf par défaut et le script de démarrage /etc/rc.d/init.d/mongod
Le fichier /etc/mongod.conf contient les valeurs par défaut suivantes. Comme vous le voyez ici, les fichiers de la base de données mongo seront créés dans le répertoire /var/lib/mongo. Si vous souhaitez que les fichiers DB soient créés dans un répertoire différent, modifiez le répertoire dbpath dans le fichier mongod.conf.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
Démarrer le serveur MongoDB
Démarrez le service mongod comme indiqué ci-dessous.
# service mongod start Starting mongod: forked process: 15968 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Consultez les fichiers journaux pour vous assurer que MongoDB a démarré avec succès. Par défaut, le serveur MongoDB s'exécute sur le port 27017.
# cat /var/log/mongo/mongod.log Sat Jan 19 10:57:03 [initandlisten] MongoDB starting : pid=15968 port=27017 dbpath=/var/lib/mongo 64-bit host=centos Sat Jan 19 10:57:03 [initandlisten] db version v2.2.2, pdfile version 4.5 Sat Jan 19 10:57:03 [initandlisten] git version: d1b43b61a5308c4ad0679d34b262c5af9d664267 Sat Jan 19 10:57:03 [initandlisten] build info: Linux ip-10-2-29-40 2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_49 Sat Jan 19 10:57:03 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" } Sat Jan 19 10:57:03 [initandlisten] journal dir=/var/lib/mongo/journal Sat Jan 19 10:57:03 [initandlisten] recover : no journal files present, no recovery needed Sat Jan 19 10:57:03 [websvr] admin web console waiting for connections on port 28017 Sat Jan 19 10:57:03 [initandlisten] waiting for connections on port 27017
Utilisez Mongo Shell pour vous connecter à MongoDB
Tapez "mongo" pour lancer le shell mongo et connectez-vous à MongoDB pour effectuer une opération de base de données. Cela affichera l'invite ">" où vous pourrez taper les commandes du client mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
La commande suivante insère un exemple de document dans la collection MongoDB appelée "sites". Ceci est similaire à la commande SQL "INSERT into".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Ce qui suit affichera tous les documents de la collection "sites" de MongoDB. Ceci est similaire à la commande SQL "SELECT * from".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Installer MongoDB à partir de la source
Si vous souhaitez installer MongoDB à partir de la source, suivez les étapes mentionnées ci-dessous.
Installer les prérequis
Assurez-vous que gcc-c++ et le paquet glibc-devel sont déjà installés. MongoDB utilise scons pour construire le code source. Assurez-vous donc que le package scons est déjà installé.
# rpm -qa | egrep 'gcc-c++|glibc-devel|scons' gcc-c++-4.4.6-4.el6.x86_64 glibc-devel-2.12-1.80.el6_3.6.x86_64 scons-2.0.1-1.el6.noarch
Si vous n'avez pas ces prérequis, installez-les.
# yum install gcc-c++ glibc-devel scons
Télécharger MongoDB
Accédez à la page de téléchargement de MongoDB et téléchargez le code source. La version stable actuelle de MongoDB est la 2.2.2.
Une fois que vous avez le lien de téléchargement, vous pouvez également utiliser wget pour télécharger directement le code source.
cd /usr/src wget http://downloads.mongodb.org/src/mongodb-src-r2.2.2.tar.gz tar xvfz mongodb-src-r2.2.2.tar.gz cd mongodb-src-r2.2.2
Construire MongoDB en utilisant Scons
Scons est similaire à faire. Tapez "scons all" pour construire MongoDB à partir des sources.
Veuillez noter que lorsque vous exécutez "scons all", il n'utilise qu'un seul processeur et n'exécute qu'un seul travail à la fois pour construire le code source. Donc, ce sera lent. Si vous voulez que scons utilise tout le processeur et exécute plusieurs tâches lors de la construction, vous devez spécifier le nombre de tâches qu'il doit exécuter.
Sur mon système, j'ai 8 cœurs. Donc, j'ai exécuté "scons -j 8 all" comme indiqué ci-dessous pour construire.
# scons -j 8 all scons: Reading SConscript files ... scons version: 2.0.1 python version: 2 6 6 'final' 0 Checking whether the C++ compiler works(cached) yes Checking for C header file unistd.h... (cached) yes Checking whether clock_gettime is declared... (cached) yes Checking for C library rt... (cached) yes Checking for C++ header file execinfo.h... (cached) yes Checking whether backtrace is declared... (cached) yes Checking whether backtrace_symbols is declared... (cached) yes Checking for C library pcap... (cached) no Checking for C library wpcap... (cached) no Checking if __malloc_hook is declared volatile... (cached) no scons: done reading SConscript files. .. Install file: "build/linux2/normal/mongo/test" as "test" scons: done building targets.
Une fois que vous avez construit le code source, nous devrions l'installer. Utilisez "scons install" pour installer MongoDB. Par défaut, il l'installera sous /usr/local/bin. Si vous souhaitez installer MongoDB dans un répertoire différent, utilisez l'option "–prefix".
Pour installer MongoDB sous le répertoire /opt/mongo, exécutez la commande scons suivante.
# scons --prefix=/opt/mongo install
Comme vous le voyez ci-dessous, il a installé MongoDB sous le répertoire /opt/mongo.
# ls -l /opt/mongo/ total 12 drwxr-xr-x. 2 root root 4096 Jan 19 13:33 bin drwxr-xr-x. 3 root root 4096 Jan 19 13:33 include drwxr-xr-x. 2 root root 4096 Jan 19 13:33 lib
Créer le fichier /etc/mongod.conf
Créez le fichier de configuration suivant qui sera utilisé par le serveur MongoDB lors du démarrage.
# cat /etc/mongod.conf logpath=/var/log/mongo/mongod.log logappend=true fork = true dbpath=/var/lib/mongo pidfilepath = /var/run/mongodb/mongod.pid
Dans le fichier ci-dessus, le paramètre dbpath indique que lorsque nous démarrons la base de données MongoDB, il créera toutes les bases de données requises sous le répertoire /var/lib/mongo. Vous pouvez modifier ce chemin en conséquence.
Créez le répertoire référencé par le dbpath.
# mkdir -p /var/lib/mongo
Démarrer le démon MongoDB
Ajoutez /opt/mongo/bin/ à la variable PATH.
# export $PATH=$PATH:/opt/mongo/bin/
Démarrez mongodb comme indiqué ci-dessous en transmettant l'emplacement du fichier de configuration à l'aide de l'option -f.
# mongod -f /etc/mongod.conf forked process: 20127 all output going to: /var/log/mongo/mongod.log child process started successfully, parent exiting
Si vous utilisez simplement "mongod" sans aucun argument, cela démarrera le processus au premier plan. Lorsque vous fermez votre terminal, votre serveur MongoDB s'arrête également. Assurez-vous donc d'exécuter mongod avec l'option -f comme indiqué ci-dessus.
Vérifiez les fichiers journaux pour vous assurer qu'il a démarré correctement. Par défaut, le serveur MongoDB s'exécute sur le port 27017.
# cat /var/log/mongo/mongod.log Sat Jan 19 13:48:44 [initandlisten] MongoDB starting : pid=20127 port=27017 dbpath=/var/lib/mongo 64-bit host=centos Sat Jan 19 13:48:44 [initandlisten] db version v2.2.2, pdfile version 4.5 Sat Jan 19 13:48:44 [initandlisten] git version: nogitversion Sat Jan 19 13:48:44 [initandlisten] build info: Linux centos 2.6.32-279.19.1.el6.x86_64 #1 SMP Wed Dec 19 07:05:20 UTC 2012 x86_64 BOOST_LIB_VERSION=1_49 Sat Jan 19 13:48:44 [initandlisten] options: { config: "/etc/mongod.conf", dbpath: "/var/lib/mongo", fork: "true", logappend: "true", logpath: "/var/log/mongo/mongod.log", pidfilepath: "/var/run/mongodb/mongod.pid" } Sat Jan 19 13:48:44 [initandlisten] journal dir=/var/lib/mongo/journal Sat Jan 19 13:48:44 [initandlisten] recover : no journal files present, no recovery needed Sat Jan 19 13:48:44 [websvr] admin web console waiting for connections on port 28017 Sat Jan 19 13:48:44 [initandlisten] waiting for connections on port 27017
Utilisez Mongo Shell pour vous connecter à MongoDB
Tapez "mongo" pour lancer le shell mongo et connectez-vous à MongoDB pour effectuer une opération de base de données. Cela affichera l'invite ">" où vous pourrez taper les commandes du client mongo.
# mongo MongoDB shell version: 2.2.2 connecting to: test Welcome to the MongoDB shell. >
La commande suivante insère un exemple de document dans la collection MongoDB appelée "sites". Ceci est similaire à la commande SQL "INSERT into".
> doc1 = { name : "ramesh" }; > db.sites.insert( doc1 );
Ce qui suit affichera tous les documents de la collection "sites" de MongoDB. Ceci est similaire à la commande SQL "SELECT * from".
> db.sites.find() { "_id" : ObjectId("50f72809a8e3c7a3aba2bf15"), "name" : "ramesh" }
Dans le prochain article de cette série, nous expliquerons plusieurs commandes MongoDB avec des exemples.