Qu'est-ce que MongoDB? Introduction, architecture, fonctionnalités et amp; Exemple

Table des matières:

Anonim

Qu'est-ce que MongoDB?

MongoDB est une base de données NoSQL orientée document utilisée pour le stockage de données à haut volume. Au lieu d'utiliser des tables et des lignes comme dans les bases de données relationnelles traditionnelles, MongoDB utilise des collections et des documents. Les documents sont constitués de paires clé-valeur qui constituent l'unité de base des données dans MongoDB. Les collections contiennent des ensembles de documents et de fonctions qui sont l'équivalent des tables de bases de données relationnelles. MongoDB est une base de données qui a vu le jour vers le milieu des années 2000.

Dans ce didacticiel, vous apprendrez-

  • Fonctionnalités MongoDB
  • Exemple MongoDB
  • Composants clés de l'architecture MongoDB
  • Pourquoi utiliser MongoDB
  • Modélisation des données dans MongoDB
  • Différence entre MongoDB et SGBDR

Fonctionnalités MongoDB

    1. Chaque base de données contient des collections qui à leur tour contiennent des documents. Chaque document peut être différent avec un nombre variable de champs. La taille et le contenu de chaque document peuvent être différents les uns des autres.
    2. La structure du document correspond davantage à la manière dont les développeurs construisent leurs classes et leurs objets dans leurs langages de programmation respectifs. Les développeurs diront souvent que leurs classes ne sont pas des lignes et des colonnes mais ont une structure claire avec des paires clé-valeur.
    3. Les lignes (ou documents appelés dans MongoDB) n'ont pas besoin d'avoir un schéma défini au préalable. Au lieu de cela, les champs peuvent être créés à la volée.
    4. Le modèle de données disponible dans MongoDB vous permet de représenter plus facilement des relations hiérarchiques, de stocker des tableaux et d'autres structures plus complexes.
  1. Évolutivité - Les environnements MongoDB sont très évolutifs. Des entreprises du monde entier ont défini des clusters, certains d'entre eux exécutant plus de 100 nœuds avec environ des millions de documents dans la base de données

Exemple MongoDB

L'exemple ci-dessous montre comment un document peut être modélisé dans MongoDB.

  1. Le champ _id est ajouté par MongoDB pour identifier de manière unique le document dans la collection.
  2. Ce que vous pouvez noter, c'est que les données de commande (OrderID, produit et quantité) qui dans le SGBDR seront normalement stockées dans une table séparée, tandis que dans MongoDB, elles sont en fait stockées en tant que document intégré dans la collection elle-même. C'est l'une des principales différences dans la façon dont les données sont modélisées dans MongoDB.

Composants clés de l'architecture MongoDB

Voici quelques-uns des termes couramment utilisés dans MongoDB

  1. _id - Ce champ est obligatoire dans chaque document MongoDB. Le champ _id représente une valeur unique dans le document MongoDB. Le champ _id est comme la clé primaire du document. Si vous créez un nouveau document sans champ _id, MongoDB créera automatiquement le champ. Ainsi, par exemple, si nous voyons l'exemple de la table client ci-dessus, Mongo DB ajoutera un identifiant unique à 24 chiffres à chaque document de la collection.
_Identifiant N ° de client Nom du client Numéro de commande
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Collection - Il s'agit d'un regroupement de documents MongoDB. Une collection est l'équivalent d'une table créée dans n'importe quel autre RDMS tel qu'Oracle ou MS SQL. Une collection existe dans une seule base de données. Comme le montrent les collections d'introduction, elles n'appliquent aucune sorte de structure.
  2. Curseur - Il s'agit d'un pointeur vers le jeu de résultats d'une requête. Les clients peuvent parcourir un curseur pour récupérer les résultats.
  3. Base de données - Il s'agit d'un conteneur pour les collections comme dans RDMS dans lequel il s'agit d'un conteneur pour les tables. Chaque base de données obtient son propre ensemble de fichiers sur le système de fichiers. Un serveur MongoDB peut stocker plusieurs bases de données.
  4. Document - Un enregistrement dans une collection MongoDB est essentiellement appelé un document. Le document, à son tour, comprendra le nom du champ et les valeurs.
  5. Champ - Une paire nom-valeur dans un document. Un document a zéro ou plusieurs champs. Les champs sont analogues aux colonnes des bases de données relationnelles.

    Le diagramme suivant montre un exemple de champs avec des paires de valeurs clés. Ainsi, dans l'exemple ci-dessous CustomerID et 11 est l'une des paires clé-valeur définies dans le document.

  1. JSON - Ceci est connu sous le nom de notation d'objet JavaScript. Il s'agit d'un format de texte brut lisible par l'homme pour exprimer des données structurées. JSON est actuellement pris en charge dans de nombreux langages de programmation.

