Définition :
Une base de données NoSQL est un système de gestion de bases de données non
relationnel, conçu pour gérer de grandes quantités de données non structurées ou semi-
structurées.
Avantages :
Scalabilité horizontale.
Flexibilité dans la modélisation des données (pas de schéma fixe).
Haute performance pour des volumes massifs de données.
Compatible avec des données non structurées ou semi-structurées.
Choix de base NoSQL :
Un système NoSQL est préférable dans les cas suivants :
o Volumes massifs de données nécessitant une scalabilité.
o Données hétérogènes ou évolutives.
o Applications nécessitant des performances élevées (comme les réseaux sociaux ou
les jeux en ligne).
Utilisation de JSON/BSON :
MongoDB stocke les données sous forme de BSON (Binary JSON), un format optimisé pour
la performance. JSON est simple à manipuler, flexible
Indexation dans MongoDB :
MongoDB utilise des index pour accélérer les recherches.
Avantage : Améliore la vitesse des requêtes.
Inconvénient : Consomme de l’espace disque supplémentaire et ralentit les opérations
d’écriture (insertions, mises à jour).
Modèle de données orienté colonnes :
Données stockées sous forme de colonnes, organisées en familles de colonnes. Chaque ligne
peut avoir un nombre différent de colonnes.
Exemple d’application : Systèmes analytiques, moteurs de recommandations (ex. : Cassandra
pour le monitoring).
Différence entre base relationnelle et NoSQL :
Base relationnelle : Utilise des tables avec des relations définies (schéma fixe). Convient pour
des données bien structurées (ex. : ERP, CRM).
Base NoSQL : Pas de schéma strict, données souvent stockées sous forme de documents,
colonnes ou graphes. Adaptée aux applications nécessitant de fortes performances et de la
flexibilité (ex. : réseaux sociaux, big data).
Voici la correction détaillée des questions sur NoSQL :
Introduction à NoSQL :
1. Quelles sont les principales différences entre une base de données NoSQL et une base
relationnelle (SQL) ?
o NoSQL : Pas de schéma rigide, données souvent non structurées, scalabilité
horizontale, supporte la cohérence éventuelle.
o SQL : Schéma rigide avec relations entre tables, données strictement structurées,
scalabilité verticale, transactions ACID.
2. Pourquoi les bases NoSQL sont-elles adaptées aux systèmes distribués ?
Elles permettent la répartition des données sur plusieurs serveurs via le sharding, et
supportent la tolérance aux pannes grâce à la réplication. De plus, elles assurent une haute
disponibilité.
3. Donnez des exemples d'applications où NoSQL est préféré à SQL.
o Réseaux sociaux (Facebook, Twitter).
o IoT (Internet des objets).
o Jeux en ligne nécessitant une faible latence.
o Systèmes de gestion de logs.
Types de bases de données NoSQL :
1. Quels sont les quatre principaux types de bases NoSQL ?
o Clé-valeur : Stocke les paires clé-valeur (ex : Redis, DynamoDB).
o Colonnes : Stocke les données en colonnes (ex : Cassandra, HBase).
o Documents : Stocke les documents JSON/BSON (ex : MongoDB, CouchDB).
o Graphes : Représente les relations entre les données (ex : Neo4j, ArangoDB).
2. Différence entre base clé-valeur et base orientée documents :
o Clé-valeur : Simple, rapide pour des recherches par clé.
o Documents : Plus complexe, permet des requêtes sur les champs internes des
documents.
3. Pourquoi choisir une base orientée graphes ?
Pour modéliser des relations complexes entre les données, comme dans les réseaux sociaux
ou les systèmes de recommandations.
Modèle de données et concepts clés :
1. Schéma flexible dans NoSQL :
Contrairement aux bases SQL, les bases NoSQL permettent de stocker des documents ayant
des structures différentes au sein d'une même collection.
2. Dénormalisation des données dans NoSQL :
o Avantages : Amélioration des performances en lecture, simplicité d'accès aux
données.
o Inconvénients : Augmentation de la redondance, complexité des mises à jour.
3. Sharding et réplication :
o Sharding : Division des données sur plusieurs serveurs pour améliorer la scalabilité.
o Réplication : Copie des données sur plusieurs serveurs pour assurer la disponibilité et
la tolérance aux pannes.
Consistance et performances :
1. Théorème CAP :
Une base de données distribuée peut garantir au maximum deux des trois propriétés
suivantes : Consistency (cohérence), Availability (disponibilité), Partition tolerance (tolérance
aux partitions réseau).
2. Différence entre consistance forte et consistance éventuelle :
o Consistance forte : Les données sont immédiatement cohérentes sur tous les nœuds.
o Consistance éventuelle : Les données deviennent cohérentes après un certain délai.
3. Haute disponibilité dans NoSQL :
Les bases NoSQL utilisent des mécanismes comme la réplication et la tolérance aux partitions
pour garantir que les données restent accessibles même en cas de panne.
Requêtes et manipulation des données :
1. Exemples d’opérations dans MongoDB :
o Rechercher un document :
o db.users.find({ age: { $gt: 25 } });
o Insérer un document :
o db.users.insertOne({ name: "Alice", age: 30 });
o Mettre à jour un document :
o db.users.updateOne({ name: "Alice" }, { $set: { age: 31 } });
o Supprimer un document :
o db.users.deleteOne({ name: "Alice" });
2. Pipeline d'agrégation dans MongoDB :
Le pipeline d’agrégation permet de traiter les documents par étapes. Exemple :
3. db.orders.aggregate([
4. { $match: { status: "shipped" } },
5. { $group: { _id: "$customerId", total: { $sum: "$amount" } } }
6. ]);
7. Différence entre find() et aggregate() :
o find() : Requêtes simples pour rechercher des documents.
o aggregate() : Requêtes complexes pour regrouper, filtrer et transformer les données.
Transactions et sécurité :
1. Transactions ACID dans NoSQL :
La plupart des bases NoSQL ne garantissent pas les transactions ACID, mais certaines comme
MongoDB (à partir de la version 4.0) les supportent pour les opérations multi-documents.
2. Gérer les transactions dans MongoDB :
Utilisation des sessions :
3. const session = db.getMongo().startSession();
4. session.startTransaction();
5. // Opérations de transaction
6. session.commitTransaction();
7. Mécanismes de sécurité dans NoSQL :
o Contrôle d'accès basé sur les rôles.
o Chiffrement des données au repos et en transit.
o Authentification avec des certificats ou des identifiants sécurisés.
Comparaison et choix de base NoSQL :
1. Comparaison de MongoDB, Cassandra et Redis :
o MongoDB : Flexible, orientée documents, idéale pour des applications diverses.
o Cassandra : Haute écriture, tolérance aux pannes, orientée colonnes.
o Redis : Ultra-rapide, en mémoire, idéal pour le caching.
2. Cas d’usage pour Redis :
o Stockage temporaire (sessions utilisateurs).
o Systèmes de files d’attente.
o Classement en temps réel.
3. Critères pour choisir une base NoSQL :
o Type de données à stocker.
o Besoins en scalabilité et performances.
o Modèle de cohérence requis.
o Exigences en termes de disponibilité et de tolérance aux pannes.
Tu souhaites approfondir certaines réponses ou voir des cas pratiques en détails ? 😊