Note Cassandra PDF

Title Note Cassandra
Course Informatique
Institution Université Paris Dauphine
Pages 16
File Size 97.4 KB
File Type PDF
Total Downloads 31
Total Views 135

Summary

note sur CASSANDRA informatique...


Description

Cassandra Cassandra : Historique > Cassandra a été initialement développé par Facebook > L’application est devenu open source en 2008 et repris par Apache > Adopté par les plus grands : Twitter, spotify, Netflix. Cassandra : Historique > Application de type bigTable (Goolge) > 2015 Cassandra est la 8eme place dans le classement des systèmes de gestion de base de données > Top Level Apache Project 2010 > Abandonne par Facebook en 2010 Cassandra : Introduction > Apache cassandra est un SGBD de type noSQL > Gérer des quantités massives de données via un grand nombre de serveur > Haute disponibilite : Aucun points individuels de défaillance : no SPOF > Massivement parallele > Type oriente colonnes Cassandra : Introduction > Scalability lineaire > Multi data center > Replication native > Open sources Facebook > Apache > Distribue : P2P Cassandra : Rappel > Scalability linear :

Atteindre une scalabilité linéaire réelle: Une application scalable de manière linéaire est une application qui peut évoluer simplement en ajoutant plus de machines et / ou de processeurs, sans changer le code de l'application. Cassandra : Rappel > Scalability horizontal : La scalabilité horizontale est la capacité à augmenter la capacité en connectant plusieurs entités matérielles ou logicielles afin qu'elles fonctionnent comme une seule unité logique. Lorsque les serveurs sont en cluster, le serveur d'origine est étendu horizontalement Cassandra : Rappel > Scalability verticale : La scalabilité horizontale signifie que vous effectuez une mise à l'échelle en ajoutant plus de machines dans votre pool de ressources tandis que la scalabilité verticale signifie que vous redimensionnez en ajoutant plus de puissance (CPU, RAM) à une machine existante. ... Il offre un moyen facile d'évoluer verticalement en passant de petites machines à des machines plus grandes. Cassandra : Introduction > Répartition robuste sur plusieurs centre donnees > Replication asynchrone sans master > Faible latence pour les opérations de tous les clients > Performance ++ > Plus fort débit sur un maximum de noeuds Cassandra : Qui l’utilise ? Cassandra : Concepts / Fonctionnalites > Initialement basé sur le système BigTable de Google (stockage orienté colonnes) Maintenant basé sur le système DynamoDB (hachage) ⇒ stockage orienté ”clé/valeur”

> À fortement évolué vers un modèle relationnel étendu Cassandra : Concepts / Fonctionnalites > Un des rares systèmes NoSQL à proposer un typage fort > Un langage de définition de schéma et de requêtes, CQL (pas de jointure). Cassandra : Concepts / Fonctionnalites > Scalable et distribue : > Propose des méthodes de passage à l’échelle inspirées du système Dynamo (Amazon) > Distribution par hachage (consistent hashing) > Tolérance aux pannes par réplication en mode multi-nœuds Très utilisé, réputé très performant. Cassandra : Concepts / Fonctionnalites > Table de hachage distribue : > 2^64 noeuds, parcours par sauts (jusqu’à la moitié de l’anneau),réplication, tolérance aux pannes... Cassandra : Concepts / Fonctionnalites > Architecture : Cassandra : Concepts / Fonctionnalites > Noeuds = Instance de Cassandra > Cluster = Ring = Ensemble des noeuds > Topologie en anneau Cassandra : Theoreme de CAP Cassandra : Concepts / Fonctionnalites > Protocole épidémique de communication en P2P > Echange d’informations chaque seconde > Reseau overlay maille complet Cassandra : Concepts / Fonctionnalites > Replication ou ? > Tous les serveurs sont identiques

> Postulats > 1 row doit tenir sur 1 serveur > On veut répartir les rows uniformément Cassandra : Concepts / Fonctionnalites > Replication ou ? > Tous les serveurs sont identiques > Postulats > 1 row doit tenir sur 1 serveur > On veut répartir les rows uniformément Cassandra : Concepts / Fonctionnalites > Architecture : > P2P, système distribué > Tous les noeuds sont les mêmes > Les données sont partitionnées sur l’ensemble des noeuds du cluster > Une replication des donnees custom pour assurer la tolérance à la panne > Lecture / écriture sur l’ensemble des noeuds Cassandra : Concepts / Fonctionnalites > Une scalabilite fait pour le big data : Cassandra : Concepts / Fonctionnalites > Architecture : > Chaque nœud communique entre eux via le protocole Gossip, qui échange des informations à travers le cluster chaque seconde. Un journal de validation est utilisé sur chaque nœud pour capturer l'activité d'écriture. La durabilité des données est assurée Les données sont également écrites dans une structure en mémoire (memtable), puis sur le disque une fois que la structure de la mémoire est pleine (un SSTable). Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites > No single point of failure :