Juste une note rapide sur la différence clé entre le champ _id et un champ de collection normal. Le champ _id est utilisé pour identifier de manière unique les documents dans une collection et est automatiquement ajouté par MongoDB lors de la création de la collection.

Pourquoi utiliser MongoDB?

Voici quelques-unes des raisons pour lesquelles on devrait commencer à utiliser MongoDB

  1. Orienté document - Étant donné que MongoDB est une base de données de type NoSQL, au lieu d'avoir des données dans un format de type relationnel, il stocke les données dans des documents. Cela rend MongoDB très flexible et adaptable à la situation et aux exigences réelles du monde des affaires.
  2. Requêtes ad hoc - MongoDB prend en charge la recherche par champ, les requêtes de plage et les recherches d'expressions régulières. Des requêtes peuvent être effectuées pour renvoyer des champs spécifiques dans les documents.
  3. Indexation - Des index peuvent être créés pour améliorer les performances des recherches dans MongoDB. Tout champ d'un document MongoDB peut être indexé.
  4. Réplication - MongoDB peut fournir une haute disponibilité avec des jeux de répliques. Un jeu de réplicas se compose d'au moins deux instances de base de données mongo. Chaque membre du jeu de réplicas peut jouer le rôle de réplique principal ou secondaire à tout moment. Le réplica principal est le serveur principal qui interagit avec le client et effectue toutes les opérations de lecture / écriture. Les réplicas secondaires conservent une copie des données du principal à l'aide de la réplication intégrée. Lorsqu'un réplica principal échoue, le jeu de réplicas bascule automatiquement sur le réplica secondaire, puis il devient le serveur principal.
  5. Équilibrage de charge - MongoDB utilise le concept de partitionnement pour évoluer horizontalement en fractionnant les données sur plusieurs instances MongoDB. MongoDB peut fonctionner sur plusieurs serveurs, équilibrant la charge et / ou dupliquant les données pour maintenir le système opérationnel en cas de panne matérielle.

Modélisation des données dans MongoDB

Comme nous l'avons vu dans la section Introduction, les données de MongoDB ont un schéma flexible. Contrairement aux bases de données SQL, où vous devez déclarer le schéma d'une table avant d'insérer des données, les collections de MongoDB n'appliquent pas la structure du document. Ce type de flexibilité est ce qui rend MongoDB si puissant.

Lorsque vous modélisez des données dans Mongo, gardez à l'esprit les éléments suivants

  1. Quels sont les besoins de l'application - Examinez les besoins commerciaux de l'application et voyez quelles données et le type de données nécessaires pour l'application. Sur cette base, assurez-vous que la structure du document est décidée en conséquence.
  2. Quels sont les modèles de récupération de données - Si vous prévoyez une utilisation intensive des requêtes, envisagez l'utilisation d'index dans votre modèle de données pour améliorer l'efficacité des requêtes.
  3. Des insertions, mises à jour et suppressions fréquentes se produisent-elles dans la base de données? Reconsidérez l'utilisation d'index ou intégrez le sharding si nécessaire dans votre conception de modélisation de données pour améliorer l'efficacité de votre environnement MongoDB global.

Différence entre MongoDB et SGBDR

Voici quelques-unes des principales différences de termes entre MongoDB et SGBDR

SGBDR MongoDB Différence
Table Collection Dans le SGBDR, la table contient les colonnes et les lignes qui sont utilisées pour stocker les données alors que, dans MongoDB, cette même structure est connue sous le nom de collection. La collection contient des documents qui à leur tour contiennent des champs, qui sont à leur tour des paires clé-valeur.
Rangée Document Dans le SGBDR, la ligne représente un seul élément de données implicitement structuré dans une table. Dans MongoDB, les données sont stockées dans des documents.
Colonne Domaine Dans le SGBDR, la colonne indique un ensemble de valeurs de données. Ceux-ci dans MongoDB sont connus sous le nom de champs.
Rejoint Documents intégrés Dans le SGBDR, les données sont parfois réparties sur différentes tables et afin d'afficher une vue complète de toutes les données, une jointure est parfois formée entre les tables pour obtenir les données. Dans MongoDB, les données sont normalement stockées dans une seule collection, mais séparées à l'aide de documents incorporés. Il n'y a donc pas de concept de jointure dans MongoDB.

Outre les différences de termes, quelques autres différences sont indiquées ci-dessous

  1. Les bases de données relationnelles sont connues pour assurer l'intégrité des données. Ce n'est pas une exigence explicite dans MongoDB.
  2. Le SGBDR exige que les données soient d'abord normalisées afin d'éviter les enregistrements orphelins et les doublons. La normalisation des données nécessite ensuite plus de tables, ce qui entraînera alors plus de jointures de table, nécessitant ainsi plus de clés et d'index.

    À mesure que les bases de données se développent, les performances peuvent devenir un problème. Encore une fois, ce n'est pas une exigence explicite dans MongoDB. MongoDB est flexible et n'a pas besoin que les données soient d'abord normalisées.