MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Qu'est-ce que MongoDB et comment ça marche ?

MongoDB est la base de données NoSQL la plus courante et la plus utilisée. Il s'agit d'une base de données orientée document open source. NoSQL est utilisé pour faire référence à « non relationnel ». Cela signifie que la base de données MongoDB n'est pas basée sur des relations tabulaires comme RDBMS car elle fournit un mécanisme de stockage et de récupération de données distinct.

Le format de stockage utilisé par MongoDB est appelé BSON. La base de données est gérée par MongoDB Inc. et est concédée sous licence publique côté serveur (SSPL).

Vous trouverez ci-dessous une structure de document MongoDB simple :

{
  title: 'FossLinux',
  by: 'Abraham',
  url: 'https://www.fosslinux.com',
  type: 'NoSQL'
}

Comment ça marche ?

MongoDB fonctionne en deux couches, à savoir :

  • Couche de données
  • Couche d'application

La couche application est communément appelée couche d'abstraction finale. Il contient deux parties :le backend, la partie serveur, et le front end, la section de l'interface utilisateur. La section frontale est l'endroit visible où le développeur, à l'aide de MongoDB, interagit avec le mobile ou le Web. La section principale comprend le serveur principalement utilisé pour effectuer la logique côté serveur. En outre, la section serveur contient des pilotes et le shell mongo qui facilitent l'interaction du serveur MongoDB à l'aide de requêtes.

Les requêtes sont envoyées au serveur situé dans la couche de données. Le serveur MongoDB reçoit puis transmet les requêtes au moteur de stockage, où les opérations de lecture et d'écriture sur les fichiers de données correspondants sont effectuées. L'objectif principal du moteur de stockage est de gérer les données.

Remarque : Le serveur MongoDB n'effectue pas d'opérations d'écriture et de lecture.

L'image ci-dessous illustre le fonctionnement de MongoDB :

Principales fonctionnalités de MongoDB

Ses principales fonctionnalités incluent :

1. Indexation

Les index sont destinés à améliorer les performances et la vitesse de recherche de la base de données. Les champs du document de cette base de données peuvent être indexés avec des index/index primaires et secondaires. Sans indexation, chaque document d'une base de données doit être scanné pour sélectionner ceux qui correspondent à la requête, ce qui a parfois tendance à être inefficace. Par conséquent, l'indexation doit être présente pour une recherche de documents efficace, et MongoDB l'utilise pour traiter de manière concise de grandes quantités de données.

MongoDB permet à ses utilisateurs d'indexer n'importe quel champ qui a été indexé avec les index secondaires et primaires. Cela rend les recherches de requêtes beaucoup plus rapides, améliorant ainsi les performances globales.

2. Équilibrage de charge

MongoDB duplique les données pour maintenir le système opérationnel même en cas de panne matérielle. De plus, ce processus permet à MongoDB de fonctionner sur plusieurs serveurs, équilibrant ainsi la charge.

3. Requêtes ad hoc

MongoDB prend régulièrement en charge les recherches de champ, de plage et d'expression. Ces requêtes renvoient des champs spécifiques de documents et incluent également des fonctions JavaScript définies par l'utilisateur. Les requêtes peuvent également être configurées pour renvoyer un échantillon aléatoire de résultats d'une taille donnée.

4. Réplication

Les ensembles de réplicas fournis par MongoDB sont constitués de deux copies de données ou plus. Ces ensembles peuvent agir en tant que répliques principales ou secondaires à tout moment. Les ensembles de réplicas principaux effectuent la lecture et l'écriture tandis que les ensembles secondaires conservent une copie des données du réplica principal à l'aide de la réplication intégrée. Si le réplica principal échoue, le jeu de réplicas exécute automatiquement un processus d'élection pour déterminer quel secondaire doit devenir le principal. Les répliques secondaires peuvent servir des opérations de lecture en option, mais les données sont cohérentes à terme par défaut.

5. Stockage de fichiers

Cette base de données expose des fonctions de manipulation de fichiers et de contenu aux développeurs. Mongo DB peut être utilisé comme système de fichiers connu sous le nom de système de fichiers Grid (GridFS). Cette fonction divise un fichier en parties et stocke chaque partie dans un document séparé.

6. Agrégation

Pour une utilisation efficace, MongoDB fournit le cadre d'agrégation. Cette fonctionnalité permet aux développeurs de regrouper les données de processus et d'obtenir un résultat unique même après avoir exécuté différentes opérations sur les données de groupe. MongoDB fournit le cadre d'agrégation de trois manières :

  • Fonction de réduction de carte
  • Pipeline d'agrégation
  • Agrégation à usage unique.

