Introduction au Big Data et Bases de Données NoSQL Présentation PDF
Document Details
Uploaded by AffirmativeHydrangea
Mme. BELKADI Fatima Zahra
Tags
Summary
Cette présentation aborde le Big Data et les bases de données NoSQL. Elle explore les concepts clés, les 8V, l'architecture du Big Data, et les différents types de bases de données NoSQL telles que les bases de données clés-valeurs, de colonnes et de documents. L'écosystème du Big Data et son intégration avec les NoSQL sont également examinés.
Full Transcript
Introduction au Big Data & Base de données NoSQL Mme. BELKADI Fatima Zahra I. Introduction au Big Data Contenu II. Concepts de base des BD NoSQL III. Exploration des principale BD NoSQL IV. Ecosystème du Big Data et Intégration avec NoSQL...
Introduction au Big Data & Base de données NoSQL Mme. BELKADI Fatima Zahra I. Introduction au Big Data Contenu II. Concepts de base des BD NoSQL III. Exploration des principale BD NoSQL IV. Ecosystème du Big Data et Intégration avec NoSQL V. Etude de Cas et Application Pratiques PARTIE 1 Introduction au Big Data 1. Définitions et Concepts Clés 2. Architecture du Big Data 3. Cas d’usage du Big Data PARTIE 2 Concepts de base des BD NoSQL 1. Introduction aux Bases de Données NoSQL 2. Comparaison SQL vs NoSQL 3. Quand utiliser NoSQL ? PARTIE 3 Exploration des principale BD NoSQL 1. Bases de Données Clés-Valeurs 2. Bases de Données de Colonnes 3. Bases de Données de Documents 4. Bases de Données de Graphes PARTIE 4 Ecosystème du Big Data et Intégration avec NoSQL 1. Hadoop et HDFS 2. Apache Spark et NoSQL 3. Data Lakes et NoSQL PARTIE 5 Etude de Cas et Application Pratiques PARTIE 1 Introduction au Big Data 1. Définitions et Concepts Clés 2. Architecture du Big Data 3. Cas d’usage du Big Data Introduction au Big Data : -1- Définition et Concepts Clé 1 Qu’est ce que le Big Data ? Le Big Data désigne des ensembles de données si volumineux et complexes qu'ils dépassent les capacités des outils traditionnels de gestion des données à les capturer, stocker, gérer et analyser. Le terme a émergé avec l'essor des technologies numériques et la multiplication des sources de données : réseaux sociaux, objets connectés, applications web, etc. Veuillez remplacer le texte, cliquez sur Ajouter un titre pertinent Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques Volume Vélocité Variété Valeur Véracité Variabilité Visualisation Vulnérabilité Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques Le volume fait référence à la quantité massive de données que les entreprises collectent chaque jour. Avec l'essor des smartphones, des réseaux sociaux, de l'Internet des objets (IoT), et des transactions numériques, les données sont générées à un rythme sans précédent. Volume Ce volume gigantesque est une mine d'or pour les entreprises qui savent comment l'exploiter. Exemple : Dans l'e-commerce, les plateformes comme Amazon ou Alibaba traitent des milliards de transactions pour mieux comprendre les habitudes d'achat et optimiser leurs recommandations de produits. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques La vélocité fait référence à la vitesse à laquelle les données sont générées et doivent être traitées. Les entreprises doivent être capables d'analyser les données en temps réel pour rester Vélocité compétitives. Exemple : Dans le secteur bancaire, les transactions se font instantanément. Grâce au traitement rapide des données, les banques peuvent détecter les fraudes en temps réel, ce qui améliore la sécurité des clients. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques Les données proviennent de multiples sources et sont de différents types : structurées (comme les bases de données SQL), semi- structurées (comme les fichiers XML ou JSON), et non structurées (comme les images, vidéos, messages sur les réseaux sociaux). La Variété gestion efficace de cette variété est un défi important. Exemple : Dans le domaine du marketing, les entreprises analysent les commentaires des clients, les mentions sur les réseaux sociaux, et les données de vente pour obtenir une vue d'ensemble du comportement du consommateur. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques La véracité concerne la qualité des données : sont-elles fiables, précises et pertinentes ? Des données de mauvaise qualité peuvent conduire à des décisions erronées. Les entreprises doivent s'assurer que les données collectées sont de haute qualité et exemptes Véracité d'erreurs. Exemple : Dans la santé, les décisions médicales basées sur des données incorrectes ou incomplètes peuvent entraîner des diagnostics erronés. Il est donc crucial que les données soient exactes et à jour. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques Le Big Data permet d'extraire de la valeur des données pour prendre des décisions éclairées. Cependant, avoir de grandes quantités de données ne suffit pas ; il faut aussi les transformer en informations exploitables pour en tirer des avantages concurrentiels. Valeur Exemple : Dans l'industrie des assurances, les entreprises utilisent le Big Data pour mieux comprendre les risques et ajuster les primes d'assurance en fonction des comportements des clients. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques La variabilité concerne les changements constants dans les flux de données et leur interprétation. Les modèles de données peuvent évoluer rapidement, ce qui nécessite des systèmes capables de s'adapter à ces variations. Variabilité Exemple : Dans le domaine des transports, des données météorologiques en constante évolution influencent les algorithmes de gestion de la flotte aérienne pour optimiser les routes en temps réel. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques La visualisation est l'art de représenter les données de manière compréhensible pour les décideurs. Les outils de visualisation permettent de transformer des données complexes en graphiques, tableaux de bord, et rapports clairs. Visualisation Exemple : Les gestionnaires d'une chaîne d'approvisionnement peuvent utiliser des tableaux de bord pour suivre les stocks en temps réel et identifier les goulots d'étranglement. Introduction au Big Data : -1- Définition et Concepts Clé 1 Les 8V du Big Data : Caractéristiques Le Big Data soulève des défis en matière de sécurité et de confidentialité, car de grandes quantités de données sont susceptibles d'être volées ou mal utilisées. Protéger les données sensibles et respecter les réglementations en vigueur (comme le Vulnérabilité RGPD en Europe) est devenu une priorité pour les entreprises. Exemple : Dans le secteur des finances, une violation des données sensibles des clients peut entraîner une perte de confiance, des amendes importantes, et un impact négatif sur la réputation de l'entreprise. Introduction au Big Data : -1- Définition et Concepts Clé 1 L’impact du Big Data sur l’économie numérique Innovation de produits et services : Grâce à une analyse approfondie des Meilleure compréhension besoins des clients, les entreprises peuvent des clients : développer de nouveaux produits et services Les entreprises peuvent plus adaptés au marché. analyser les comportements, préférences, et habitudes des clients, leur permettant de personnaliser leurs offres Amélioration de la prise de décision : et d’améliorer la satisfaction En analysant des données en temps client. réel, les entreprises peuvent prendre des décisions plus éclairées, rapides et fondées sur des faits. Optimisation des Secteurs d'utilisation : processus : Le Big Data est utilisé dans plusieurs industries : Le Big Data aide les Santé : Amélioration des diagnostics, traitement personnalisé des patients, entreprises à identifier les prévention des épidémies. inefficacités dans leurs Finances : Gestion des risques, détection de fraudes, optimisation des processus internes, à investissements. améliorer la production, la Marketing : Publicité ciblée, segmentation des clients, mesure de l’efficacité logistique, et la gestion des des campagnes. ressources. Transport : Optimisation des itinéraires, gestion des flottes, prévision de la demande. PARTIE 1 Introduction au Big Data 1. Définitions et Concepts Clés 2. Architecture du Big Data 3. Cas d’usage du Big Data Introduction au Big Data : -2- Architecture du Big Data 1 Infrastructure et technologies associées au Big Data Le Big Data nécessite des infrastructures de stockage et de traitement hautement évolutives. Ces infrastructures comprennent des systèmes distribués pour gérer des données massives et complexes. Stockage distribué : Utilisation de systèmes comme HDFS (Hadoop Distributed File System) ou Amazon S3 pour stocker de grandes quantités de données à travers plusieurs serveurs. Traitement distribué : Utilisation de frameworks comme Hadoop ou Apache Spark pour le traitement parallèle des données sur plusieurs nœuds de calcul. Introduction au Big Data : -2- Architecture du Big Data 1 Infrastructure et technologies associées au Big Data Le stockage distribué permet de répartir des données sur plusieurs serveurs ou machines dans un réseau, au lieu de les stocker sur un seul serveur. Cela permet de surmonter les limites de capacité des systèmes traditionnels et de garantir la redondance (en cas de panne d'une machine, les données restent accessibles depuis d'autres machines). Introduction au Big Data : -2- Architecture du Big Data 1 Infrastructure et technologies associées au Big Data Le traitement distribué consiste à diviser le travail de traitement des données en plusieurs tâches parallèles exécutées sur plusieurs nœuds (serveurs) simultanément. Cette approche permet de traiter de grandes quantités de données plus rapidement en exploitant la puissance de plusieurs machines. Introduction au Big Data : -2- Architecture du Big Data 1 Pourquoi ces systèmes sont importants dans le Big Data ? Efficacité à grande échelle : Avec le Big Data, les volumes de données dépassent la capacité d'un seul serveur à les traiter efficacement. Le stockage et le traitement distribués permettent de contourner cette limitation. Introduction au Big Data : -2- Architecture du Big Data 1 Pourquoi ces systèmes sont importants dans le Big Data ? Scalabilité : Les entreprises peuvent simplement ajouter de nouveaux nœuds pour stocker plus de données ou traiter des charges de travail supplémentaires, sans avoir à redimensionner tout le système. Introduction au Big Data : -2- Architecture du Big Data 1 Pourquoi ces systèmes sont importants dans le Big Data ? Tolérance aux pannes : Grâce à la redondance des données et à la distribution des tâches, ces systèmes peuvent continuer à fonctionner même en cas de défaillance matérielle, garantissant une disponibilité continue des services. PARTIE 1 Introduction au Big Data 1. Définitions et Concepts Clés 2. Architecture du Big Data 3. Cas d’usage du Big Data Introduction au Big Data : -3- Cas d’usage du Big Data 1 Secteur du Commerce et du Marketing Analyse des habitudes de consommation et recommandations personnalisées (Amazon, Netflix, etc.). Optimisation des chaînes d'approvisionnement grâce aux prévisions basées sur les données. Introduction au Big Data : -3- Cas d’usage du Big Data 1 Secteur de la Santé Analyse de données médicales massives pour la recherche scientifique, la détection de maladies, et le suivi en temps réel des patients. L'utilisation du Big Data pour prédire les épidémies ou personnaliser les traitements médicaux. Introduction au Big Data : -3- Cas d’usage du Big Data 1 Secteur Financier L’utilisation des données pour la détection de fraudes dans les transactions. Analyse des comportements financiers des clients et gestion des risques en temps réel. Introduction au Big Data : -3- Cas d’usage du Big Data 1 Secteur des Transports Optimisation des itinéraires et gestion du trafic en temps réel (Waze, Google Maps). Gestion prédictive des flottes de véhicules (Uber, Lyft) et planification des besoins en maintenance. Autres Secteurs Médias sociaux : Extraction de données sur les sentiments des utilisateurs, tendances sociales. Industrie : Analyse des données de capteurs pour la maintenance prédictive dans l'Industrie 4.0. PARTIE 2 Concepts de base des BD NoSQL 1. Introduction aux BD NoSQL 2. Comparaison SQL vs NoSQL 3. Quand utiliser NoSQL ? Concepts de base des BD NoSQL: -1- Introduction 2 Les base de données NoSQL Les bases de données NoSQL (Not Only SQL) sont des systèmes de gestion de base de données non relationnels qui permettent de stocker et de gérer de grandes quantités de données non structurées, semi-structurées ou très volumineuses. Contrairement aux bases de données relationnelles (SQL), les bases NoSQL sont conçues pour être flexibles et s'adaptent mieux aux besoins des systèmes distribués et aux applications nécessitant une évolutivité horizontale, comme les réseaux sociaux, le Big Data, ou les applications cloud. Concepts de base des BD NoSQL: -1- Introduction 2 Les 4 types des base de données NoSQL Il existe plusieurs types de bases de données NoSQL, chacun répondant à des besoins spécifiques : Bases de données clé-valeur : Stockent les données sous forme de paires clé-valeur (exemple : Redis). Concepts de base des BD NoSQL: -1- Introduction 2 Les 4 types des base de données NoSQL Bases de données orientées documents : Stockent les données sous forme de documents, souvent en JSON, BSON ou XML (exemple : MongoDB). Concepts de base des BD NoSQL: -1- Introduction 2 Les 4 types des base de données NoSQL Bases de données orientées colonnes : Les données sont stockées dans des colonnes plutôt que des lignes (exemple : Cassandra). Concepts de base des BD NoSQL: -1- Introduction 2 Les 4 types des base de données NoSQL Bases de données orientées graphes : Utilisées pour modéliser des relations complexes entre les données (exemple : Neo4j). PARTIE 2 Concepts de base des BD NoSQL 1. Introduction aux BD NoSQL 2. Comparaison SQL vs NoSQL 3. Quand utiliser NoSQL ? Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 1. Modèle de données SQL : Les bases de données relationnelles utilisent un modèle de données structuré sous forme de tables avec des lignes et des colonnes, où chaque ligne représente un enregistrement et chaque colonne une propriété (ou attribut). Les relations entre les données sont gérées par des clés primaires et étrangères. Exemple : MySQL, PostgreSQL, Oracle. NoSQL : Les bases de données NoSQL adoptent des modèles de données non relationnels, adaptés pour stocker des données non structurées ou semi-structurées. Selon le type de base NoSQL, elles peuvent utiliser différents modèles, comme des paires clé-valeur, des documents, des colonnes ou des graphes. Exemple : MongoDB (orienté document), Redis (clé-valeur), Cassandra (colonnes), Neo4j (graphe). Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 2. Schéma SQL : Les bases de données SQL imposent un schéma fixe et rigide. Cela signifie que la structure des tables (colonnes, types de données) doit être définie à l'avance et que toute modification ultérieure est complexe et demande souvent des opérations lourdes, comme la migration de données. NoSQL : Les bases de données NoSQL offrent une flexibilité de schéma. Il n'est pas nécessaire de définir un schéma rigide à l'avance. Les documents dans une même collection peuvent avoir des structures différentes (par exemple, des documents JSON peuvent contenir des champs supplémentaires ou en manquer par rapport à d'autres). Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 3. Scalabilité SQL : Les bases de données relationnelles se scalent principalement de manière verticale, ce qui signifie que pour gérer plus de données ou des charges plus lourdes, on augmente la puissance (CPU, RAM, stockage) du serveur où la base de données est hébergée. Cela a des limites et peut devenir coûteux. NoSQL : Les bases de données NoSQL sont conçues pour la scalabilité horizontale, ce qui signifie qu'on peut ajouter plus de serveurs au fur et à mesure que les données augmentent, sans avoir à augmenter la capacité d'un seul serveur. Cela permet de répartir la charge sur plusieurs machines, ce qui est plus efficace pour les très grands volumes de données. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 4. Transactions SQL : Les bases SQL garantissent des transactions ACID (Atomicité, Cohérence, Isolation, Durabilité), ce qui est essentiel dans des environnements où la cohérence des données est primordiale, comme les systèmes financiers ou les bases de données critiques pour l'intégrité des données. Cela permet de s'assurer qu'une série d'opérations sur une base de données se fait entièrement ou pas du tout. NoSQL : Beaucoup de bases NoSQL suivent le modèle BASE (Basically Available, Soft state, Eventual consistency), qui privilégie la disponibilité et la performance au détriment de la cohérence immédiate. Cela signifie que les données peuvent ne pas être immédiatement cohérentes entre différents nœuds, mais elles finiront par l’être avec le temps. Certaines bases NoSQL prennent en charge les transactions ACID, mais elles ne sont généralement pas aussi robustes que dans les bases SQL. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 4. Transactions SQL : Les bases SQL garantissent des transactions ACID (Atomicité, Cohérence, Isolation, Durabilité), ce qui est essentiel dans des environnements où la cohérence des données est primordiale, comme les systèmes financiers ou les bases de données critiques pour l'intégrité des données. Cela permet de s'assurer qu'une série d'opérations sur une base de données se fait entièrement ou pas du tout. NoSQL : Beaucoup de bases NoSQL suivent le modèle BASE (Basically Available, Soft state, Eventual consistency), qui privilégie la disponibilité et la performance au détriment de la cohérence immédiate. Cela signifie que les données peuvent ne pas être immédiatement cohérentes entre différents nœuds, mais elles finiront par l’être avec le temps. Certaines bases NoSQL prennent en charge les transactions ACID, mais elles ne sont généralement pas aussi robustes que dans les bases SQL. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 Rappel: ACID est un acronyme désignant quatre propriétés essentielles des transactions dans les systèmes de gestion de bases de données : 1. Atomicité : Garantit que toutes les opérations d'une transaction sont exécutées complètement ou pas du tout. Si une partie échoue, l'ensemble de la transaction est annulé. 2. Cohérence : Assure que la base de données passe d'un état valide à un autre état valide. Les règles d'intégrité sont respectées à la fin de la transaction. 3. Isolation : Garantit que les transactions concurrentes n'interfèrent pas les unes avec les autres. Les résultats d'une transaction en cours ne sont pas visibles aux autres transactions tant qu'elle n'est pas terminée. 4. Durabilité: Assure que les résultats d'une transaction validée sont permanents, même en cas de panne système. Les données confirmées sont enregistrées de manière définitive. Ces propriétés garantissent la fiabilité et la robustesse des transactions dans une base de données. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 Rappel : BASE est un acronyme qui désigne un modèle de gestion des données en informatique, principalement utilisé dans les systèmes distribués. Il se décompose comme suit : - Basically Available (Fondamentalement disponible) : Cela signifie que le système est conçu pour être toujours disponible, même en cas de défaillance partielle. - Soft state (État souple) : L'état du système peut changer au fil du temps, même sans nouvelles entrées de données, en raison de la réconciliation asynchrone des données. - Eventual consistency (Cohérence éventuelle) : Les données peuvent devenir incohérentes temporairement, mais le système garantit qu'à terme, toutes les copies des données convergeront vers une cohérence. En résumé, BASE privilégie la disponibilité et la flexibilité au détriment d'une cohérence immédiate. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 5. Performances SQL : Les bases de données SQL sont optimisées pour des transactions complexes, notamment les jointures entre plusieurs tables, les opérations de recherche et les requêtes structurées. Elles sont plus lentes lorsqu'il s'agit de gérer des volumes massifs de données non structurées ou des écritures fréquentes. NoSQL : Les bases NoSQL sont conçues pour une gestion efficace des lectures et écritures rapides sur de grandes quantités de données. Elles sont particulièrement performantes pour les opérations simples sur de grandes quantités de données, mais ne sont pas aussi efficaces que les bases SQL pour des requêtes complexes impliquant des relations entre données. Concepts de base des BD NoSQL: 2- Comparaison entre SQL et NoSQL 2 6. Cas d'usage SQL : Les bases relationnelles sont idéales pour des applications où la cohérence et l'intégrité des données sont critiques, comme les systèmes de gestion de bases de données pour des entreprises, les banques, ou tout environnement nécessitant une forte normalisation et des transactions complexes. NoSQL : Les bases NoSQL sont privilégiées pour des applications nécessitant une flexibilité de schéma, une grande évolutivité, ou la gestion de données non structurées (réseaux sociaux, systèmes de recommandation, Big Data, analyses en temps réel, applications cloud). PARTIE 2 Concepts de base des BD NoSQL 1. Introduction aux BD NoSQL 2. Comparaison SQL vs NoSQL 3. Quand utiliser NoSQL ? Concepts de base des BD NoSQL: 3- Quand utilisé le NoSQL 2 NoSQL est adapté dans les cas suivants : Volumes de données massifs : Lorsque les systèmes doivent gérer de grandes quantités de données non structurées ou en croissance rapide, comme dans le Big Data. Flexibilité des schémas : Lorsque le modèle de données est susceptible de changer fréquemment ou que les données ne peuvent pas être facilement structurées dans des tableaux fixes (par exemple, des documents variés en JSON). Scalabilité horizontale : Dans des environnements nécessitant une répartition de la charge de travail sur plusieurs serveurs ou clusters, NoSQL facilite l'ajout de nouveaux nœuds pour répondre à l'augmentation du trafic. Concepts de base des BD NoSQL: 3- Quand utilisé NoSQL 2 Applications nécessitant une haute disponibilité : Certaines bases de données NoSQL offrent une haute disponibilité et une tolérance aux pannes, ce qui est critique pour les applications en temps réel, comme les réseaux sociaux ou les services de streaming. Modélisation complexe des relations : Pour des applications qui nécessitent des relations complexes entre entités (comme les réseaux sociaux ou les moteurs de recommandation), les bases de données orientées graphes (un type de NoSQL) sont très efficaces. En résumé, NoSQL est un choix optimal pour les applications nécessitant une flexibilité, une gestion de grands volumes de données et une évolutivité. Toutefois, il ne remplace pas les bases relationnelles SQL, qui restent essentielles pour les applications nécessitant une forte cohérence des données et des transactions complexes. PARTIE 3 Exploration des principale BD NoSQL 1. Bases de Données Clés-Valeurs 2. Bases de Données de Colonnes 3. Bases de Données de Documents 4. Bases de Données de Graphes Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les bases orientées clé/valeur sont utilisées pour le stockage temporaire de données ou pour un accès rapide sans requêtes complexes. Chaque donnée est référencée par une clé : c’est à partir de cette référence que l’on y accède. Le principe est très similaire aux systèmes de stockage d’objets où on accède aux objets via une clé. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 -Les bases de données clé – valeur : Redis Amazon DynamoDB Oracle NoSQL Database InfinityDB Aerospike Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 C’est quoi Redis? Redis (Remote Dictionary Server) est un système de stockage de données en mémoire, open-source, utilisé comme base de données, cache et courtier de messages. Il est particulièrement performant et rapide grâce à son stockage en mémoire, tout en offrant des options de persistance sur disque. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 -Les langages supportés par Redis : Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 -La liste des entreprises connues qui utilisent Redis : Twitter GitHub Pinterest Snapchat Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Téléchargement et installation la base de données Redis Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 - Téléchargement et installation la base de données Redis sur Windows Voir la vidéo d’installation Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Redis est une base de données de la forme clef-valeur, mais chaque valeur peut contenir une structure de données plus ou moins complexe (chaîne de caractères, liste, hash). Par habitude, nous organisons les clefs de cette manière : « aaa:bbb:ccc » Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : Voici une explication détaillée de chaque instruction : 1. SET compositeurs:beethoven:age 250 Cette instruction crée une clé `compositeurs:beethoven:age` dans la base de données et lui affecte une valeur de `250`. Il s'agit d'un type de données appelé « chaine de caractères ». Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 2. GET compositeurs:beethoven:age Cette instruction récupère la valeur(stockée précédemment) associée à la clé `compositeurs:beethoven:age`. Dans ce cas, la valeur est `"250"`. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 3. EXISTS compositeurs:beethoven:age Cette instruction vérifie si la clé `compositeurs:beethoven:age` existe dans la base de données. Si elle existe, Redis renvoie `1`, sinon il renvoie `0`. Ici, la clé existe donc Redis renvoie `(integer)1`. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 4. INCR compositeurs:beethoven:age Cette instruction incrémente (augmente de 1) la valeur associée à la clé `compositeurs:beethoven:age`. La nouvelle valeur est alors `"251"`, qui est récupérée au fur et à mesure par l'instruction. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 5. `DECR compositeurs:beethoven:age` Cette instruction décrémente (diminue de1) la valeur associée à la clé `compositeurs:beethoven:age`. La nouvelle valeur est alors `"250"`, qui est récupérée au fur et à mesure par l'instruction. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 6. DEL compositeurs:beethoven:age Cette instruction supprime la clé `compositeurs:beethoven:age` et sa valeur associée. La valeur `1` retournée par Redis indique que la clé a été supprimée avec succès. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commençons par utiliser des simples opérations GET/SET : 7. EXISTS compositeurs:beethoven:age Cette dernière instruction vérifie à nouveau si la clé `compositeurs:beethoven:age` existe dans la base de données. Puisque la clé a été supprimée précédemment, Redis renvoie `(integer)0`. En résumé, ces instructions montrent comment créer, récupérer, incrémenter, décrémenter et supprimer une clé dans une base de données Redis. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Quelques exemples avec une liste de quelques symphonies célèbres de Beethoven : Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Commandes utilisées : RPUSH: ajoute un ou plusieurs éléments à la fin d'une liste. LRANGE: renvoie une plage d'éléments d'une liste. RPOP: supprime et renvoie l'élément situé à la fin d'une liste. Explication étape par étape : 1. Ajout d'éléments à la liste RPUSH compositeurs:beethoven:symphonies Eroica Cette commande ajoute l'élément "Eroica" à la fin de la liste compositeurs:beethoven:symphonies. La réponse (integer)1 indique que la liste contient désormais un élément. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Explication étape par étape : 2- Ajout de plusieurs éléments à la liste RPUSH compositeurs:beethoven:symphonies Pastoral Choral Cette commande ajoute les éléments "Pastoral" et "Choral" à la fin de la liste compositeurs:beethoven:symphonies. La réponse (integer)3 indique que la liste contient désormais trois éléments. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Explication étape par étape : 3- Affichage de la liste LRANGE compositeurs:beethoven:symphonies 0 -1 Cette commande renvoie tous les éléments de la liste compositeurs:beethoven:symphonies. La commande LRANGE est utilisée pour renvoyer une plage d'éléments d'une liste en Redis. Les deux valeurs à la fin de la commande (0 et -1) spécifient la plage d'éléments à renvoyer. 0 représente le premier élément de la liste. En Redis, les indices des listes commencent à 0, donc 0 fait référence au premier élément. -1 représente le dernier élément de la liste. En utilisant un numéro négatif, Redis comptera à partir de la fin de la liste. Dans ce cas, -1 fait référence au dernier élément. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Explication étape par étape : 4- Ajouter un élément supplémentaire RPUSH compositeurs:beethoven:symphonies ErrorValue Cette commande ajoute l'élément "ErrorValue" à la fin de la liste `compositeurs:beethoven:symphonies`. La réponse `(integer)4` indique que la liste contient désormais quatre éléments. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Explication étape par étape : 5- Suppression de l’élément le plus récent RPOP compositeurs:beethoven:symphonies Cette commande supprime et renvoie l'élément situé à la fin de la liste `compositeurs:beethoven:symphonies`. La réponse est `"ErrorValue"`, qui est l'élément que nous venons d'ajouter. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Explication étape par étape : 6. Affichage de la liste après suppression LRANGE compositeurs:beethoven:symphonies 0 -1 Cette commande renvoie tous les éléments de la liste `compositeurs:beethoven:symphonies` après suppression de l'élément le plus récent. La réponse est :. Nous voyons que la liste contient à nouveau trois éléments, sans l'élément "ErrorValue" que nous avions ajouté précédemment. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Enfin, un exemple de type important : le hash. Les hash sont très utilisés pour la représentation des objets; utilisons les pour associer le numéro des symphonies avec leur nom : Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques 1. Suppression d'une clé DEL compositeurs:beethoven:symphonies Cette commande supprime la clé compositeurs:beethoven:symphonies de la base de données Redis si elle existe. Le (integer)1 indique que la clé a été supprimée avec succès. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques 2. Ajout de symphonies de Beethoven Les commandes suivantes ajoutent des symphonies de Beethoven sous forme de hashes (cartes clé-valeur) : HMSET compositeurs:beethoven:symphonies:6 name "Pastoral" date "1808" HMSET compositeurs:beethoven:symphonies:9 name "Choral" date "1822" La commande HMSET permet d'ajouter plusieurs paires clé-valeur à un hash Redis. Dans cet exemple, nous créons des hashes pour les symphonies N° 3,6 et 9 de Beethoven, avec les clés name pour le nom de la symphonie et date pour l'année de composition. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques 3. Récupération de données : Les commandes suivantes récupèrent les données stockées dans les hash Redis HGETALL compositeurs:beethoven:symphonies:9 La commande HGETALL permet de récupérer toutes les paires clé-valeur d'un hash Redis. Dans cet exemple, nous récupérons les données de la symphonie N° 9 de Beethoven. HGET compositeurs:beethoven:symphonies:9 date La commande HGET permet de récupérer la valeur associée à une clé spécifique dans un hash Redis. Dans cet exemple, nous récupérons uniquement l'année de composition de la symphonie No9 de Beethoven. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Redis en tant que base de données : Types basiques Voici ce que l'on peut voir sur redis-commander: Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: Dans Redis, le terme "keyspace" désigne l'ensemble des clés dans une base de données spécifique. Redis est un système de gestion de base de données NoSQL qui utilise une structure de données clé-valeur en mémoire, et il divise ses données en plusieurs bases de données, identifiées par des numéros (de 0 par défaut à un nombre configurable). Voici quelques points clés sur le keyspace dans Redis : 1.Organisation par Bases de Données : Redis propose des bases de données numérotées (par défaut de 0 à 15), et chaque base de données contient son propre keyspace. Ainsi, chaque base de données peut avoir des clés identiques, mais avec des valeurs différentes, car elles sont isolées. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. Exemple de Commande `KEYS` avec un Pattern Supposons que vous avez des clés dans Redis pour stocker des données d'utilisateurs, des produits et des commandes. Les clés pourraient être organisées ainsi : - user:1 - user:2 - user:3 - product:1 - product:2 - order:1 - order:2 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. Exemple de Commande `KEYS` avec un Pattern Si vous voulez lister uniquement les clés des utilisateurs (celles qui commencent par `user:`), vous pouvez utiliser la commande suivante : KEYS user:* Résultat de la Commande La commande retourne toutes les clés qui correspondent au pattern `user:*`, donc : 1) "user:1" 2) "user:2" 3) "user:3" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. Exemple de Commande `KEYS` avec un Pattern Exemple pour les Clés de Produits Pour obtenir toutes les clés des produits, vous pouvez exécuter : KEYS product:* Cela retourne : 1) "product:1" 2) "product:2" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. Exemple de Commande `KEYS` avec un Pattern Remarque: Bien que la commande `KEYS` soit pratique pour des petites bases de données ou pour du débogage, elle n’est pas recommandée en production sur des bases de données volumineuses, car elle bloque Redis pendant son exécution. Dans ce cas, il vaut mieux utiliser la commande `SCAN`, qui est non bloquante et parcourt les clés en lots. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. Exemple de Commande `KEYS` avec un Pattern Remarque: Bien que la commande `KEYS` soit pratique pour des petites bases de données ou pour du débogage, elle n’est pas recommandée en production sur des bases de données volumineuses, car elle bloque Redis pendant son exécution. Dans ce cas, il vaut mieux utiliser la commande `SCAN`, qui est non bloquante et parcourt les clés en lots. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. SCAN: Elle permet de parcourir le keyspace sans bloquer Redis, ce qui est plus performant pour des bases de données volumineuses. Exemple de Commande `SCAN` Supposons que vous avez les clés suivantes dans Redis : - user:1 - user:2 - user:3 - product:1 - product:2 - order:1 - order:2 La commande `SCAN` fonctionne avec un curseur pour éviter de tout charger en mémoire d'un seul coup. Elle renvoie un ensemble de résultats en plusieurs lots. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: Exemple de Commande `SCAN` Pour parcourir toutes les Clés `user:*` Pour lister uniquement les clés commençant par `user:`, vous pouvez utiliser la commande suivante : SCAN 0 MATCH user:* COUNT 2 - 0 : Le curseur de départ. Redis retourne un nouveau curseur à chaque appel, que vous utiliserez pour le prochain lot de résultats. - MATCH user: Filtre pour ne récupérer que les clés correspondant au pattern `user:*`. - COUNT 2 : Indique que l'on veut récupérer environ 2 clés à la fois (Redis ne garantit pas strictement ce nombre, mais essaie de s’en rapprocher). Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: Exemple de Commande `SCAN` Résultat Attendu Redis retourne un résultat en deux parties : un curseur et une liste de clés correspondant au pattern. 1. Première Exécution : 2. Deuxième Exécution (utilisez le curseur retourné, ici `2`) : SCAN 2 MATCH user:* COUNT 2 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: Exemple de Commande `SCAN` Résultat Attendu 2. Deuxième Exécution (utilisez le curseur retourné, ici `2`) : SCAN 2 MATCH user:* COUNT 2 Explication: - À chaque appel, Redis renvoie un nouveau curseur pour continuer le parcours. Le processus s'arrête lorsque le curseur retourne `0`. - L’utilisation de `SCAN` permet d’éviter de surcharger le serveur, contrairement à `KEYS`, qui renvoie toutes les clés en une fois et peut impacter les performances sur de gros keyspaces. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace KEYS : Cette commande liste toutes les clés correspondant au pattern donné dans le keyspace de la base de données actuelle. Cependant, cette commande est lourde pour la performance si le nombre de clés est élevé. SCAN: Elle permet de parcourir le keyspace sans bloquer Redis, ce qui est plus performant pour des bases de données volumineuses. DBSIZE : Cette commande donne le nombre total de clés dans le keyspace de la base de données actuelle. Exemple : Supposons que vous avez inséré quelques clés dans Redis : - user:1 - user:2 - user:3 - product:1 - product:2 - order:1 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 2. Commande du KeySpace Exemple DBSIZE: Pour vérifier combien de clés sont présentes dans cette base de données, exécutez la commande : DBSIZE Résultat Attendu Redis retourne le nombre total de clés dans le keyspace actuel. Dans cet exemple, il devrait retourner : (integer) 6 Explication La commande `DBSIZE` compte toutes les clés présentes dans la base de données sans tenir compte des types ou des préfixes des clés. C’est utile pour obtenir rapidement une idée de la taille de votre keyspace actuel. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Expiration et Notifications de Keyspace Redis permet de définir des expirations pour les clés. Lorsque la clé expire, elle est automatiquement supprimée du keyspace. Redis peut envoyer des notifications d'événements (comme la création, l'expiration, ou la suppression de clés) dans le keyspace. Cela est utile pour suivre les changements et réagir à certaines actions en temps réel, mais doit être activé explicitement avec notify-keyspace-events. Pour combiner l'expiration des clés et les notifications de keyspace dans Redis, voici un exemple complet qui montre comment configurer et utiliser les deux fonctionnalités. Étape 1 : Activer les Notifications de Keyspace Redis doit être configuré pour envoyer des notifications sur les événements de keyspace. Vous pouvez activer les notifications pour plusieurs types d'événements, dont les expirations, les créations, et les suppressions de clés. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Expiration et Notifications de Keyspace Pour activer les notifications d'expiration, exécutez cette commande dans Redis : CONFIG SET notify-keyspace-events Ex - `E` indique les événements d'expiration. - `x` active les notifications d'événements sur les clés individuelles. Étape 2 : Définir une Clé avec Expiration Pour illustrer l'expiration, définissons une clé avec un délai d'expiration. Par exemple, nous allons créer une clé `session:user:1` qui expirera après 10 secondes. SET session:user:1 "active ’’ EXPIRE session:user:1 10 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Expiration et Notifications de Keyspace Pour activer les notifications d'expiration, exécutez cette commande dans Redis : CONFIG SET notify-keyspace-events Ex - `E` indique les événements d'expiration. - `x` active les notifications d'événements sur les clés individuelles. Étape 2 : Définir une Clé avec Expiration Pour illustrer l'expiration, définissons une clé avec un délai d'expiration. Par exemple, nous allons créer une clé `session:user:1` qui expirera après 10 secondes. SET session:user:1 "active ’’ EXPIRE session:user:1 10 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Expiration et Notifications de Keyspace Étape 3 : Surveiller les Notifications de Keyspace Redis envoie les notifications d'événements sur des canaux Redis, que vous pouvez écouter via la commande `SUBSCRIBE` ou `PSUBSCRIBE`. Pour écouter les événements d'expiration sur toutes les clés, abonnez-vous au canal suivant : PSUBSCRIBE __keyevent@0__:expired `@0`: fait référence à la base de données 0. Si vous utilisez une autre base de données, remplacez `0` par le numéro de la base de données correspondante. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Expiration et Notifications de Keyspace Étape 4 : Voir les Notifications en Temps Réel Redis envoie un message sur le canal chaque fois qu'une clé expire. Vous verrez une sortie semblable à celle-ci après environ 10 secondes (lorsque la clé expire) : 1) "pmessage" 2) "__keyevent@0__:expired" 3) "session:user:1" Explication Cette configuration vous permet de suivre les événements de keyspace en temps réel et d'exécuter des actions spécifiques, comme par exemple nettoyer une session utilisateur lorsque la clé `session:user:1` expire. Les notifications de keyspace sont très utiles pour gérer les actions déclenchées par des événements spécifiques sans avoir besoin de surveiller manuellement chaque clé. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 4. Isolation et Connexions Chaque connexion à Redis est associée à une base de données par défaut (DB 0), mais elle peut basculer vers une autre base de données à l'aide de la commande SELECT Les keyspaces sont indépendants les uns des autres, et les opérations dans une base de données n'affectent pas les autres. Exemple : Stocker des Données dans Plusieurs Bases de Données Imaginons que nous voulons organiser les données ainsi : - Dans la base de données 0 (DB 0), nous stockons des informations sur les utilisateurs. - Dans la base de données 1 (DB 1), nous stockons des informations sur les produits. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 4. Isolation et Connexions Etape 1 : Ajouter des Clés dans la Base de Données 0 (DB 0) Par défaut, Redis utilise la base de données 0. Ajoutons des informations sur les utilisateurs dans cette base de données. 1. Connectez-vous à Redis et ajoutez des clés `user:1` et `user:2` dans DB 0 : SET user:1 "Alice" SET user:2 "Bob" 2. Vérifiez les clés de la base de données 0 : KEYS * Résultat attendu : 1) "user:1" 2) "user:2" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 4. Isolation et Connexions Étape 2 : Basculer vers la Base de Données 1 (DB 1) pour les Produits Pour stocker des informations sur les produits dans un keyspace séparé, nous devons basculer vers la base de données 1. 1. Utilisez la commande `SELECT` pour basculer vers la base de données 1 : SELECT 1 2. Ajoutez des clés `product:1` et `product:2` dans DB 1 : SET product:1 "Laptop" SET product:2 "Phone" 3. Vérifiez les clés de la base de données 1 : KEYS * Résultat attendu : 1) "product:1" 2) "product:2" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 4. Isolation et Connexions Étape 3 : Confirmer l'Indépendance des Keyspaces Les bases de données 0 et 1 sont indépendantes. Pour vérifier cela : 1. Revenez à la base de données 0 : SELECT 0 2. Vérifiez les clés de DB 0 pour confirmer qu'elles n'ont pas été affectées par les ajouts dans DB 1 : KEYS * Résultat attendu : 1) "user:1" 2) "user:2" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 4. Isolation et Connexions Étape 3 : Confirmer l'Indépendance des Keyspaces 3. Pour confirmer, retournez à DB 1 et listez les clés : SELECT 1 KEYS * Résultat attendu : 1) "product:1" 2) "product:2" Résumé: Les clés ajoutées dans chaque base de données sont isolées : les opérations dans une base de données n’affectent pas les autres. La commande `SELECT ` permet de basculer entre ces keyspaces indépendants dans Redis. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 5- Utilisation dans les Environnements Multi-Tenants : Les keyspaces sont particulièrement utiles dans des environnements où Redis est utilisé pour stocker des données pour plusieurs clients ou applications. Les bases de données permettent de compartimenter et d’isoler les données pour chaque application ou client. Exemple : Stocker des Données pour Plusieurs Clients Imaginons que vous avez trois clients, `clientA`, `clientB`, et `clientC`, et que vous souhaitez stocker leurs données de manière isolée dans Redis. Redis vous permet de faire cela en assignant une base de données (ou keyspace) séparée à chaque client. Étapes d'Implémentation 1. Attribuer une Base de Données à Chaque Client : - clientA : Base de données 0 - clientB : Base de données 1 - clientC : Base de données 2 Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 5- Utilisation dans les Environnements Multi-Tenants : Étapes d'Implémentation 1. Attribuer une Base de Données à Chaque Client : - clientA : Base de données 0 - clientB : Base de données 1 - clientC : Base de données 2 2. Stocker des Données pour `clientA` dans la Base de Données 0 : - Connectez-vous à la base de données 0 : SELECT 0 3. Ajoutez des informations pour `clientA` : SET clientA:user:1 "Alice" SET clientA:order:1001 "Order for Alice" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: - Vérifiez les clés : KEYS * Résultat attendu : 1) "clientA:user:1" 2) "clientA:order:1001" 4. Stocker des Données pour `clientB` dans la Base de Données 1: - Basculez vers la base de données 1 : SELECT 1 - Ajoutez des informations pour `clientB` : SET clientB:user:1 "Bob" SET clientB:order:1002 "Order for Bob" - Vérifiez les clés : KEYS * Résultat attendu : 1) "clientB:user:1" 2) "clientB:order:1002" Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Les KeySpace dans REDIS: 3. Stocker des Données pour `clientC` dans la Base de Données 2 : - Basculez vers la base de données 2 : SELECT 2 - Ajoutez des informations pour `clientC` : SET clientC:user:1 "Charlie" SET clientC:order:1003 "Order for Charlie" - Vérifiez les clés : KEYS * Résultat attendu : 1) "clientC:user:1" 2) "clientC:order:1003" En utilisant des bases de données séparées pour chaque client, les données sont complètement isolées, ce qui est idéal pour un environnement multi-tenant. Chaque client a son propre keyspace dans Redis, ce qui simplifie la gestion des données et assure leur confidentialité. Exploration des principales BD NoSQL : 1- BD orienté Clé-Valeur 3 Tableau des Keyspaces pour un Environnement Multi-tenant Keyspace 0 : Contient des informations sur les utilisateurs d'un client (Alice, Bob) Keyspace 1 : Contient des informations sur les produits d'un autre client (Laptop, Phone). Keyspace 2 : Contient des informations sur les commandes d'un troisième client (Tablet, Watch). Chaque keyspace contient des paires clé-valeur spécifiques au client, garantissant l'isolement des données entre les différents clients. PARTIE 3 Exploration des principale BD NoSQL 1. Bases de Données Clés-Valeurs 2. Bases de Données de Documents 3. Bases de Données de Colonnes 4. Bases de Données de Graphes Exploration des principales BD NoSQL : 2- BD orienté Document 3 Les bases de données orientées document font partie de la famille des bases de données NoSQL. Elles stockent les données sous forme de documents, souvent en JSON (JavaScript Object Notation) Contrairement aux bases de données relationnelles, elles n'utilisent pas de tables, mais des collections de documents, chaque document étant un enregistrement unique qui peut contenir des structures complexes, comme des tableaux ou des documents imbriqués. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exploration des principales BD NoSQL : 2- BD orienté Document 3 Avantages : Flexibilité du schéma : les documents peuvent avoir des structures différentes au sein de la même collection. Scalabilité horizontale : facilité de mise à l'échelle en distribuant les données sur plusieurs serveurs. Rapidité des opérations CRUD (Create, Read, Update, Delete) : souvent plus rapide pour les grandes quantités de données non structurées. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Avantages : Flexibilité du schéma: La "flexibilité du schéma" signifie que les documents d'une même base de données ou collection peuvent avoir des structures ou des organisations de données différentes. Par exemple, si vous avez une collection de documents qui contiennent des informations sur des personnes, vous pourriez avoir des documents qui incluent des champs tels que "nom", "prénom", "adresse" et "âge", tandis que d'autres documents pourraient inclure des champs supplémentaires ou différents, tels que "profession", "ville" ou "code postal". Cela signifie que la base de données ou la collection ne nécessite pas de modèle de données prédéfini et que les documents peuvent être ajoutés ou modifiés sans avoir besoin de respecter une structure de données spécifique. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Avantages : Scalabilité horizontale: La scalabilité horizontale (également appelée "scalabilité élastique" ou "scalabilité en largeur") est la capacité d'un système informatique à augmenter sa capacité de traitement et de stockage en ajoutant de nouveaux serveurs ou nœuds au système existant. Concrètement, cela signifie que lorsqu'un système atteint ses limites en termes de capacité de traitement ou de stockage, il est possible d'ajouter de nouveaux serveurs pour répartir la charge de travail et les données sur plusieurs machines. Cela permet ainsi de continuer à traiter les requêtes et les données sans réduire les performances du système. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Avantages : Scalabilité horizontale: Ceci est différent de la scalabilité verticale, qui consiste à améliorer les performances d'un système en augmentant la puissance de traitement ou la capacité de stockage d'un serveur individuel. La scalabilité horizontale est souvent préférée car elle offre une flexibilité et une évolutivité accrues, ainsi qu'une tolérance aux pannes plus élevée. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Structure d'une Base de Données Orientée Document La structure des bases de données orientées document est fondamentalement différente de celle des bases de données relationnelles. Dans une base orientée document comme MongoDB, les données sont stockées dans des documents, qui sont regroupés en collections au sein de bases de données. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure 1- Base de Données : C'est le conteneur principal où toutes les collections et les documents sont stockés. Par exemple, une base de données nommée "ecole" pourrait regrouper toutes les informations concernant une école, incluant les collections d'étudiants, d'enseignants, et de cours. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure 2- Collection : Une collection est l'équivalent d'une table dans une base de données relationnelle, mais sans schéma fixe. Elle regroupe des documents qui peuvent partager des caractéristiques similaires, mais les documents d’une collection peuvent avoir des structures variées. Par exemple, la collection "etudiants" pourrait contenir des documents pour chaque étudiant, mais chaque document peut avoir des champs différents (par exemple, certains étudiants peuvent avoir une adresse et d'autres non). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure 3- Document : Un document est l'unité fondamentale de données dans une base orientée document. Chaque document est une structure de données semi-structurée, souvent au format JSON (dans MongoDB), et il contient des paires clé-valeur. Les documents peuvent contenir des valeurs simples (nombres, chaînes de caractères), des structures complexes comme des tableaux, et même des sous-documents. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure Exemple : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure Explication du code Structure des données La structure des données est un document (un ensemble clé-valeur) qui contient plusieurs clés et valeurs associées. Les clés sont des chaînes de caractères (entre guillemets), et les valeurs peuvent être des chaînes de caractères, des nombres, des tableaux (listes) ou même d'autres sous documents. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Principaux Concepts de Structure Explication du code Données Dans cet exemple, nous avons les données suivantes : "nom" : un champ qui contient le nom de la personne (Ahmed) "age" : un champ qui contient l'âge de la personne (21) "filiere" : un champ qui contient la filière d'études de la personne (Informatique) "cours" : un champ qui contient les cours pris par la personne (un tableau avec trois éléments : Maths, Programmation et BD) "adresse" : un champ qui contient l'adresse de la personne (un objet avec deux clés : ville et rue) Exploration des principales BD NoSQL : 2- BD orienté Document 3 MongoDB : Un Aperçu MongoDB est une base de données NoSQL orientée document qui utilise BSON pour stocker les documents. Elle est conçue pour être performante et flexible, et elle est largement utilisée dans les applications web modernes. JSON (JavaScript Object Notation) est un format texte basé sur une syntaxe lisible, composé de paires clé-valeur et de tableaux. Il est facile à lire et comprendre pour les humains. BSON (Binary JSON) est un format binaire, donc non lisible par les humains. Il encode les données en binaire pour un stockage et une récupération plus efficaces. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows Pour installer et se connecter à MongoDB sur un système Windows, suivez ces étapes : 1. Télécharger MongoDB Accédez au site officiel de MongoDB et téléchargez la version Community Server pour Windows. https://www.mongodb.com/try/download/community Sélectionnez la version souhaitée et cliquez sur Download. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows 2. Installer MongoDB Lancez l'exécutable téléchargé (.msi). Suivez les instructions d'installation. Installation Type : Choisissez Complete pour installer MongoDB avec tous les composants nécessaires. Service Configuration : Cochez l'option pour Run MongoDB as a Service. Cela vous permettra de démarrer MongoDB automatiquement au démarrage de votre machine. Install MongoDB Compass : MongoDB Compass est l'interface graphique de MongoDB. Cochez cette option si vous souhaitez une interface graphique pour gérer vos bases de données. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows 3. Configurer les Variables d'Environnement Après l'installation, MongoDB est installé par défaut dans C:\Program\Files\MongoDB\Server\\bin. Ajoutez ce chemin à votre variable d'environnement Path pour pouvoir exécuter MongoDB à partir de n'importe quel emplacement en ligne de commande. - Ouvrez Paramètres système > Paramètres avancés du système > Variables d’environnement. - Trouvez la variable Path, éditez-la, et ajoutez le chemin de MongoDB (C:\Program Files\MongoDB\Server\\bin). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows 4. Démarrer le Serveur MongoDB MongoDB nécessite un dossier pour stocker ses données. Par défaut, il utilise C:\data\db. Créez ce dossier manuellement. Ouvrez une invite de commandes (CMD) et tapez : mkdir C:\data\db Ensuite, lancez MongoDB : Exécutez la commande suivante pour démarrer MongoDB : mongod Si vous avez configuré MongoDB en tant que service, il démarrera automatiquement, sinon vous pouvez le démarrer manuellement avec cette commande.. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows 5. Se connecter à MongoDB Dans une nouvelle invite de commandes, tapez la commande suivante pour démarrer le shell MongoDB : mongo Vous serez alors connecté au shell de MongoDB, à partir duquel vous pouvez interagir avec votre base de données.. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows 6. Utiliser MongoDB Compass (Optionnel) Si vous avez installé MongoDB Compass, ouvrez-le pour bénéficier d'une interface graphique. Dans MongoDB Compass, utilisez l’URL de connexion suivante mongodb://localhost:27017 Cliquez sur Connect pour commencer à explorer et interagir avec vos bases de données MongoDB via l'interface graphique.. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Installation et connexion à mongoDB sur windows Résumé des commandes importantes Démarrer le serveur MongoDB : mongod Se connecter au shell MongoDB : mongo URL de connexion pour MongoDB Compass : mongodb://localhost:27017 MongoDB est maintenant installé et vous pouvez commencer à l'utiliser ! Exploration des principales BD NoSQL : 2- BD orienté Document 3 Création de Base de Données et de Collections En MongoDB, les bases de données sont créées implicitement. Par exemple : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Insérer des Données dans MongoDB Voici un exemple pour insérer un document dans la collection "etudiants" : Ce document contient : Des champs simples (comme nom, age). Un tableau (le champ cours). Un sous-document (le champ adresse). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Insérer des Données dans MongoDB Voici un exemple pour insérer plusieurs document dans la collection « ensignants" : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Récupérons tous les étudiants de la collection : Vous pouvez aussi appliquer des filtres. Par exemple, pour récupérer tous les étudiants en informatique : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Récupérons tous les étudiants de la collection : db fait référence à la base de données actuellement sélectionnée. etudiants est le nom de la collection que l'on souhaite interroger. find() est la méthode utilisée pour récupérer les documents de la collection. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Résultats: Cette requête est utile pour afficher l'ensemble des données d'une collection. Cependant, si votre collection contient un grand nombre de documents, il est recommandé d'utiliser des critères de sélection pour limiter les résultats. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données En MongoDB, _id est un champ spécial qui stocke l'identifiant unique d'un document. Lorsqu'un document est créé, MongoDB génère automatiquement un identifiant unique pour ce document si aucune valeur n'est fournie pour le champ _id. La valeur de _id est un objet ObjectId, qui est représenté sous la forme ObjectId("... "). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Voici une explication détaillée : _id est le nom du champ qui stocke l'identifiant unique du document. ObjectId est le type de données utilisé pour stocker l'identifiant unique. Il s'agit d'un objet spécial qui représente un identifiant unique. Les parenthèses () entourent la valeur de l'identifiant unique, qui est un ensemble de caractères aléatoires et uniques générés par MongoDB. La valeur à l'intérieur des parenthèses est représentée sous forme de chaîne de caractères, mais elle est en fait un objet ObjectId. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Exemple : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Exemple : Dans cet exemple, le document a un identifiant unique généré par MongoDB, qui est stocké dans le champ _id. Il est important de noter que les identifiants ObjectId sont uniques pour chaque document dans une base de données MongoDB, mais pas nécessairement uniques pour tous les documents Des autres base de données. MongoDB utilise des algorithmes pour générer des identifiants uniques qui minimisent les risques de conflits. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données db.etudiants: c'est la collection "etudiants" dans la base de données. find(): c'est la méthode de recherche de documents dans la collection. { filiere: "Informatique" }: c'est le critère de recherche. Il s'agit d'un objet JSON qui spécifie que nous recherchons les documents qui ont un champ "filiere" dont la valeur est "Informatique". En résumé, cette commande cherchera à récupérer tous les documents de la collection "etudiants" qui sont inscrits en Informatique. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Exemple : Si la collection "etudiants" contient les documents suivants : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 1. Lire des Données Exemple : La commande db.etudiants.find({ filiere: "Informatique" }); renverra les documents suivants : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 2. Mise à jour des Données Pour mettre à jour le champ age de l'étudiant "Ahmed" : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 2. Mise à jour des Données Cette commande permet de mettre à jour un seul document (ici un étudiant) dans une base de données MongoDB. Voici une explication détaillée : db.etudiants : cette partie permet d'accéder à la collection (ou table) des étudiants dans la base de données. updateOne : cette méthode permet de mettre à jour un seul document dans la collection. Si plusieurs documents correspondent au filtre, seul le premier sera mis à jour. { nom: "Ahmed" } : c'est le filtre, il indique que l'on souhaite mettre à jour le document où le champ nom a la valeur "Ahmed". { $set: { age: 22 } } : c'est l'opération de mise à jour. La méthode $set permet de définir une valeur pour un champ spécifique. Dans ce cas, le champ age sera mis à jour avec la valeur 22. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 3. Supprimer des Données Pour supprimer un étudiant nommé "Ahmed" : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 3. Supprimer des Données La ligne de code suivante utilise la méthode deleteOne() de MongoDB pour supprimer un document unique dans la collection etudiants: db.etudiants : on se réfère à la collection etudiants dans la base de données. deleteOne() : méthode qui permet de supprimer un seul document qui correspond au critère de recherche. { nom: "Ahmed" } : le critère de recherche, dans ce cas, on cherche un document dont la valeur du champ nom est égale à "Ahmed". Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 3. Supprimer des Données Exemple : Si la collection etudiants contient les documents suivants : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Opérations CRUD 3. Supprimer des Données Exemple : Après l'exécution de la commande , la nouvelle collection etudiants ressemblera à ceci : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Filtrer avec plusieurs critères Pour récupérer les étudiants en informatique âgés de plus de 20 ans : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Filtrer avec plusieurs critères Cette commande.MongoDB recherche dans la base de données les documents de la collection etudiants qui correspondent à deux conditions : Le champ filiere contient la valeur "Informatique". Le champ age a une valeur supérieure à 20 (grâce à l'opérateur $gt qui signifie "greater than" ou supérieur à) ($lt pour "less than" ou inférieur à). En somme, cette commande retourne tous les documents de la collection etudiants qui représentent des étudiants en informatique et qui ont plus de 20 ans. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Filtrer avec plusieurs critères Exemple de résultat : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Requêtes sur les Sous-documents Pour trouver les étudiants qui vivent à "Casablanca" : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Requêtes sur les Sous-documents db : c'est une référence à la base de données MongoDB en cours d'utilisation. etudiants : c'est le nom de la collection (table) dans la base de données où nous allons effectuer la recherche. find() : c'est une méthode de MongoDB qui permet de rechercher des documents (enregistrements) dans la collection. { "adresse.ville": "Casablanca" } : c'est le filtre de recherche. Il s'agit d'un objet JSON qui définit les conditions de recherche. Dans ce cas, nous recherchons les documents où la valeur de la propriété ville à l'intérieur de l'objet adresse est égale à "Casablanca". Exploration des principales BD NoSQL : 2- BD orienté Document 3 Requêtes Avancées en MongoDB Requêtes sur les Sous-documents exemple de résultat Exploration des principales BD NoSQL : 2- BD orienté Document 3 Indexation pour Améliorer les Performances Pour optimiser les requêtes, on peut utiliser des index : Cette commande crée un index sur le champ "nom" dans la collection "etudiants" de la base de données actuelle (db). nom: champ sur lequel l'index est créé. { 1 }: spécifie l'ordre de tri de l'index. Dans ce cas, l'index sera trié par ordre ascendant (1 pour ascendant, -1 pour descendant). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Indexation pour Améliorer les Performances Objectif : Créer un index améliore les performances des requêtes qui utilisent le champ "nom" comme critère de recherche. MongoDB peut ainsi accéder plus rapidement aux documents correspondants. Cet index améliorera la vitesse de recherche par nom. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Indexation pour Améliorer les Performances un exemple: Collection sans index Supposons que la collection etudiants contient ces données : { "_id": 1, "nom": "Ali", "age": 22 }, { "_id": 2, "nom": « Sara", "age": 20 }, { "_id": 3, "nom": "Fatima", "age": 19 }, { "_id": 4, "nom": "Omar", "age": 23 } Si tu cherches un étudiant avec le nom "Ali" comme ceci : db.etudiants.find({ nom: "Ali" }); MongoDB parcourt tous les documents un par un pour trouver "Ali". Si la base contient des millions de documents, cela prendra beaucoup de temps. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Indexation pour Améliorer les Performances Collection avec index Après avoir créé un index sur nom : db.etudiants.createIndex({ nom: 1 }); MongoDB organise les noms dans une liste triée : Ali, Fatima, Omar, Sara. Si tu cherches "Ali", MongoDB regarde directement dans cette liste triée, sans parcourir tous les documents. C’est beaucoup plus rapide. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Agrégation L’agrégation est une fonctionnalité puissante pour manipuler et transformer les données. Par exemple, pour obtenir la moyenne d’âge des étudiants : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Agrégation Cette commande MongoDB utilise l'opérateur d'agrégation (aggregate) pour calculer la moyenne de l'âge de tous les étudiants dans la collection "db.etudiants". db.etudiants.aggregate(): Cette partie de la commande lance l'opération d'agrégation sur la collection "'étudiants" dans la base de données. [{ $group: { _id: null, moyenneAge: { $avg: "$age" } } }]: Cette partie définit l'étape d'agrégation sous forme d'un tableau contenant une seule étape. { $group: {... } }: Cette étape utilise l'opérateur $group pour regrouper les documents de la collection. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Agrégation _id: null: Cette partie indique que nous ne voulons pas de regroupement spécifique. En mettant _id à null, les documents ne sont pas regroupés par une clé spécifique. moyenneAge: { $avg: "$age" }: Cette partie utilise l'opérateur $avg pour calculer la moyenne de l'âge (age) de tous les étudiants. Le résultat est stocké dans un champ nommé moyenneAge. Lorsque cette commande est exécutée, elle retournera un document unique contenant un seul champ moyenneAge avec la moyenne de l'âge de tous les étudiants dans la collection. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Agrégation Exemple de retour : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Imaginons que nous avons deux collections dans notre base de données ecole : Collection cours : contient les informations sur chaque cours, incluant l'identifiant de l'enseignant responsable. Collection enseignants : contient les informations sur chaque enseignant. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École 1. Insertion de documents dans la collection "enseignants" : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École 2. Insérer des cours avec informations de l'enseignant : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Structure des Collections Collection enseignant: Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Structure des Collections Collection cours : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Utilisation de $lookup pour Joindre cours avec enseignants L’objectif ici est de récupérer chaque cours avec les informations complètes de l'enseignant correspondant, en joignant les deux collections sur les champs enseignant_id dans cours et _id dans enseignants. Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Utilisation de $lookup pour Joindre cours avec enseignants Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Utilisation de $lookup pour Joindre cours avec enseignants db.cours : La base de données (ou collection) "cours" est sélectionnée. aggregate([...]) : L'opération d'agrégation est lancée sur la collection "cours". Les étapes de l'opération seront définies à l'intérieur des crochets []. { $lookup: {...} } $lookup : L'opérateur $lookup est utilisé pour effectuer un joints de données entre deux collections. { from: "enseignants", localField: "enseignant_id", foreignField: "_id", as: "enseignant_info" } from: "enseignants" : La collection "enseignants" est sélectionnée pour être jointe à la collection "cours". Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Utilisation de $lookup pour Joindre cours avec enseignants localField: "enseignant_id" : Le champ "enseignant_id" dans la collection "cours" est utilisé comme clé pour la jointure. foreignField: "_id" : Le champ "_id" dans la collection "enseignants" est utilisé comme clé pour la jointure. Il s'agit généralement de l'ID unique de l'enseignant. as: "enseignant_info" : Le résultat de la jointure est stocké dans un nouveau champ appelé "enseignant_info" dans les documents de la collection "cours". En résumé, cette commande joint les données de la collection "enseignants" à la collection "cours" en fonction de la correspondance entre le champ "enseignant_id" dans "cours" et le champ "_id" dans "enseignants". Les données jointes sont stockées dans un nouveau champ appelé "enseignant_info" dans les documents de la collection "cours". Exploration des principales BD NoSQL : 2- BD orienté Document 3 Résultat de la Jointure La commande ci-dessus renverra des documents comme suit : Chaque document dans cours est enrichi par un tableau enseignant_info, qui contient les informations de l'enseignant correspondant. Si la jointure retourne un seul enseignant, enseignant_info contiendra un seul document ; sinon, plusieurs documents peuvent être présents dans le tableau si plusieurs enseignants correspondent (dans notre cas, cela n’arrive pas, car l’ID est unique). Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Filtrer les Résultats après Jointure Supposons que vous ne voulez afficher que les cours enseignés par des enseignants en "Mathématiques". Vous pouvez ajouter une étape de filtrage $match dans le pipeline d'agrégation : Exploration des principales BD NoSQL : 2- BD orienté Document 3 Exemple Pratique : Gestion des Étudiants d'une École Filtrer les Résultats après Jointure Cela retournera uniquement les documents de cours où l’enseignant enseigne la matière "Mathématiques". PARTIE 3 Exploration des principale BD NoSQL 1. Bases de Données Clés-Valeurs 2. Bases de Données de Documents 3. Bases de Données de Colonnes 4. Bases de Données de Graphes Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Définition : Les bases de données orientées colonne, souvent utilisées dans des environnements Big Data, sont conçues pour gérer de grands ensembles de données distribués et optimisées pour des requêtes analytiques. Contrairement aux bases de données relationnelles (orientées ligne), elles stockent chaque colonne séparément, facilitant l'accès rapide à des données spécifiques. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Définition : Une base de données orientée colonne stocke les informations sous forme de colonnes, plutôt que sous forme de lignes. Cela signifie que toutes les valeurs d'une colonne sont stockées ensemble, plutôt que d'être dispersées à travers plusieurs lignes. Par exemple, si vous avez une base de données contenant les informations suivantes : Nom Âge Ville Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Différence avec les bases relationnelles : Une base de données orientée ligne stockerait ces informations de cette façon : Jean, 25, Paris Marie, 30, Lyon Pierre, 35, Marseille Alors qu'une base de données orientée colonne les stockerait ainsi : Nom : Jean, Marie, Pierre Âge : 25, 30, 35 Ville : Paris, Lyon, Marseille Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Différence avec les bases relationnelles : Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 1. Schéma flexible Contrairement aux bases relationnelles, les bases orientées colonne permettent un schéma dynamique, idéal pour des données non structurées ou semi- structurées. Le schéma flexible (ou dynamique) fait référence à la capacité d'une base de données orientée colonne à s'adapter facilement à des modifications dans la structure des données. Contrairement aux bases de données relationnelles qui nécessitent un schéma prédéfini rigide, les bases de données orientées colonne permettent d'ajouter ou de modifier des champs de données sans devoir réorganiser l'ensemble de la structure de la base de données. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 1. Schéma flexible (Suite) Cela signifie que si vous travaillez avec des données non structurées ou semi- structurées, où la structure des données peut évoluer au fil du temps, une base de données orientée colonne peut s'adapter plus facilement à ces changements sans requérir une refonte majeure de la base de données. Par exemple, si vous collectez des données sur des utilisateurs et que vous souhaitez ajouter un nouveau champ pour stocker leur adresse email, une base de données orientée colonne peut vous permettre d'ajouter ce champ sans devoir modifier la structure de l'ensemble de la table. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 2. Stockage en colonnes Chaque colonne est stockée indépendamment, ce qui permet des lectures rapides pour des colonnes spécifiques. En simplifiant, cela veut dire que lorsque vous stockez des données dans une base de données, au lieu de stocker chaque ligne de données (comme votre nom, prénom, adresse, etc.) ensemble, chacune des colonnes (comme la colonne "nom" ou la colonne "prénom") est stockée de manière indépendante. Cela permet d'accéder plus rapidement aux données d'une colonne spécifique, car la base de données n'a pas besoin de parcourir toutes les lignes pour trouver l'information recherchée. C'est particulièrement utile lorsque vous devez effectuer des requêtes qui ne concernent qu'une ou deux colonnes spécifiques. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 3. Modèle clé-valeur étendu Les données sont souvent organisées en paires clé-valeur, mais chaque clé peut contenir plusieurs colonnes. « Modèle clé-valeur étendu » signifie que les données sont organisées en paires consistant en une clé et une valeur. Cependant, dans ce modèle étendu, chaque clé peut être composée de plusieurs éléments ou colonnes, offrant ainsi une flexibilité et une précision accrues pour représenter les données.. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 3. Modèle clé-valeur étendu Imaginons que nous voulons stocker des informations sur des produits dans une base de données. Nous pouvons utiliser un modèle clé-valeur étendu pour stocker les données de la manière suivante : - Clé : "Produit" - Valeur : Dans cet exemple, la clé "Produit" est composée de Nom : "iPhone" plusieurs colonnes (Nom, Prix, Marque, Couleur et Prix : 999 Stock) qui décrivent les caractéristiques du produit. Marque : "Apple" Cela nous permet de stocker des informations Couleur : "Noir" détaillées sur chaque produit de manière efficace et Stock : 100 flexible.. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Concepts clés : 3. Modèle clé-valeur étendu Un autre exemple : Dans cet exemple, la clé "Utilisateur" est - Clé : "Utilisateur" également composée de plusieurs colonnes - Valeur : (Nom, Prénom, Adresse et Téléphone) qui Nom : "Jean" décrivent les informations de l'utilisateur. Prénom : "Dupont" L'adresse est elle-même composée de Adresse : plusieurs sous-colonnes (Rue, Ville et Code Rue : "12 rue de Paris" postal) pour préciser l'adresse de l'utilisateur. Ville : "Paris" Code postal : "75001" Téléphone : "06 12 34 56 78". Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Structure principale: Les données sont réparties en colonnes, et ces colonnes sont regroupées en familles de colonnes. Il est possible de comparer une famille de colonnes à une table dans une base de données relationnelle. Cela signifie que les données sont organisées de manière similaire à une base de données relationnels, mais au lieu de tableaux, on utilise des colonnes et des familles de colonnes pour ranger les informations. Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Dans cet exemple, nous avons deux Structure principale: familles de colonnes : "Utilisateurs" et "Commandes". Chaque famille de Voici un exemple pour illustrer cette structure : colonnes est composée de plusieurs Famille de colonnes : Utilisateurs colonnes qui décrivent les informations Colonne : Nom liées à cette famille. Les données sont Colonne : Prénom réparties en colonnes et sont groupées Colonne : Adresse en familles pour faciliter leur gestion et leur accès. Colonne : Téléphone C'est similaire à une base de données Famille de colonnes : Commandes relationnelle où nous aurions deux tables Colonne : Numéro de commande : "Utilisateurs" et "Commandes", mais au Colonne : Date de commande lieu de lignes, nous avons des colonnes Colonne : Total qui sont groupées en familles pour mieux organiser les données. Colonne : Statut Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Dans cet exemple, nous avons deux Structure principale: familles de colonnes : "Utilisateurs" et "Commandes". Chaque famille de Voici un exemple pour illustrer cette structure : colonnes est composée de plusieurs Famille de colonnes : Utilisateurs colonnes qui décrivent les informations Colonne : Nom liées à cette famille. Les données sont Colonne : Prénom réparties en colonnes et sont groupées Colonne : Adresse en familles pour faciliter leur gestion et leur accès. Colonne : Téléphone C'est similaire à une base de données Famille de colonnes : Commandes relationnelle où nous aurions deux tables Colonne : Numéro de commande : "Utilisateurs" et "Commandes", mais au Colonne : Date de commande lieu de lignes, nous avons des colonnes Colonne : Total qui sont groupées en familles pour mieux organiser les données. Colonne : Statut Exploration des principales BD NoSQL : 3- BD orienté colonne 3 Présentation de Cassandra Cassandra est une base de données NOSQL (Not Only SQL) orientée colo