MongoDB

MongoDB

MongoDB est une base de données open source utilisée pour le stockage orienté document. MongoDB a amélioré les performances car il rend le stockage de données plus rapide et plus facile en utilisant des schémas de base de données dynamiques similaires à JSON au lieu des systèmes de base de données relationnelles traditionnel à base de tables SQL, c’est pour cette raison que MongoDB est classé en tant que serveur de base de données NoSQL.

 

INTRODUCTION

MongoDB est un type de serveur de base de données orienté document développé dans le langage de programmation C ++. Le mot Mongo est dérivé du mot "Humongous" (énorme) pour soutenir l'idée de traiter une grande quantité de données.

C'est une base de données NoSQL qui stocke les données sous forme de paires clé-valeur. En 2009, MongoDB a été créé en tant que projet open source. MongoDB est une base de données de documents offrant des performances et une évolutivité élevés, ainsi que la modélisation et la gestion de données d'énormes ensembles de données dans une application d'entreprise. Le schéma de base de données dynamique utilisé dans MongoDB est appelé BSON.

MongoDB fournit également la fonctionnalité Auto-Scaling. Il s'agit d'une base de données multiplateformes et peut être installé sur différentes plates-formes telles que Windows, Linux, etc.

 

Brève histoire de MongoDB

MongoDB a été développé en 2007 par une organisation basée à New York, 10gen, qui s'appelle maintenant MongoDB Inc. MongoDB a été initialement développée en tant que PaaS (plate-forme en tant que service). Plus tard dans l'année 2009, MongoDB a été introduit sur le marché en tant que serveur de base de données open source géré et pris en charge par MongoDB Inc.

 

Qu'est-ce que le stockage basé sur documents?

Un document n'est rien d'autre qu'une structure de données avec des paires name-valeur comme en JSON. Il est très facile de mapper n'importe quel objet personnalisé de n'importe quel langage de programmation avec un document MongoDB. Par exemple: Studentobject a les attributs name et subject, sujets étant une liste.

Exemple pour un étudiant, dans MongoDB cela ressemblera à :

Nous pouvons voir que les documents sont en réalité une représentation JSON d'objets personnalisés. En outre, il est possible d’éviter des JOINS excessifs en sauvegardant des données sous forme de tableaux et de documents (incorporés) dans un document.

 

Organisations utilisant MongoDB

Voici quelques-unes des grandes et notables organisations qui utilisent MongoDB comme base de données pour la plupart de leurs applications métier.

  • Adobe
  • LinkedIn
  • McAfee
  • FourSquare
  • eBay
  • MetLife
  • SAP

 

Bases de données non relationnelles

Une base de données non relationnelle est une base de données qui ne suit pas le modèle relationnel fourni par les systèmes de gestion de base de données relationnelle traditionnels. Cette catégorie de bases de données, également appelée bases de données NoSQL, a connu une croissance constante de l'adoption ces dernières années avec l'essor des applications Big Data.

 

Bases de données SQL vs NoSQL

La différence fondamentale entre SQL et NoSQL n’est pas si compliquée que cela. Chacun a une philosophie différente quant à la manière dont les données doivent être stockées et récupérées.

Avec les bases de données SQL, toutes les données ont une structure inhérente. Une base de données conventionnelle telle que Microsoft SQL Server, MySQL ou Oracle Database utilise un schéma - une définition formelle de la composition des données insérées dans la base de données. Par exemple, une colonne donnée dans une table peut être limitée à des entiers uniquement. En conséquence, les données enregistrées dans la colonne auront un degré de normalisation élevé. Le schéma rigide d’une base de données SQL facilite également la réalisation d’agrégations sur les données, par exemple à l’aide de JOIN.

Avec NoSQL, les données peuvent être stockées sous une forme libre ou sans schéma. Toutes les données peuvent être stockées dans n'importe quel enregistrement.

Comparaison entre base de données relationnelle et MongoDB:

BD relationnelle MongoDB
Database Database
Table Collection
Row Document
Column Field
Table Join Embedded Documents
Primary Key Primary Key ( _id provided by mongodb)

 

Avantages des bases de données NoSQL

Voici quelques-uns des principaux avantages des bases de données NoSQL:

        Schémas dynamiques

