samedi 15 juin 2013

Utilisations courantes et installation de MongoDB


1-Présentation du MongoDB:

MongoDB (de l'anglais humongous qui peut être traduit par « énorme ») est un système de gestion de basede données orientée documentsscalable, performant, ne nécessitant pas de schéma prédéfini des données, écrit avec le langage de programmation C++ et distribué sous licence AGPL. Il fait partie de la  mouvance NoSQL et vise à fournir des fonctionnalités avancées.

MongoDB est développé depuis 2007 par 10gen. L'entreprise travaillait alors sur un système de Cloud computing, ou "informatique dans le nuage", similaire au service Google App Engine deGoogle.

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 :

NomPrénomÂge
DUMONTJean43
PELLERINFranck29
MATTHIEUNicolas51
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 formatJSON). 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.

MongoDB supporte la réplication via un modèle maître-esclave à des fins de résistance aux pannes et de répartition de la charge.
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é :)







0 commentaires:

Enregistrer un commentaire

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites