1-Présentation du MongoDB:
MongoDB permet de manipuler des objets structurés au format
BSON (
JSON binaire), sans schéma prédéterminé.
Concrètement les données prennent la forme de documents enregistrés dans des collections, une collection pouvant ainsi contenir un nombre quelconque de documents. Si on souhaite faire une comparaison avec les bases de données SQL, on peut dire que les collections sont l'équivalent des tables, et que les documents sont l'équivalent des enregistrements. Cependant il y a une différence fondamentale entre les deux approches : si les enregistrements d'une table SQL et les documents d'une collection MongoDB se composent tous deux de champs, dans les basesSQL chaque enregistrement de la table contient exactement les mêmes champs, dont seul le contenu varie. A contrario dans une collection MongoDB, les documents peuvent avoir des champs totalement différents.
Une table SQL pourrait se présenter de la manière suivante :
Nom | Prénom | Âge |
DUMONT | Jean | 43 |
PELLERIN | Franck | 29 |
MATTHIEU | Nicolas | 51 |
Les enregistrements d'une table SQL comportent tous les mêmes champs.
Une collection MongoDB en revanche pourrait se présenter de la manière suivante :
{
"_id": ObjectId("4efa8d2b7d284dad101e4bc9"),
"Nom": "DUMONT",
"Prénom": "Jean",
"Âge": 43
},
{
"_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
"Nom": "PELLERIN",
"Prénom": "Franck",
"Âge": 29,
"Adresse": "1 chemin des Loges",
"Ville": "VERSAILLES"
}
Les documents d'une collection MongoDB peuvent comporter des champs différents (note : le champ "_id" est un champ obligatoire, généré et ajouté par mongoDB, c'est un index unique qui permet d'identifier le document).
Dans un
document, des champs peuvent être ajoutés, supprimés, modifiés et renommés à tout moment. Il n'y a pas contrairement aux bases de données SQL de schéma prédéfini. En réalité la structure d'un
document est très simple et se compose de paires clef/valeur à la manière des tableaux associatifs, la clef est le nom du champ, la valeur son contenu (voir à ce propos le format
JSON). Les deux sont séparés d'un signe deux-points ":" comme le montre l'exemple ci-dessus. Les "valeurs" ne sont pas nécessairement des nombres ou du texte, il peut s'agir également de données numériques comme des images, mais il peut également s'agir d'autres paires clefs/valeurs comme le montre l'exemple ci-dessous :
{
"_id": ObjectId("4efa8d2b7d284dad101e4bc7"),
"Nom": "PELLERIN",
"Prénom": "Franck",
"Âge": 29,
"Adresse":
{
"Rue" : "1 chemin des Loges",
"Ville": "VERSAILLES"
}
}
On voit qu'il est possible d'imbriquer des documents, ici le champ "Adresse" contient un document de deux champs : "Rue" et "Ville".
Certaines opérations sur les champs telles que l'incrémentation peuvent être effectuées de façon atomique et sans déplacement ni copie du document.
MongoDB est livré avec des pilotes pour les principaux langages de programmation : Go, C, C++, Erlang, Haskell, Java, JavaScript, .Net, Perl, PHP, Python, Ruby, Scala
Ces pilotes permettent de manipuler la base de données et ses données directement depuis ces langages. Cependant MongoDB possède également un outil qui peut être utilisé en ligne de commande et qui donne accès au langage natif de la base de données : le JavaScript, par l'intermédiaire duquel on peut également manipuler la base.
En tapant :
./mongo
dans la ligne de commande du système d'exploitation, on lance l'interpréteur de commandes interactif de MongoDB.
Dans une base de données nommée vente qui contient plusieurs collections, voici comment on afficherait tous les documents de la collection nommée clients :
> use vente // Sélectionne la base de données "vente"
> db.clients.find(); // Cherche et affiche tous les documents de la collection "clients".
Le résultat s'imprime à l'écran :
{ "_id": 28974, "Nom": "ID Technologies", "Adresse" : "7 Rue de la Paix, Paris"}
{ "_id": 89136, "Nom": "Yoyodine", "Adresse" : "8 Rue de la Reine, Versailles"}
MongoDB peut être utilisé comme système de fichiers, cette fonction assez inhabituelle pour une base de données permet pourtant de profiter de toutes les caractéristiques décrites dans la section Déploiement à savoir la réplication et la répartition de données sur un ensemble de serveurs, et de les mettre à profit pour gérer des fichiers.
Cette fonction s'appelle
GridFS, elle est incluse dans les pilotes fournis avec MongoDB et utilisable sans difficulté particulière dans les langages de programmation, le programmeur disposant de fonctions pour manipuler les fichiers et leur contenu, MongoDB se chargeant de leur gestion.
Dans un système fonctionnant sur plusieurs serveurs MongoDB
, les fichiers peuvent ainsi être automatiquement répartis et dupliqués entre les ordinateurs de façon transparente, offrant au système la tolérance aux pannes et la répartition de la charge que MongoDB apporte aux données.La documentation officielle (voir la section
liens externes) de MongoDB décrit en détail les mécanismes de manipulation de données par l'intérmédiaire de l'outil
mongo. Pour manipuler les bases MongoDB depuis un langage de programmation il convient en revanche de se reporter à la documentation du langage en question.
Les bases de données hiérarchiques ont été développées pour les matériels peu puissants des années 1970. Ceux des années 1990, plus puissants, ont pu utiliser le modèle relationnel (bien plus consommateur, mais beaucoup plus souple). Les années 2010 permettent l'introduction des bases not-only-SQL
("NOSQL" : pas-seulement-SQL
) comme MongoDB associant aux données des attributs
(ou champs
) placés à la demande en temps réel, et exploitables ensuite par le biais de requêtes
. Chacune de ces deux approches tire profit de la baisse des coûts et l'augmentation de puissance du matériel pour permettre des développements plus simples et plus rapides.
En pratique MongoDB peut tourner sur plusieurs ordinateurs, en répartissant et/ou en dupliquant les données. Il est ainsi possible de répartir les données sur plusieurs machines pour répartir la charge de travail, mais il est également possible de dupliquer les données de chaque ordinateur sur un ou plusieurs autres ordinateurs afin de garder le système de base de données opérationnel même en cas d'une panne de l'un d'eux. MongoDB rend d'ailleurs ces configurations aisées à mettre en place en les automatisant. De cette façon il est tout à fait possible d'ajouter à la volée un ou des ordinateurs à une base de données en cours de fonctionnement.
Petite présentation du MongoDB
2-L'installation de MongoDB sous linux:
STEP 1:
Ctrl + Alt + T
STEP 2:
sudo
apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
STEP 3:
touch
10gen.list
nano
10gen.list
puis on ajoute ce ligne dans le fichier
10gen.list:
sudo
mv
10gen.list
/etc/apt/sources
.list.d/
STEP 4:
sudo
apt-get update
STEP 5:
sudo
apt-get
install
mongodb-10gen=2.4.3
STEP 6:
sudo
echo
"mongodb-10gen hold"
| dpkg --
set
-selections
STEP 7:
Vous pouvez configurer MongoDb en modifiant le fichier /etc/mongodb.conf
STEP 8:
sudo
service mongodb restart
STEP 9:
Mongodb est bien installé :)