> Tous les nœuds sont identiques > Réplication personnalisée offrant une redondance > Des données accordable en Lecture / écriture depuis n'importe quel nœud > Possibilité de répliquer des données entre différents racks de centre de données physiques Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites > Replication simple / Distribution des donnees > Traitée de manière transparente par Cassandra > Multi-data center capable > Exploite tous les avantages de l'informatique du Cloud > Capable de réaliser une configuration hybride Cloud / On-premise Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites > Partitionnement : > Les nœuds sont logiquement structurés en topologie en anneau > La valeur hachée de la clé associée à la partition de données est utilisée pour l'affecter à un nœud de l'anneau > Les nœuds légèrement chargés déplacent la position pour atténuer les nœuds fortement chargés Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites > Data Replication : > Réplication pour la haute disponibilité et la durabilité des données > Facteur de réplication N: chaque ligne est répliquée sur N nœuds > Chaque clé de ligne k est affectée à un nœud de coordination

> Le nœud coordinateur est responsable de la réplication des lignes dans sa plage de clés Cassandra : Concepts / Fonctionnalites > Data Replication / partitionnement : Cassandra : Distribution et replication > Consistent Hashing >Anneau avec table de hachage distribuée (sauts) >Hachage continu pour les plages de valeurs (token) >Réplication des données dans l’anneau : Replication Factor (3 par défaut) >Réplicats répondent aux requêtes > Cohérence > Nombre de réplicats à contacter : QUORUM > Anti Entropy Service (AES) ⇒ garanti le taux de réplication Cassandra : Consistent hashing > Distribution de données > Rapidité (max log2(N) sauts) > Réplication > Tolérance aux pannes > Elasticité > Non centralisée Cassandra : Consistent hashing > Distribution de données > Rapidité (max log2(N) sauts) > Réplication > Tolérance aux pannes

> Elasticité > Non centralisée Cassandra : Consistent hashing > Distribution de données > Rapidité (max log2(N) sauts) > Réplication > Tolérance aux pannes > Elasticité > Non centralisée Cassandra : Consistent hashing > Distribution de données > Rapidité (max log2(N) sauts) > Réplication > Tolérance aux pannes > Elasticité > Non centralisée Cassandra : Consistent hashing > Distribution de données > Rapidité (max log2(N) sauts) > Réplication > Tolérance aux pannes > Elasticité > Non centralisée Cassandra : Coherence : Gestion du Quorum >R+W>N

> N : Taux de réplication > W : Nb minimum d’écritures devant accuser de réception > R : Nb copies d’une donnée à consulter pour une requête Ecritures et lectures en parallèle Si W + R Exemple : Soit N=3 > MAJ : pilote=18 > 2 acquittements (W=2) > 2 lectures en parallèle (R=2) 2+2>3 ⇒ retourne : 18 Cassandra : Options de coherence Cassandra : Agregat > Comment effectuer un ”GROUP BY + COUNT” ? > Concept de Map/Reduce pour le NoSQL. >Programme décomposer en deux parties : filtrage + regroupement >Map : prend une ligne et produit une clé/valeur en sortie >Reduce : prend une clé (provenant du map) avec la liste de valeur et produit une valeur en sortie (pour la clé). > Sous Cassandra : Programme Java appelé : User-Defined Aggregate Function (UDA) https://docs.datastax.com/en/cql/3.3/cql/cql_using/useCreateUDA.html Cassandra : UDA exemple > Cassandra : Cluster Bootstrapping : L’ajout de noeuds (ou bootstrapping) utilise la notion de ’token’. Un noeud va devenir gestionnaire d’une section de l’anneau (par défaut 256 noeuds par cluster). Cassandra : Concepts / Fonctionnalites > Ecriture :

> Lorsqu'une écriture se produit, Cassandra stocke les données dans une structure en mémoire, le Memtable, et ajoute également des écritures sur le disque de validation sur le disque, offrant une durabilité configurable. Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites > Lecture : > Lorsqu'une requête de lecture d'une ligne parvient à un nœud, la ligne doit être combinée à partir de tous les SSTables de ce nœud qui contiennent des colonnes de la ligne en question, ainsi que de toutes les memtables non résolues, afin de produire les données demandées. Cassandra : Concepts / Fonctionnalites Cassandra : Concepts / Fonctionnalites Cassandra : Data Modeling > Modele = relationnel + types complexes > Bases de données : Keyspace > Tables : Table ou Column Family > Lignes : Row (valeurs simples ou complexes) Cassandra : Data Modeling > Perspective A : c’est du relationnel étendu en rompant la première règle de normalisation (type atomique). > Perspective B : chaque ligne est un document structuré (imbrication) Cassandra : Data Modeling > Paires et documents : > La structure de base est la paire (clé, valeur) > Clé : un identifiant > Valeur atomique (entier, chaîne de caractères), ou Valeur complexe (dictionnaire, ensemble, liste) Cassandra : Data Modeling > Paires et documents : > Une ligne (row, document) est un identifiant (row key) associé à un ensemble de paires (clé, valeur). > Les lignes sont typées par un schéma, y compris les données imbriquées.

> Cassandra n’autorise pas l’insertion de données ne respectant pas. Cassandra : Data Modeling > Data model : > La table est une carte multidimensionnelle indexée par une clé (clé de ligne) > Les colonnes sont regroupées dans des familles de colonnes > La conception de schéma dynamique permet un stockage de données beaucoup plus flexible que le SGBDR rigide > Chaque colonne possede : Name / Value / Timestamp Cassandra : Data Modeling > Comment cassandra enregistre les données ? > Modèle apporté par Google Bigtable > Row key et beaucoup de colonnes > Noms de colonnes triés (UTF8, Int, Timestamp, etc.) Cassandra : Data Modeling Cassandra : Data Modeling > Row, Row Key, column key and column value > Rows : Rows individual constitue une famille de colonne > Row key : Pour identifier une row dans une famille de colonne > Row : Enregistre une de paire de column keys et de column values > Column key : Pour identifier une column value dans une row > Column value : Enregistre une valeur ou une collection de valeurs Cassandra : Data Modeling Cassandra : Data Modeling > Statique vs dynamique Column family : > Famille de colonnes statiques (lignes maigres) > Contient un ensemble prédéfini de colonnes avec des métadonnées

> Le nombre de colonnes peut varier entre plusieurs lignes de la famille de colonnes > Semblable à SGBDR, sauf aucune valeur NULL Cassandra : Data Modeling > Data modeling with Cassandra : > De-normalize > De-normalize partout où vous le pouvez pour une récupération plus rapide et laisser la logique applicative gérer la responsabilité de la mise à jour sur la fiabilite des redondances Cassandra : Data Modeling > Data modeling with Cassandra : > Les lignes sont gigantesques et triées : > Lignes de taille Giga (2 milliards de colonnes max) peut être utilisé pour stocker des colonnes triables et tranchantes > Commentaires par horodatage, offres commandées par prix, classement par produit, .. Cassandra : Data Modeling > Data modeling with Cassandra : > Une ligne, une machine : > Chaque ligne reste sur une machine > Les lignes ne sont pas partagées à travers les nœuds > Attention à cela, ne créez pas de hotspots avec une ligne de forte demande Cassandra : Data Modeling > Bien retenir ! > Cassandra trouve les lignes rapidement > Cassandra analyse les colonnes rapidement > Cassandra n’analyse pas les lignes Cassandra : CQL / CQLSH

> Avant : Thrift : > Expose la structure de stockage interne de Cassandra à peu près directement > Contrôle complexe, bas niveau, complet > Legacy code Cassandra : CQL / CQLSH > Maintenant : CQL (Cassandra =>1.x) : > Nouvelle méthode > Fournit une couche d'abstraction fine sur la structure interne de Cassandra > Masque certains détails d'implémentation distrayants et inutiles > Permet de fournir une syntaxe native pour les encodages / idiomes courants (comme les collections) au lieu de laisser chaque client (bibliothèque) les ré-implémenter de manière propre, différente et donc incompatible Cassandra : CQL Langage > Très similaire à la syntaxe SGBDR SQL > Créer des objets via DDL (Data Definition Level) (par exemple CREATE ...) > https://en.wikipedia.org/wiki/Data_definition_language > Commandes DML (Data Manipulate Language) de base prises en charge: INSERT, UPDATE, DELETE Données de requête avec SELECT La version actuelle est CQL3 > https://en.wikipedia.org/wiki/Data_manipulation_language Cassandra : CQL Shell for Apache Cassandra > cqlsh est l'utilitaire de ligne de commande pour l'exécution des commandes CQL (pensez à SQL * Plus pour Cassandra) CQL3 est par défaut depuis Cassandra Cassandra : CQL Mapping / Static Table > Cassandra : Créer une table dynamique avec de large ligne

> Une table dynamique est également créée avec l'instruction CREATE TABLE mais en utilisant une clé primaire composite Cassandra : Créer une table dynamique avec de large ligne Cassandra : Insert data dans Employee > La commande INSERT est similaire à la contrepartie SQL Major difference est que la PRIMARY KEY est toujours requise Si la même instruction est exécutée deux fois, il n'y aura pas d'erreur si la même valeur PRIMARY KEY est ré-utilisée avec une autre valeur de colonne différente, alors la dernière gagne Cassandra : Insert data dans Employee Cassandra : Récupérer les données d’Employee table > La restriction sur une colonne autre que PRIMARY KEY ne fonctionnera pas Peut être résolue avec un index (mais attention, mieux utiliser la dénormalisation) Cassandra : Récupérer les données d’Employee table Cassandra : Updater les donnees d’employee > L'instruction UPDATE est similaire à la commande SQL UPDATE Tout comme pour l'INSERT, la colonne PRIMARY KEY doit être spécifiée dans le cadre de la commande UPDATE En CQL, UPDATE ne vérifie pas l'existence de la ligne, si elle n'existe pas, CQL il suffit de le créer Cassandra : Les differents type de donnees Cassandra : Les differents type de donnees Cassandra : Les collections > CQL3 prend également en charge les collections pour stocker des structures de données complexes > Définir {valeur, ...}, Liste [valeur, ...], Carte {clé: valeur, ...} Cassandra : Les collections Cassandra : Les collections Cassandra : Compter les colonnes > Créer une table de colonne compteur qui compte les événements "favoris" Cassandra : Compter les colonnes Cassandra : Time to live TTL sur les insertions > Insérer une ligne avec un TTL en secondes (30s) - après que la ligne est supprimée Cassandra : Time to live TTL sur les insertions Cassandra : Application : Creation d’une base keyspace Cassandra : Application : Insertion : Cassandra : Application : Requetage avec CQL : Cassandra : Application : Timestamp : > Toute valeur est associée à un TIMESTAMP. Estampillage automatique (ms) lors de la mise à jour. Possible de spécifier avec la requête : Cassandra : Application : Les données temporelles : > Récupérer la date de modification : Cassandra : Application : Les données temporaires :

> Possible de gérer des données volatiles : TTL Utilisation identique à TIMESTAMP, donne le nombre de secondes où la valeur est visible. Cassandra : noSQL : Aucune Jointure > Du fait de données distribuées, une jointure n’est pas envisageable. Il est donc préférable de regrouper les données le plus possible dans des lignes. > Conception orientée sur les requêtes les plus fréquentes de l’application > Souvent favoriser la dimension la plus grande (meilleure distribution) > Le nouveau schéma génère de la redondance et des possibilités d’incohérence Cassandra : Solutions ? > Solutions : > Pour un attribut peut être associé : 1 SET : ensemble valeurs (non ordonnées) 2 LIST : liste de valeurs (ordonnées) 3 MAP : hashMap clé/valeur 4 SubType : ligne imbriquée Cassandra : Solutions ? Cassandra : Solutions ? > SET : hotesse set Cassandra : Solutions ? > LIST : hotesse list Cassandra : Solutions ? > MAP : hotesse map Cassandra : Solutions ? > SUBTYPE : hotesse frozen Cassandra : CQL 3.3 Cassandra : Clause Where > Clé primaire = valeur : Le plus efficace > token(Clé primaire) > valeur : Liste de tokens par noeud > attribut = valeur + INDEX : Moins efficace > attribut = valeur + ALLOW FILTERING : Peu efficace test sur tous les noeuds

> Données imbriquées : SET : CONTAINS LIST : CONTAINS MAP : CONTAINS / CONTAINS KEY SubType : att = valeur (tuple imbriquée = BLOB) ⇒ Le MAP est à privilégier Cassandra : Indexation > Création d’un index secondaire : Classique : CREATE INDEX ON (); Map : > Filtrage d’une valeur avec ”attribute CONTAINS ” > Filtrage sur le nom de la clé : CREATE INDEX ON (keys()) ; ”attribute CONTAINS KEY ” Un seul index par attribut Cassandra : Installation > Windows : DataStax server >http://www.datastax.com/2012/01/getting-started-with-apache-cass andra-on-windows-the-easy-way > Linux : Package a installer >https://cassandra.apache.org/download/ > MacOS : DataStax server ou homeBrew >http://www.datastax.com/2012/01?getting-started-with-apache-cass andra-on-windows-the-easy-way Cassandra : Client > Interface client : > CQLSH > devCenter

> Connexion client : > port 9042 Cassandra : Drivers > PlanetCassandra.org : Java, Python, Ruby, PHP, C++, Node.js,... Cassandra : Getting Started...


Similar Free PDFs