Vous devez vous demander ce que signifie un schéma dynamique? Dans les bases de données relationnelles comme Oracle, MySQL, nous définissons des structures de table, n'est-ce pas? Par exemple, si nous voulons sauvegarder des enregistrements de données d'étudiant, nous devrions alors créer une table nommée Student, y ajouter des colonnes, comme student_id, student_nameetc, ce qui s'appelle un schéma défini, où nous définirions la structure avant d'enregistrer des données. .

Si, à l'avenir, nous prévoyons d'ajouter d'autres données connexes dans notre table Student, nous devrons alors ajouter une nouvelle colonne à notre table. Ce qui est facile, si nous avions moins de données dans nos tables, mais que se passerait-t-il si nous avions des millions d'enregistrements. La migration vers le schéma mis à jour serait un travail mouvementé. Les bases de données NoSQL résolvent ce problème, car dans une base de données NoSQL, la définition de schéma n'est pas requise.

 

         Sharding

Dans Sharding, les grandes bases de données sont partitionnées en petites bases plus rapides et faciles à gérer.

Les bases de données relationnelles (classiques) suivent une architecture verticale dans laquelle un seul serveur contient les données, car toutes les données sont liées. Les bases de données relationnelles ne fournissent pas la fonctionnalité Sharding par défaut. Pour ce faire, il faut déployer beaucoup d’efforts, car l’intégrité transactionnelle (insertion / mise à jour des données dans les transactions), les tables multiples JOINS, etc. ne peuvent pas être facilement réalisées dans une architecture distribuée en cas de structure relationnelle.

Les bases de données NoSQL ont la fonctionnalité Sharding par défaut. Aucun effort supplémentaire requis. Ils répartissent automatiquement les données sur les serveurs, récupèrent les données dans les meilleurs délais sur le serveur, ce qui est gratuit, tout en maintenant l'intégrité des données.

 

        Replication

La réplication automatique des données est également prise en charge dans les bases de données NoSQL par défaut. Par conséquent, si un serveur de base de données tombe en panne, les données sont restaurées à l'aide de la copie créée sur un autre serveur du réseau.

 

       Integrated Caching

De nombreuses bases de données NoSQL prennent en charge la mise en cache intégrée, où les données fréquemment demandées sont stockées dans le cache pour rendre les requêtes plus fiables.

 

Pourquoi cette technologie a-t-elle été développée?

MongoDB a été développé par Eliot Horowitz et Dwight Merriman en 2007, lorsqu'ils ont rencontré des problèmes d’évolutivité avec la base de données relationnelle lors du développement d’applications Web d’entreprise au sein de leur société DoubleClick. Selon Eliot Horowitz (CTO fondateur de MongoDB), alors qu'ils travaillaient sur les produits, ils ont réalisé que, qu'il s'agisse d'Oracle, de BerkeleyDB ou de MySQL, rien ne fonctionnait vraiment pour ce dont il avait besoin. Il y avait deux raisons principales à cela.

 

  1. Le déséquilibre impédance relation-objet

Si nous examinons le type de choses que les gens stockent dans les bases de données et les langages de programmation qu’ils utilisent aujourd’hui, les bases de données relationnelles ne correspondent pas tout à fait à ce modèle. La plupart des gens développent des langages qui ont des objets ou des structures, qu’ils soient en Java, Ruby ou Python. Ils prennent ensuite ces structures riches et y attachent un mappage relationnel-objet et essayent de le stocker dans une base de données relationnelle.

Cela pose un certain nombre de problèmes. Premièrement, c’est compliqué: mapper une structure complexe dans un langage de programmation sur un modèle de données relationnel est compliqué; il y a beaucoup de problèmes et d’incohérences; et ce n’est pas très humain. Par exemple, dans une application d'entreprise typique, un profil utilisateur utilise environ 75 tables. Alors que dans Mongo, vous pouvez généralement stocker cela en tant que document unique. C’est plus simple à utiliser et permet aux utilisateurs de comprendre de manière plus intuitive ce qui se passe dans la base de données. Lorsque les gens le comprennent de manière plus intuitive et qu’il correspond mieux aux langues de leur programme, c’est un outil plus productif.

 

  1. Scalability

