Une base de données NoSQL fournit un mécanisme de stockage et de récupération des données qui est modélisé par des moyens autres que les relations tabulaires utilisées dans les bases de données relationnelles (comme SQL, Oracle, etc.).

Types de bases de données NoSQL:

  • Orienté document
  • Valeur clé
  • Graph
  • Orienté colonne

MongoDB est une base de données orientée document. Il stocke les données sous la forme de documents basés sur la structure BSON. Ces documents sont stockés dans une collection.

  • Modèle de données flexible sous forme de documents
  • Base de données agile et hautement évolutive
  • Plus rapide que les bases de données traditionnelles
  • Langage de requête expressif

Un espace de noms est la concaténation du nom de la base de données et du nom de la collection. Pour par exemple l'école, les étudiants avec l'école comme base de données et les étudiants comme collection

Actuellement, MonggoDB fournit une prise en charge officielle des pilotes pour C, C ++, C #, Java, Node.js, Perl, PHP, Python, Ruby, Scala, Go et Erlang. MongoDB peut facilement être utilisé avec n'importe lequel de ces langages. Il existe également d'autres pilotes pris en charge par la communauté, mais ceux mentionnés ci-dessus sont officiellement fournis par MongoDB.

Les bases de données SQL stockent les données sous forme de tables, de lignes, de colonnes et d'enregistrements. Ces données sont stockées dans un modèle de données prédéfini qui n'est pas très flexible pour les applications à forte croissance du monde réel d'aujourd'hui. MongoDB en revanche utilise une structure flexible qui peut être facilement modifiée et étendue.

MongoDB permet une structure de document hautement flexible et évolutive. Par exemple, un document de données dans MongoDB peut avoir cinq colonnes et l'autre dans la même collection peut avoir dix colonnes. De plus, les bases de données MongoDB sont plus rapides que les bases de données SQL grâce à des techniques d'indexation et de stockage efficaces.

Bien que ces deux bases de données soient orientées document, MongoDB est un meilleur choix pour les applications qui nécessitent des requêtes dynamiques et de bonnes performances sur une très grande base de données. De l'autre côté, CouchDB est mieux utilisé pour les applications avec des requêtes changeantes occasionnellement et des requêtes prédéfinies.

Non. MongoDB ne prend pas en charge de telles relations.

Non. MongoDB ne prend pas en charge les transactions ACID multi-documents par défaut. Cependant, MongoDB fournit une opération atomique sur un seul document.

Par défaut, MongoDB ne prend pas en charge ces relations entre clé primaire et clé étrangère. Cependant, nous pouvons réaliser ce concept en incorporant un document dans un autre. Par exemple, un document d'adresse peut être intégré à l'intérieur du document client.

Non. MongoDB peut être exécuté même sur une petite quantité de RAM. MongoDB alloue et désalloue dynamiquement la RAM en fonction des exigences d'autres processus.

MongoDB pousse les données sur le disque paresseusement. Il met à jour immédiatement l'écriture dans le journal, mais l'écriture des données du journal sur le disque se fait paresseusement.

ObjectID est un type BSON de 12 octets avec:

  • Valeur de 4 octets représentant les secondes
  • Identificateur de machine à 3 octets
  • ID de processus sur 2 octets
  • Compteur 3 octets

Vrai

Oui. La suppression d'un document de la base de données le supprime également du disque.

use school;
db.persons.insert( { name: "kadhir", dept: "CSE" } )

Les index prennent en charge l'exécution efficace des requêtes dans MongoDB. Sans index, MongoDB doit effectuer une analyse de collection, c'est-à-dire analyser chaque document d'une collection, pour sélectionner les documents qui correspondent à l'instruction de requête. Si un index approprié existe pour une requête, MongoDB peut utiliser l'index pour limiter le nombre de documents qu'il doit inspecter.

Par défaut, MongoDB a créé la collection _id pour chaque collection.

Oui. Un champ de tableau peut être indexé dans MongoDB. Dans ce cas, MongoDB indexerait chaque valeur du tableau.

Une requête couverte est celle dans laquelle:

  • les champs utilisés dans la requête font partie d'un index utilisé dans la requête, et
  • les champs renvoyés dans les résultats sont dans le même index

Étant donné que tous les champs sont couverts dans l'index lui-même, MongoDB peut correspondre à la condition de requête et renvoyer les champs de résultat en utilisant le même index sans regarder à l'intérieur des documents. Étant donné que les index sont stockés dans la RAM ou situés séquentiellement sur le disque, un tel accès est beaucoup plus rapide.

Oui. MongoDB prend en charge la création d'index de texte pour prendre en charge la recherche de texte dans le contenu de la chaîne. C'était une nouvelle fonctionnalité qui peut être introduite dans la version 2.6.

Si les index ne rentrent pas dans la RAM, MongoDB lit les données du disque, ce qui est relativement beaucoup plus lent que la lecture de la RAM.

db.collection.getIndexes()

Par défaut, MongoDB écrit les mises à jour sur le disque toutes les 60 secondes. Cependant, ceci est configurable avec les options commitIntervalMs et syncPeriodSecs.