Consultez l'image ci-dessous pour avoir un aperçu du fonctionnement de l'agrégation dans MongoDB :

7. Base de données sans schéma

La fonctionnalité sans schéma offre à MongoDB beaucoup plus de flexibilité. Une collection peut contenir différents documents dans MongoDB. Le fait qu'il n'ait pas de schéma lui permet de stocker des documents séparés avec d'autres contenus, champs et tailles dans la même collection.

8. GridFS

Il s'agit d'une fonctionnalité utilisée pour stocker et récupérer des fichiers dans MongoDB. Il divise un document en plusieurs parties appelées morceaux, puis les conserve dans différents documents. Tous les fragments, à l'exception du dernier, ont une taille de stockage par défaut d'environ 255 Ko. GridFS est très utile pour les fichiers de plus de 16 Mo.

Remarque : Lorsque GridFS est interrogé pour un fichier, il assemble tous les morceaux séparés nécessaires pour former le fichier d'origine. Vous trouverez ci-dessous une méthodologie de travail GridFS simplifiée :

Composants MongoDB

Les composants de base de MongoDB et leur utilisation incluent :

  1. Collections – Il s'agit d'un ensemble de documents MongoDB. Leurs homologues RDBMS sont des tables. Il est essentiel de comprendre que les collections n'imposent aucune structure. Une collection existe toujours dans une seule base de données.
  2. Document – Il s'agit d'un ensemble de données stockées au format BSON. Son homologue RDBMS est Row. Les enregistrements dans MongoDB sont appelés Documents. Les documents dans MongoDB contiennent des noms de champs et leurs valeurs correspondantes.
  3. Champ – Il s'agit d'un élément unique dans un document MongoDB qui contient des valeurs sous forme de champs et de paires de valeurs. Dans les bases de données relationnelles, les champs sont analogues aux colonnes. Un champ peut être appelé une paire nom-valeur dans un document en termes simples.
  4. _id – Chaque document MongoDB nécessite ce champ. Le champ _id peut être assimilé à la clé primaire dans les bases de données relationnelles. Il représente une instance ou une valeur unique dans un document MongoDB. Si vous créez intentionnellement un document dans MongoDB sans le champ _id, il sera automatiquement généré.
  5. Curseur – Il s'agit d'un pointeur qui indique le résultat défini d'une requête. À l'aide du curseur, les clients peuvent récupérer les résultats.
  6. JSON– Il s'agit d'une notation JavaScript. Il s'agit de texte brut, un format lisible par l'homme utilisé pour exprimer des données structurées. Des milliers de langages de programmation prennent en charge JSON.
  7. Base de données – Comme dans RDBMS, où une base de données est un conteneur de tables, dans MongoDB, une base de données est un conteneur de collections. Chaque base de données contient ses propres ensembles de fichiers sur le système de fichiers. Par conséquent, les serveurs MongoDB peuvent stocker plusieurs bases de données.

Éditions MongoDB

MongoDB a été publié dans différentes éditions, qui sont ;

  • Serveur de la communauté MongoDB :  Il s'agit d'une version open source de MongoDB qui est disponible gratuitement pour les utilisateurs Linux, Windows et macOS.
  • Serveur MongoDB Enterprise –  Il s'agit de la version commerciale de MongoDB et peut être trouvée dans le cadre du package d'abonnement MongoDB Enterprise Advanced.
  • Atlas MongoDB – Communément appelé MongoDB Cloud. MongoDB Atlas est un package MongoDB à la demande qui s'exécute et est entièrement géré sur les plateformes Microsoft Azure, Google Cloud et AWS. Il s'agit d'une version MongoDB Enterprise hébergée dans le cloud. L'édition Atlas contient toutes les fonctionnalités du serveur MongoDB Enterprise et bien plus encore. Cela implique donc que MongoDB Atlas est beaucoup plus avancé que toutes les autres éditions de MongoDB.

Pourquoi utiliser MongoDB ?

  1. Une base de données relationnelle contient des données structurées, mais qu'en est-il des données non structurées ? L'utilisateur peut toujours ajouter diverses formes de données aléatoires à MongoDB sans même déclarer leurs types.
  2. L'utilisateur peut charger d'énormes volumes de données avec une méthode de partitionnement intégrée, qui sépare les données et les répartit facilement sur de nombreux serveurs, grâce à la disponibilité et à la flexibilité de MongoDB dans un environnement basé sur le cloud.
  3. Le schéma dynamique de MongoDB permet aux utilisateurs d'expérimenter et d'apprendre rapidement de nouvelles choses. Tout peut être intégré à MongoDB rapidement et à peu de frais.
  4. Cela simplifie la collecte de données géolocalisées sans nécessiter de procédures sophistiquées.
  5. Des millions d'appareils liés génèrent régulièrement des données sur Internet, ce qui rend difficile leur extraction et leur traitement, mais MongoDB peut le faire dans une seule base de données.
  6. MongoDB peut contenir un large éventail de données provenant de plusieurs sources pour alimenter un site Web basé sur un CMS. Ces informations incluent les tweets, les commentaires, les messages multimédias et d'autres types d'informations.
  7. C'est un excellent compagnon pour le développement d'applications mobiles.
  8. Il peut fournir aux utilisateurs une analyse client en temps réel, offrant une expérience personnalisée indispensable.
  9. Il s'agit d'une base de données peu coûteuse. Si vous êtes une micro ou une petite entreprise, MongoDB est une meilleure option de stockage car il est facile à administrer et à configurer.
  10. Le puissant moteur de recherche de MongoDB permet à l'utilisateur de savoir d'où proviennent les données.

Avantages et inconvénients de MongoDB

Avantages

  1. MongoDB est de loin supérieur aux bases de données relationnelles si l'on dispose d'une quantité importante de données et que l'on souhaite les répartir sur de nombreux serveurs pour l'équilibrage de charge.
  2. Les requêtes de recherche dans MongoDB sont plus rapides car elles doivent être interprétées dans un seul serveur pour y accéder.
  3. Il offre une polyvalence, ce qui implique qu'ils doivent utiliser MongoDB pour stocker des données non structurées, car c'est un moyen beaucoup plus simple de le faire.

Inconvénients

  1. Dans MongoDB, il n'y a aucun moyen de combiner des tables ; ainsi, il faudra le faire manuellement chaque fois qu'il aura besoin d'utiliser cette fonctionnalité, ce qui entraînera un codage disgracieux et chronophage.
  2. Il utilise beaucoup de mémoire car il doit stocker la clé de chaque document car des données en conflit sont possibles.
  3. Lorsque vous commencez à utiliser une fonctionnalité, elle verrouille l'intégralité de la base de données, ce qui entraîne un problème de simultanéité.
  4. Il ne le fait pas automatiquement ; par conséquent, l'utilisateur doit s'assurer manuellement que l'opération est une transaction.

10 questions fréquentes sur MongoDB

Cette section fournira des réponses à certaines des questions fréquemment posées sur MongoDB. Vous pouvez le vérifier car la plupart des questions courantes ont déjà reçu une réponse, et vous pourriez avoir la chance de trouver une solution à votre problème ici.

1. Comment puis-je apprendre MongoDB ?

Le moyen le plus simple et le plus courant d'apprendre MongoDB consiste à suivre les cours de formation en ligne fournis par MongoDB pour les développeurs. Les cours sont développés et dispensés par des ingénieurs experts de MongoDB qui connaissent bien MongoDB. Les cours sont gratuits et couvrent tous les aspects que vous devez connaître pour être un gourou de MongoDB. La plupart des experts ont appris à utiliser cette méthode.

Par conséquent, vous ne serez pas une excellente exception si vous emboîtez le pas. Les cours en ligne fournissent des applications du monde réel qui aident les utilisateurs à mieux comprendre ce sujet. La formation en ligne est à votre rythme, ce qui signifie que vous déterminez combien de temps il vous faudra pour les apprendre. En outre, les cours sont des exercices supplémentaires qui aident les débutants à apprendre et à s'exercer davantage sur MongoDB. Visitez MongoDB University pour obtenir une tonne de cours gratuits et apprendre MongoDB.

2. L'utilisation du serveur MongoDB est-elle gratuite ?

Oui. Le serveur MongoDB est libre d'utilisation en fonction du package que vous choisissez d'utiliser. Par exemple, le serveur communautaire est accessible à tous les utilisateurs. Cependant, si vous recherchez plus de fonctionnalités, vous pouvez utiliser une version payante telle que l'édition MongoDB Enterprise ou Atlas.

3. Expliquez les différences entre MongoDB et les bases de données relationnelles ?

La plupart des bases de données relationnelles telles que MySQL, Oracle, SQL Server et Postgres sont construites sur des architectures conçues à l'origine il y a longtemps (plus de 40 ans). Les exigences des applications à cette époque étaient différentes de celles des applications modernes.

MongoDB est construit sur une architecture de systèmes distribués, contrairement aux bases de données relationnelles, permettant aux utilisateurs de faire évoluer rapidement leurs bases de données sur diverses instances. pour une analyse approfondie, consultez les différences entre MongoDB et MySQL (une base de données relationnelle.) L'objectif principal de la conception de MongoDB était d'augmenter la productivité. La flexibilité du schéma est ce que la plupart des utilisateurs recherchaient, et c'est l'une des fonctionnalités fantastiques offertes par MongoDB.

4. Comment obtenir une licence commerciale MongoDB ?

Pour obtenir une licence commerciale MongoDB, vous pouvez l'acheter auprès de MongoDB Enterprise Advanced.

5. Expliquez comment les données sont stockées dans MongoDB ?

Dans MongoDB, les données sont stockées dans des documents BSON qui utilisent les structures de données au format JSON. Les documents contiennent plusieurs champs, et chaque champ a une valeur de type de données spécifique qui inclut des données binaires, des tableaux et des sous-documents. Les documents qui partagent des structures similaires sont stockés et organisés en tant que collections.

6. Où peut-on exécuter MongoDB ?

Vous pouvez télécharger, installer et exécuter MongoDB de n'importe où. Tant que vous complétez la liberté de verrouillage de la plate-forme, vous pouvez exécuter MongoDB de n'importe où. Par exemple, la version MongoDB Atlas offre aux utilisateurs un service entièrement personnalisé et géré sur AWS, Google Cloud et Azure qui fonctionne sur le principe du paiement à l'utilisation. MongoDB Ops Manager est l'une des meilleures alternatives pour exécuter MongoDB sur votre infrastructure. Cela permet aux équipes de surveiller, sauvegarder, faire évoluer et déployer MongoDB facilement et rapidement.

7. Expliquez pourquoi MongoDB est utile ?

MongoDB est construit autour de trois principes de conception principaux qui permettent aux utilisateurs de créer collectivement des applications plus rapides et de haute qualité. Les trois principes de conception de base sont :

Conception de systèmes distribués permet aux utilisateurs d'allouer intelligemment les données où ils le souhaitent.
Expérience unifiée – donne aux utilisateurs la liberté de courir n'importe où. Ce principe de conception de base permet d'éliminer le verrouillage du fournisseur tout en permettant aux utilisateurs de pérenniser leurs applications.
Modèle de données de document – Cette fonctionnalité offre aux utilisateurs la meilleure et la plus simple façon de travailler avec les données.

8. Quand utiliser MongoDB ?

MongoDB est une base de données NoSQL polyvalente qui peut être utilisée dans des applications analytiques et une gamme d'autres applications OLTP. Un large éventail d'applications peut être traité avec l'Atlas MongoDB et le serveur MongoDB.

9. Expliquez comment MongoDB sécurise les données des clients ?

MongoDB contient des fonctionnalités étendues qui sécurisent, détectent, contrôlent et défendent les données des clients. Vous trouverez ci-dessous certaines de ces fonctionnalités clés qui aident à sécuriser les données des clients :

Autorisation –
RBAC (Role-based Access Control) permet aux utilisateurs de configurer les autorisations granulaires qui permettent aux utilisateurs ou aux privilèges basés sur les applications nécessaires pour effectuer leurs tâches.

Audit est vital pour la conformité réglementaire car il permet aux administrateurs de sécurité d'utiliser le journal d'audit natif de MongoDB pour enregistrer les modifications et les activités de la base de données.

Authentification - MongoDB offre un mécanisme solide et viable de défi-réponse qui simplifie le contrôle d'accès à la base de données basé sur SCRAM-256 ainsi que l'introduction de l'infrastructure de sécurité d'entreprise intégrée. En outre, certaines des fonctionnalités que vous obtenez sont Windows Active Directory, les certificats x.509, LDAP et Kerberos.

Chiffrement partout – En mouvement, les données MongoDB peuvent être chiffrées sur les réseaux, et au repos, les données peuvent être chiffrées sur des disques ou des sauvegardes. Enfin, les données MongoDB peuvent être chiffrées dans la base de données pendant leur utilisation.

Conclusion

Cet article a couvert de manière exhaustive tous les aspects à connaître concernant MongoDB. Au fil du temps, les utilisateurs ont recherché une productivité rapide, que MongoDB offre à ses utilisateurs. Contrairement aux bases de données relationnelles, comme déjà mentionné dans l'article, MongoDB donne à ses utilisateurs la possibilité de faire évoluer rapidement leurs bases de données.