Un autre aspect important concernt les systèmes distribués. Beaucoup de très grandes entreprises telles que Google et Facebook ont passé beaucoup de temps à créer des systèmes distribués incroyablement performants au sein de leurs organisations. À ce moment-là, personne n’avait réellement conçu un système distribué pour la plupart des entreprises, ce qui leur donnait suffisamment de flexibilité pour pouvoir tirer parti de tous les avantages des systèmes distribués, mais c’est aussi assez simple à utiliser. C’est vraiment ce que nous voulions faire.

Par exemple, l'évolutivité horizontale devient de plus en plus importante. Les machines simples ne peuvent plus tout à fait gérer les charges de travail. Avec le cloud computing, vous souhaitez disposer d'un grand nombre de machines identiques plutôt que d'une machine spéciale. Vous vous souciez donc de l'évolutivité horizontale. Vous vous souciez également des problèmes de centres de données multiples et géographiques. Vous ne voulez pas que les utilisateurs d’Australie attendent de retourner à New York pour parler à la base de données. Vous aimeriez avoir des bases de données réparties dans le monde entier. Vous vous souciez de choses comme la gouvernance des données, où vous voulez pouvoir conserver certaines données dans certains pays. Vous voulez pouvoir effectuer des tâches telles que l’archivage automatique des données, mais toujours sur des machines moins chères. Toutes ces choses sont des problèmes de systèmes distribués.

 

Description de la technologie

MongoDB consiste en un ensemble de bases de données. Chaque base de données est à nouveau constituée de collections. Les données dans MongoDB sont stockées dans des collections. La figure ci-dessous illustre la structure de base de données typique dans MongoDB.

 

        Database

La base de données dans MongoDB n’est rien d’autre qu’ un conteneur pour des collections.

 

       Collections

Collection est un ensemble de documents MongoDB. Ces documents sont équivalents à la ligne de données dans les tables du RDBMS (système de gestion de base de données relationnelle). Cependant, les collections dans MongoDB ne sont liées à aucun schéma défini par rapport au RDBMS. Les collections sont un moyen de stocker des données liées. N'ayant aucun schéma, n'importe quel type de document peut être enregistré dans une collection, bien que la similarité soit recommandée pour l'efficacité de l'index. Les documents doivent avoir une taille maximale de 4 Mo.

Nous pouvons utiliser un espace de noms pour grouper et imbriquer logiquement des collections. Par exemple: Il peut y avoir une collection nommée db.studytonight.users pour respectivement enregistrer les informations utilisateur, puis d'autres collections telles que db.studytonight.forum.questions et db.studytonight.forum.answers pour stocker les questions et les réponses du forum.

Une collection est créée physiquement dès que le premier document y est créé.

 

      Documents

Document dans MongoDB est l'ensemble des paires clé-valeur. Ces documents auront un schéma dynamique, ce qui signifie que les documents d'une même collection n'ont pas besoin de posséder le même ensemble de champs.

Puisque MongoDB est considéré comme une base de données sans schéma, chaque collection peut contenir différents types d’objets. Chaque objet d'une collection est appelé Document, représenté dans une structure de type JSON (JavaScript Object Notation).

MongoDB représente les documents JSON au format encodé en binaire appelé BSON en arriére plan. BSON étend le modèle JSON pour fournir des types de données supplémentaires, des champs ordonnés, et être efficace pour l'encodage et le décodage dans différentes langues.

 

Types de données MongoDB

Vous trouverez ci-dessous une liste des types de données utilisables dans MongoDB.

Types de données Description
String La chaîne est le type de données le plus couramment utilisé. Il est utilisé pour stocker des données. Une chaîne doit être au format UTF 8 valide dans mongodb.
Integer Entier est utilisé pour stocker la valeur numérique. Il peut être 32 bits ou 64 bits en fonction du serveur que vous utilisez.
Boolean Ce type de données est utilisé pour stocker des valeurs booléennes. Il montre seulement les valeurs YES / NO.
Double Le type de données double stocke les valeurs en virgule flottante.
Min/Max Keys Ce type de données compare une valeur aux éléments bson le plus bas et le plus haut.
Arrays Ce type de données est utilisé pour stocker une liste ou plusieurs valeurs dans une clé unique.
Object Le type de données d'objet est utilisé pour les documents incorporés.
Null Il est utilisé pour stocker des valeurs nulles.
Symbol Il est généralement utilisé pour les langues qui utilisent un type spécifique.
Date Ce type de données stocke la date ou l'heure actuelle au format d'heure Unix. Il vous permet de spécifier votre propre date / heure en créant un objet de date et en transmettant la valeur de date, mois, année into it.

 