Pour réaliser des concepts de transaction et de verrouillage dans MongoDB, nous pouvons utiliser l'imbrication de documents, également appelés documents embarqués. MongoDB prend en charge les opérations atomiques dans un seul document.

Les opérations d'agrégation traitent les enregistrements de données et renvoient les résultats calculés. Les opérations d'agrégation regroupent les valeurs de plusieurs documents et peuvent effectuer diverses opérations sur les données regroupées pour renvoyer un seul résultat. MongoDB propose trois méthodes d'agrégation: le pipeline d'agrégation, la fonction de réduction de carte et les méthodes et commandes d'agrégation à usage unique.

Le partage est une méthode pour stocker des données sur plusieurs machines. MongoDB utilise le partitionnement pour prendre en charge les déploiements avec de très grands ensembles de données et des opérations à haut débit.

La réplication est le processus de synchronisation des données sur plusieurs serveurs. La réplication assure la redondance et augmente la disponibilité des données. Avec plusieurs copies de données sur différents serveurs de base de données, la réplication protège une base de données de la perte d'un seul serveur. La réplication vous permet également de récupérer après une panne matérielle et des interruptions de service.

Les nœuds principaux et maîtres sont les nœuds qui peuvent accepter les écritures. La réplication de MongoDB est «à maître unique»: un seul nœud peut accepter des opérations d'écriture à la fois.

Les nœuds secondaires et esclaves sont des nœuds en lecture seule qui se répliquent à partir du primaire.

Faux. MongoDB écrit les données uniquement dans le jeu de réplicas principal.

MongoDB préalloue les fichiers de données pour réserver de l'espace et éviter la fragmentation du système de fichiers lorsque vous configurez le serveur.

Vous devriez envisager d'incorporer des documents pour:

  • 'contient' des relations entre entités
  • Relations un-à-plusieurs
  • Raisons de performance

Lors de l'exécution d'une version 32 bits de MongoDB, la taille de stockage totale du serveur, y compris les données et les index, est de 2 gigaoctets. Pour cette raison, ne déployez pas MongoDB en production sur des machines 32 bits.

Si vous exécutez une version 64 bits de MongoDB, il n'y a pratiquement aucune limite à la taille de stockage.

Un moteur de stockage est la partie d'une base de données qui est responsable de la gestion de la façon dont les données sont stockées sur le disque. Par exemple, un moteur de stockage peut offrir de meilleures performances pour les charges de travail lourdes en lecture, et un autre peut prendre en charge un débit plus élevé pour les opérations d'écriture.

MongoDB utilise MMAPv1 et WiredTiger.

Le profileur de base de données collecte des données fines sur les opérations d'écriture MongoDB, les curseurs et les commandes de base de données sur une instance mongod en cours d'exécution. Vous pouvez activer le profilage par base de données ou par instance.

Le profileur de base de données écrit toutes les données qu'il collecte dans la collection system.profile, qui est une collection plafonnée.

Lors de l'exécution avec la journalisation, MongoDB stocke et applique les opérations d'écriture en mémoire et dans le journal sur disque avant que les modifications ne soient présentes dans les fichiers de données sur le disque. Les écritures dans le journal sont atomiques, garantissant la cohérence des fichiers journaux sur disque. Avec la journalisation activée, MongoDB crée un sous-répertoire de journal dans le répertoire défini par dbPath, qui est / data / db par défaut.

db.isMaster ()

Non. MMAPv1 ne permet pas de configurer la taille du cache.

Pour le moteur de stockage WiredTiger, vous pouvez spécifier la taille maximale du cache que WiredTiger utilisera pour toutes les données. Cela peut être fait à l'aide de l'option storage.wiredTiger.engineConfig.cacheSizeGB.

MongoDB utilise des verrous de lecture-écriture qui permettent aux lecteurs simultanés d'accéder en partage à une ressource, telle qu'une base de données ou une collection, mais donnent un accès exclusif à une seule opération d'écriture.

Vous pouvez utiliser la méthode snapshot () sur un curseur pour isoler l'opération pour un cas très spécifique. snapshot () parcourt l'index sur le champ _id et garantit que la requête ne retournera pas plus d'une fois chaque document.

Oui. Des opérations telles que copyDatabase (), repairDatabase (), etc. peuvent verrouiller plus d'une base de données impliquée.

Dans la réplication, lorsque MongoDB écrit dans une collection sur le primaire, MongoDB écrit également dans l'oplog du primaire, qui est une collection spéciale dans la base de données locale. Par conséquent, MongoDB doit verrouiller à la fois la base de données de la collection et la base de données locale.

GridFS est une spécification pour le stockage et la récupération de fichiers qui dépassent la limite de taille de document BSON de 16 Mo. Au lieu de stocker un fichier dans un seul document, GridFS divise un fichier en parties, ou blocs, et stocke chacun de ces blocs dans un document séparé.

Oui. Le moteur JavaScript V8 ajouté dans la version 2.4 permet à plusieurs opérations JavaScript de s'exécuter en même temps.

La commande describe () peut être utilisée pour ces informations. Les modes possibles sont: «queryPlanner», «executionStats» et «allPlansExecution».