MasterDBA_Cours8, PDF
Document Details

Uploaded by AffectionateHeliotrope9042
Université Paris-Cité
Tags
Summary
This document provides an introduction to Cassandra, a NoSQL database system. It covers topics like clustering, data distribution, and replication strategies. The document also details various features and functionalities.
Full Transcript
Slide 1 : Introduction à Cassandra Version 5 NoSQL Distribuée : Conçue pour gérer de grandes quantités de données réparties sur plusieurs serveurs. Cluster : Un cluster est un regroupement de plusieurs noeuds (serveur physique) qui communiquent entre eux pour la gestion...
Slide 1 : Introduction à Cassandra Version 5 NoSQL Distribuée : Conçue pour gérer de grandes quantités de données réparties sur plusieurs serveurs. Cluster : Un cluster est un regroupement de plusieurs noeuds (serveur physique) qui communiquent entre eux pour la gestion de données. Cassandra : Cassandra est une base de données contenue dans un cluster. Comme de nombreuse base NoSQL, les données sont réparties sur plusieurs nœuds et peuvent être répliquée sur 1 à N nœuds. Un utilisateur peut se connecter sur n'importe quel nœud et accéder à l'ensemble des données. Nouvelles Fonctionnalités : IA et recherches vectorielles. Slide 2 : Architecture de Cassandra Distribution des données : Les données sont réparties de manière uniforme sur tous les nœuds du cluster, formant un "anneau". Responsabilité des nœuds : Chaque nœud est responsable d'un segment spécifique de clés (ou "tokens") dans l'anneau. Réplication des données : Les données sont répliquées sur un nombre configurable de nœuds (pour assurer la tolérance aux pannes). Communication : Les nœuds utilisent un protocole appelé "gossip" pour échanger des informations sur l'état du cluster. Gossip permet la communication pair-à-pair (peer-to-peer) utilisé par les nœuds du cluster pour échanger des informations sur l'état et la santé du système Cassandra garantit ainsi une haute disponibilité, une scalabilité horizontale et une tolérance aux pannes dans des environnements distribués. Slide 3 : Architecture de Cassandra (suite) Slide 4 : Modèle de données Cassandra 1. Modèle de Données Modèle clé-valeur Clé : Une clé unique qui identifie de manière exclusive une donnée. Dans Cassandra, cette clé est généralement la clé primaire. Valeur : Les données associées à cette clé. La valeur peut être structurée (comme des colonnes dans une table) ou non structurée (comme un blob de données). Tables associées à un keyspace : Les fonctions du keyspace sont Regroupement des Tables : Un keyspace contient plusieurs tables. C'est comme une base de données dans un système de gestion de bases de données relationnelles (SGBDR). Configuration de la Réplication : Le keyspace définit comment les données sont répliquées sur les différents nœuds du cluster pour garantir la haute disponibilité et la tolérance aux pannes. Slide 5 : Création d'un Keyspace Exemple : Lorsque vous créez un keyspace, vous spécifiez des paramètres de réplication. Par exemple : sql CREATE KEYSPACE exemple_keyspace WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc1': 3, 'dc2': 3 }; Explication des Paramètres : class : Type de stratégie de réplication. NetworkTopologyStrategy est couramment utilisé pour les déploiements multi-centres de données. dc1, dc2 : Les centres de données (data centers) et le nombre de répliques (copies) dans chacun d'eux. Slide 6 : Réplication et Haute Disponibilité Stratégie de réplication : Cassandra utilise des stratégies de réplication pour s'assurer que les données sont disponibles même en cas de panne de nœuds. Il existe plusieurs stratégies de réplication : SimpleStrategy, NetworkTopologyStrategy. Tolérance aux pannes : Cassandra garantit que le système continue de fonctionner même en cas de panne d'un ou plusieurs de ses composants. Voici les fonctionnalités utilisées par Cassandra pour la tolérance aux pannes : a. Réplication des Données : Cassandra utilise la réplication des données pour assurer la disponibilité même en cas de panne d'un nœud ou d'un centre de données. Les données sont copiées sur plusieurs nœuds en fonction de la stratégie de réplication définie dans le keyspace. Les deux stratégies de réplication : a.1. SimpleStrategy : Utilisée pour des environnements simples ou de test, répliquant les données sur les nœuds d'un seul centre de données. a.2. NetworkTopologyStrategy : Utilisée pour des environnements de production, répliquant les données sur plusieurs centres de données. Slide 7 : Réplication et Haute Disponibilité (suite) b. Consistance Réglable : Cassandra permet de configurer le niveau de consistance des opérations de lecture et d'écriture. Cela signifie que vous pouvez définir combien de répliques doivent accuser réception d'une opération avant qu'elle soit considérée comme réussie. Les niveaux de consistance sont : ONE : Une seule réplique doit accuser réception. QUORUM : Une majorité de répliques doit accuser réception. ALL : Toutes les répliques doivent accuser réception. c. Réparations et Rééquilibrages : Lorsqu'un nœud revient en ligne après une panne, Cassandra utilise le mécanisme de réparation (nodetool repair) pour synchroniser les données et s'assurer que toutes les répliques sont à jour et le mécanisme de Rééquilibrage pour la Redistribution des données afin de maintenir un équilibrage de charge uniforme entre les nœuds. d. Architecture Distribuée : Cassandra est conçu comme un système distribué sans point unique de défaillance. Chaque nœud dans un cluster Cassandra a les mêmes rôles et responsabilités, ce qui permet au cluster de continuer à fonctionner même si plusieurs nœuds tombent en panne. Slide 7 : Exemple Pratique Imaginons un cluster Cassandra avec une stratégie de réplication NetworkTopologyStrategy et un niveau de consistance QUORUM. Si un nœud tombe en panne, les opérations de lecture et d'écriture peuvent toujours être effectuées sur les autres nœuds du cluster, garantissant ainsi la disponibilité des données. sql CREATE KEYSPACE exemple_keyspace WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc1': 3, 'dc2': 3 }; SELECT * FROM exemple_keyspace.utilisateurs WHERE id = 'uuid_valeur' CONSISTENCY QUORUM; Slide 8 : Distribution des Données 3.1. Schéma de partitionnement : Principes de Base Partitionnement : Cassandra divise les données en partitions, chaque partition étant identifiée par une clé de partition. Clé de Partition : Une valeur qui détermine sur quel nœud une partition sera stockée. C'est une partie de la clé primaire. 3.2. Fonctionnement du Partitionnement Le schéma de partitionnement dans Cassandra est essentiel pour garantir la distribution uniforme des données, l'équilibrage de charge, la scalabilité et la tolérance aux pannes. Il utilise des clés de partition et des algorithmes de hachage pour déterminer sur quel nœud les données seront stockées. Clé de Partition : Lors de la création d'une table, la clé de partition est spécifiée dans la définition de la clé primaire. sql CREATE TABLE utilisateurs ( id UUID PRIMARY KEY, nom TEXT, email TEXT, age INT ); Dans cet exemple, id est la clé de partition. Hashing : Cassandra utilise un algorithme de hachage (par exemple, Murmur3) pour convertir la clé de partition en un jeton. Ce jeton détermine quel nœud stockera la partition. Anneau : Les nœuds du cluster sont organisés en anneau, chaque nœud étant responsable d'une plage de jetons. Les jetons générés par l'algorithme de hachage déterminent sur quel nœud les données seront placées. Chaque nœud responsable d'une partie des données. Nouvelles Fonctionnalités de Cassandra Version 5 1. Index de Stockage Attaché (SAI) o Requêtes plus rapides sur colonnes non-clés primaires. 2. Trie Memtables et Trie SSTables o Optimisation de la mémoire et du stockage. 3. Fonctions Mathématiques CQL o Fonctions abs, exp, log, log10, round. 4. Recherche Vectorielle o Indexation dense pour applications IA. 5. Masquage Dynamique des Données (DDM) o Masque les informations sensibles dans les requêtes SELECT. 6. Support de JDK 17 o Améliorations de performance et gestion de la mémoire. 7. Stratégie de Compactage Unifiée (UCS) o Organisation des données et amélioration de l'efficacité. Exemples Pratiques Création d'un Keyspace avec SAI: sql CREATE KEYSPACE exemple_sai WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc1': 3, 'dc2': 3 }; CREATE TABLE exemple_sai.table ( id uuid PRIMARY KEY, nom text, age int, INDEX ON (nom); ); Recherche Vectorielle: sql SELECT * FROM exemple_sai.table WHERE vector_search('nom', 'chercheur'); Masquage Dynamique des Données: sql SELECT id, masked_column FROM exemple_sai.table; Conclusion Améliorations Significatives: Performance, sécurité et fonctionnalités avancées. Applications IA: Exploitation des nouvelles fonctionnalités pour une meilleure gestion des données.