Advantages of MongoDB

Toute base de données relationnelle a une conception de schéma typique qui indique le nombre de tables et la relation entre ces tables. Dans MongoDB, il n’existe pas de concept de relation.

Avantages de MongoDB par rapport au RDBMS:

  • MongoDB est moins schématique. C'est une base de données de documents dans laquelle une collection contient différents documents.
  • Il peut y avoir une différence entre le nombre de champs, le contenu et la taille du document.
  • La structure d'un seul objet est claire dans MongoDB.
  • Il n'y a pas de jointures complexes dans MongoDB.
  • MongoDB offre la possibilité d'effectuer des requêtes approfondies car il prend en charge une requête dynamique puissante sur les documents.
  • MangoDB est très facile à faire évoluer.
  • Il utilise la mémoire interne pour stocker les ensembles de travail et c’est la raison de son accès rapide.

 

Où puis-je me procurer cette technologie?

MongoDB est une technologie open-source disponible gratuitement. Comme toutes les autres bases de données, il est disponible en plusieurs variantes en fonction des besoins de développement. Les variantes ont été répertoriées ci-dessous et peuvent être utilisées ou téléchargées à partir de: https://www.mongodb.com/download-center.

Versions disponibles:

  • MongoDB Atlas - Base de données en tant que service
  • Community Server - Gratuit pour la communauté des développeurs
  • MongoDB Enterprise Edition - La version commerciale avec des fonctionnalités supplémentaires

Chacun de ceux-ci est entièrement compatible avec tous les systèmes d'exploitation. Pour commencer, il est nécessaire de télécharger le fichier d'installation approprié selon le système d'exploitation.

 

APPLICATION

Qu'est-ce bon pour MongoDB?

MongoDB est idéal pour modéliser de nombreuses entités qui supportent la plupart des applications Web modernes, grand public ou entreprise:

  • Profils de compte et d'utilisateur: possibilité de stocker facilement des tableaux d'adresses
  • CMS: le schéma flexible de MongoDB est idéal pour les collections hétérogènes de types de contenu
  • Données de formulaire: MongoDB facilite l’évolution de la structure des données de formulaire dans le temps.
  • Blogs / contenu généré par l'utilisateur: peut conserver des données avec des relations complexes dans un seul objet
  • Messagerie: modifiez facilement les métadonnées de message par message ou type de message sans avoir à gérer des collections ou des schémas distincts
  • Données de journal de tout type: les données de journal structurées sont l'avenir
  • Données basées sur la localisation: MongoDB comprend les coordonnées géospatiales et prend en charge de manière native l'indexation géospatiale.

 

EXEMPLES D’UTILISATION

 

Voici un exemple d'utilisation de MongoDB, Node.js et Compass étant qu’interface graphique.

 

Création d'une base de données et d'une collection:

Résulat:

Insertion de nombreux enregistrements dans la base de données:

Résulat:

Trouver un premier élément:

Résulat:

Trouver un élément spécifique:

Résulat:

Tri des résultats:

Résulat:

Projections:

Nous l'utilisons lorsque nous ne voulons que certains champs des résultats de notre requête.

Résulat:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Insertion de nombreux enregistrements dans la base de données:

 

 

 

 

 

 

 

 

 

 

 

Effet:

 

 

 

Trouver un premier élément:

 

 

 

Effet:

 

 

 

 

 

 

Trouver un élément spécifique:

 

 

 

 

Effet:

 

 

 

Tri des résultats:

 

 

 

Effet:

 

 

 

 

 

Projections:

 

Nous l'utilisons lorsque nous ne voulons que certains champs des résultats de notre requête.

 

 

 

Effet:

 

 

 

 

 

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *