Bases de données NoSQL

publicité
Bases de données
NoSQL
Raja CHIKY
[email protected]
2015-2016
Institut Mines-Télécom
Bases de données orientées
colonne
Cassandra, Hbase,Bigtable, …
Institut Mines-Télécom
BD NoSQL orientée colonnes
§  Les données sont stockées par colonne, il est facile d’ajouter
des colonnes
§  Ressemble logiquement aux bases de données relationnelles
(tables) mais le nombre de colonnes :
• 
• 
est dynamique
peut varier d’un enregistrement à un autre
§  Utile pour les tâches d’analyses sur des colonnes et dans les
traitements massifs (via des opérations de MapReduce)
§  Utile pour les données éparses
§  Exemples :
• 
• 
Hbase (version open source de Big Table de Google)
Cassandra
Institut Mines-Télécom
Modèle de données
§  Colonne
•  couple clé/valeur
•  représente un champ de
données
•  une colonne contenant d’autres
colonnes est une super colonne
Clé
ligne
clé :
objet
Famille de colonnes 1
colonne 1
colonne 2
colonne 3
objet 1
objet
23
objet
31
§  Famille de colonnes
•  regroupe plusieurs colonnes ou
super-colonnes
•  les colonnes sont regroupées
en lignes
•  chaque ligne est identifiée par
un identifiant unique
§  Chaque famille de colonnes
peut être partitionnée
séparément
Institut Mines-Télécom
colonne 2
ligne
ligne
clé :
objet
clé :
objet
objet 2
colonne 3
colonne 4
objet 3
objet 4
Principales caractéristiques
§  Consistance
• 
plusieurs niveaux de consistance possibles avec Cassandra
§  Transactions
• pas de transactions au sens traditionnel du terme, écriture atomique au niveau
ligne
§  Requêtes
• 
• 
• 
basiques avec Classandra-cli (get, set, del, create)
indexation secondaire possible
requêtes SQL-Like avec CQL (Cassandra Query Language)
§  Scalabilité
• 
• 
• 
haute disponibilité
mode distribué sans maître
disponibilité gérée par la formule du quorum : (R+W)>N (W : nombre de nœuds où l’écriture doit se
faire correctement, R : nombre de nœuds qui doivent répondre avec succès à une lecture, N: facteur
de réplication
Institut Mines-Télécom
Forces et Faiblesses
§  Forces
•  modèle de données plus riche
•  scalabilité horizontale et utilisation de MapReduce
•  résultats des requêtes en temps réel
§  Faiblesses
•  difficile à utiliser pour les données interconnectés
(distance, trajectoire)
•  maintenance lors de l’ajout/suppression de colonnes
•  ne pas utiliser pour les requêtes non temps réel et
inconnues
Institut Mines-Télécom
Cas d’usage
§  A utiliser pour
• 
• 
• 
• 
la journalisation d’évènements
les compteurs (analytique sur le web)
applications avec beaucoup d’écritures et peu de lectures,
priorité à la disponibilité
analyse en temps réel (cerner l’audience)
§  A ne pas utiliser pour
• 
• 
applications avec des besoins de transactions ACID
Agrégation par requêtes (sera effectuée par l’application
client)
Institut Mines-Télécom
BigTable
§  Base de données propriétaire gérée en interne chez
Google
§  Accessible au public uniquement via
•  Google App Engine
§  Ecrite en C++
§  Cohérence forte (strong consistency)
•  L'ensemble des clients voient la même valeur d'une donnée après
les mises à jour
§  Stockage de données
•  Basé sur le système de fichiers distribués GFS (Google File
Systems)
Institut Mines-Télécom
http://labs.google.com/papers/bigtable.html
Masters
C0
C1
C5
C
GFS Master
Client
GFS Master
C1
C5
Chunkserver 1
• 
• 
• 
• 
Replicas
Google File System (GFS)
C
Chunkserver 2
Client
Client
C0
…
C5
C
Misc. servers
Chunkserver N
Master manages metadata
Data transfers happen directly between clients/chunkservers
Files broken into chunks (typically 64 MB)
Chunks triplicated across three machines for safety
Institut Mines-Télécom
BigTable-Modèle de données
§  Map multi-dimensionnel
§  Row key
•  Clé unique d'une entité (string de 64KB)
§  Column family
•  Représente un groupe d'attributs (colonnes) reliés
§  Column
•  Comporte différentes versions de la donnée (ordonnées par
timestamp décroissant)
§  L'accès à une donnée se fait par:
•  (Row key à column family à column à timestamp)
Institut Mines-Télécom
BigTable-Modèle de données
(row, column, timestamp) → cell contents
“contents:”
Columns
Rows
“www.cnn.com”
“<html>…”
t11
t3
t17
Timestamps
11
Institut Mines-Télécom
BigTable- Architecture
§  La tablet est l'unité de distribution de données
•  Intervalle de ligne triées par ordre lexicographique des clés
[start key-end key]
§  Tablet server
•  Gère un ensemble de tablets (généralement quelques centaines)
§  Chubby server
•  Maintient des connexions avec les Tablet Servers à l'aide de
fichiers de verrouillage
•  Attribution dynamique des Tablets aux Tablet Servers
•  Responsable de la répartition de charge et de la tolérance aux
fautes
Institut Mines-Télécom
BigTable - Architecture
Institut Mines-Télécom
Ecriture/lecture de données
§  Opérations d'écriture sont stockées dans une table
en mémoire memtable
§  Quand la taille de la memtable atteint un seuil
prédéfini
•  La memtable est figée et ensuite convertie en SSTable par le
GFS
•  Une nouvelle memtable est créée
§  Opérations de lecture sont effectuées sur une
combinaison de memtables et SSTables
Institut Mines-Télécom
BigTable-Utilisateurs
Google analytics
Google finance
Orkut (réseau social tenu par Google)
Personalized search
Writely (éditeur de texte on-line racheté par
Google)
§  Google earth
§ 
§ 
§ 
§ 
§ 
Institut Mines-Télécom
Hbase
§  Basé sur BigTable
•  HDFS (GFS), ZooKeeper (Chubby)
•  Master Node (Master Server), Region Servers (Tablet
Servers)
•  HStore (tablet), memcache (memtable), HFile (SSTable)
§ 
§ 
§ 
§ 
Écrit en Java
Utilise HDFS
Licence Apache 2.0
Sponsorisé par :
•  Yahoo!, Microsoft, HP, Facebook, Covalent, IONA, AirPlus
International, BlueNog, Intuit, Joost, Matt Mullenweg, Two Sigma
Investiments.
http://hadoop.apache.org/hbase/
Institut Mines-Télécom
Hbase : exemple d’usage
§  create 'cars', ’features’
table
key
Column family
column
value
§  put 'cars', 'row1', 'features:make', 'bmw’
§  put 'cars', 'row1', 'features:model', '5 series’
§  put 'cars', 'row1', 'features:year', '2012’
§  put 'cars', 'row2', 'features:make', 'mercedes’
§  put 'cars', 'row2', 'features:model', 'e class’
§  put 'cars', 'row2', 'features:year', '2012'
http://akbarahmed.com/2012/08/13/
Institut Mines-Télécom
HBase
§  Hbase propose:
• 
• 
• 
• 
• 
• 
Modèle de données similaire à celui de BigTable
Des classes natives pour la connexion avec MapReduce
Accès REST (JSON, XML, etc.)
Hive/Pig pour les analyses
Java API
Web Usage Interface
─  Tâches administratives, monitoring, ajout/suppression de noeuds, etc.
•  Interface Thrift avec support pour plus de 10 langages
─  Python, PHP, Perl, Ruby, C++, Erlang, etc.
Institut Mines-Télécom
Hbase
§ 
Clone de BigTable
─  conçu pour être distribué
─  se base sur Hadoop et HDFS pour distribuer son stockage
Les tables sont shardées automatiquement et séparées en régions :
─  gérées par le serveur de région (RegionServer)
─  la table est tout d’abord contenue dans une seule région
─  lorsque la taille d’une région dépasse un seuil défini, Hbase la découpe en 2 régions
Eléments de Hbase :
─  RegionServer : gère les régions permettant de distribuer les tables
─  ZooKeeper : service centralisé de maintenance de la configuration (maintenir l’état des
nœuds, promouvoir un nouveau maître, etc.)
─  HMaster : le moteur de la base de données. Gère plusieurs RegionServers et centralise la
gestion d’un cluster Hbase.
§ 
Ecritures :
─  dans un buffer mémoire (memstore)
─  lorsqu’il atteint une taille définie, il est écrit sur HDFS dans un Hfile, un ensemble trié de
clés-valeurs
Les régions assurent la distribution, et HDFS la réplication
Institut Mines-Télécom
Hbase- architecture maître/esclave
§  Master
•  Responsable de l'allocation des régions aux RegionServers
§  RegionServer
•  Responsable d'un ensemble de régions
•  Chaque région est un ensemble de rangées ordonnées
§  Hbase client
•  Interroge le master pour savoir sur quel RegionServer se
retrouve la région recherchée
•  Ensuite communique directement avec la RegionServer pour
obtenir les données
Institut Mines-Télécom
Hbase-Architecture
Institut Mines-Télécom
Hbase - modèle de données
§  Une table est composée des éléments suivants :
• 
• 
• 
• 
la clé est le point d’entrée. Elles sont triées en ordre lexicographique
Une famille de colonnes permet de regrouper un certain nombre de colonnes. Toutes
les colonnes de la famille sont stockées dans un Hfile
Une colonne contient une donnée versionnée (accompagnée d’un timestamp)
Le timestamp sert à gérer la cohérence finale et les versions au niveau de la logique
cliente
Table
Famille
Clé
HFile
Colonne
Colonne
Famille
HFile
Colonne
Institut Mines-Télécom
Colonne
ZooKeeper
§  basé sur Chubby
Server de Google) est
utilisé pour gérer
différents serveurs
(afin de résoudre le
problème de Single
Point of Failure).
Institut Mines-Télécom
Hbase-Utilisateurs
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
http://www.yahoo.com/
http://www.adobe.com/
http://www.stumbleupon.com/
http://www.bedrock.com/
http://www.filmweb.pl/
http://www.flurry.com/
http://www.drawntoscaleconsulting.com/
http://www.kalooga.com/
http://www.mahalo.com/
http://www.meetup.com/
http://ning.com/
http://www.openplaces.org/
http://www.powerset.com/
http://www.readpath.com/
http://www.runa.com/
http://www.socialmedia.com/
http://www.streamy.com/
http://www.stumbleupon.com/
http://www.subrecord.org/
etc.
Institut Mines-Télécom
Cassandra
§  Initiateur
•  Facebook en 2007 (solution pour le problème « inbox search »)
§  Licence Apache 2.0
§  Ecrit en Java
§  Modèle de données
•  Basé sur BigTable (modèle de données) et Dynamo
(partitionnement et cohérence)
§  Interface Thrift
•  Ruby, Perl, Python, Scala et Java, …
•  CQL (Cassandra Query Langage) : ressemble au SQL au niveau
des commandes.
Institut Mines-Télécom
http://cassandra.apache.org
Cassandra
§  Décentralisation
•  Pas d'architecture maître/esclave
•  Chaque nœud dans le cluster est identique
§  Tolérance aux fautes
•  Les données sont répliquées sur N (facteur de réplication)
nœuds
•  'Always writable': accepte l'écriture de données même en cas de
défaillance
§  Extensibilité
•  Ajout de nouveaux nœuds à l'aide d'un protocole 'gossip'
•  Le débit de lecture/écriture augmente de manière linéaire avec
l'augmentation du nombre de machines
§  Cohérence « tunable »
•  Les écritures et les lectures offrent un niveau de cohérence
configurable
Haute performance, peut être utilisée pour le temps-réel
Institut Mines-Télécom
Fonctionnalités
•  Conçu pour traiter un
grand nombre de
données sur plusieurs
serveurs
•  Facile à déployer
•  Imite les bases de
données relationnelles
Institut Mines-Télécom
Distribué
e
Open
source
Orientée
colonne
Conhére
nce
« tunable
»
décentral
isée
Cassandra
Elasticité
Hauteme
nt
scalabale
Tolérante
aux
pannes
29
Caractéristiques
Institut Mines-Télécom
30
Adapté pour des données éparses
Institut Mines-Télécom
31
Performance
§  Sa conception lui permet de surpasser les BDs
concurrentes
§  Très bons débits en lecture/écriture: s’améliore
linéairement avec l’ajout de nouveaux nœuds
§  “In terms of scalability, there is a clear winner throughout our experiments. Cassandra
achieves the highest throughput for the maximum number of nodes…” - University of
Toronto
Institut Mines-Télécom
32
Architecture de cassandra
33
Institut Mines-Télécom
Cassandra
Aperçu
•  Cassandra a été conçue en considérant que des défaillances
systèmes peuvent se produire
•  Système P2P, distribué
•  Tous les nœuds jouent le même rôle
•  Les données sont partitionnées sur les nœuds
•  Les données sont répliquées (selon la demande de l’utilisateur)
•  Google Big Table – Modèle de données
•  Basé colonne
•  MemTables
•  SSTables
•  Amazon Dynamo – Architecture décentralisée
•  Hachage cohérent
•  Partitionnement
•  Réplication
Institut Mines-Télécom
34
Cassandra- Utilisateurs (2011 vs.
2012)
2012
Institut Mines-Télécom
Scalabilité horizontale et haute
disponibilité
1
12
2
1
11
6
3
2
Performance
Débit=N
5
Performance
Débit=Nx2
10
4
3
4
5
9
6
8
7
Cass
andra
Institut Mines-Télécom
36
Opérations d’écriture
Institut Mines-Télécom
37
Opérations d’écriture
•  Commit log
•  1er endroit où l’écriture est enregistrée
•  Mécanisme de récupération en cas de crash
•  MemTable
•  Structure de donnée en mémoire
•  Données sont enregistrées dans Memtable une fois enregistrée
dans commitlog
•  Si memTable atteint un seuil, les données sont ajoutées à
SSTable
•  Lectures se font en priorité à partir de MemTable
•  SSTable
•  Stocké sur disque
•  Immuable une fois écriture faite
•  Compacté périodiquement pour raison de performance
§ 
Institut Mines-Télécom
38
partitionnement et réplication dans
cassandra
• 
Partitionnement à travers les nœuds du
cluster
•  Chaque nœud est responsable d’une
partie de la base de données
•  les données sont insérées par
l’utilisateur dans une famille de colonnes
•  elles sont ensuite placées sur un nœud
selon la clé de la colonne
• 
l’utilisateur choisit le facteur de
réplication lors de la création du
keyspace
•  les données insérées par l’i-utilisateur
dans une famille de colonnes sont
répliquées dans les nœuds du cluster
selon le facteur de réplication
keyspace twitter
twitter_id
nom
followers
facteur de réplication = 2
1
5
2
4
Institut Mines-Télécom
3
donnée
copie de
la donnée
stratégies de réplication dans
cassandra
stratégie simple
•  le premier réplica est placé sur un
nœud déterminée par le partitionneur
•  Les réplicas suivants sont placés sur
les nœuds suivants dans l’anneau
sans considérer la topologie (racks et
data centers)
•  A utiliser pour un unique data center
•  stratégie sur la topologie du réseau
•  plusieurs data centers : on spécifie le
nombre de réplicas sur chaque data
center
•  les réplicas sur un même data center
sont placés en parcourant l’anneau
jusqu’à trouver un nœud dans un
autre rack
•  la réplication asymétrique est possible
(3 réplicas sur un DC pour les
requêtes temps-réel, et 1 sur un autre
Dc pour l’analytique)
1
• 
donnée
5
2
4
copie de
la donnée
Rack 1
donnée
1
5
2
4
3
1
5
2
4
copie de
la donnée
Rack 2
Institut Mines-Télécom
3
3
copie de
la donnée
Cohérence dans cassandra
• 
Architecture « Read and Write Everywhere »
• 
L’utilisateur peut se connecter à n’importe quel nœud, dans n’importe quel
data center, et lire/écrire les données qu’il veut
• 
Cassandra est la base de données NoSQL la plus rapide en écriture
• 
Extension de la notion de consistance éventuelle à une cohérence ajustable
• 
Le choix de la consistance est faite par requête : clause USING
CONSISTENCY (le niveau ONE est celui par défaut)
Institut Mines-Télécom
Niveaux de cohérence (Consistency)
§  Pour une écriture
• 
Le niveau ONE
─  Assure que l'écriture a été effectuée dans au moins un nœud
• 
Le niveau ALL
─  Assure que l'écriture a été effectuée vers tous les N nœuds (avec
N=ReplicationFactor)
• 
Le niveau QUORUM
─  Assure que l'écriture a été effectuée sur les M nœuds (avec M=ReplicationFactor/
2+1)
§  Pour une lecture
• 
Le niveau ONE
─  Envoie l'enregistrement retourné par le premier nœud qui a répondu
• 
Le niveau ALL
─  Requête tous les nœuds et retourne l'enregistrement avec le timestamp le plus
récent
─  Si un nœud ne répond pas, l'opération échoue
• 
Le niveau QUORUM
─  Requête tous les nœuds et retourne l'enregistrement avec le timestamp le plus
récent retourné par la majorité des noeuds
Institut Mines-Télécom
Écriture – cohérence ONE
0
Node 6
Node 5
Node 1
R1
Node 2
replication_factor = 3
Node 4
Client
Node 3
INSERT INTO table (column1, …) VALUES (value1, …) USING
CONSISTENCY ONE
Cass
andra
Institut Mines-Télécom
43
R3
R2
Écriture – cohérence Quorum
0
Node 6
Node 5
Node 1
R1
Node 2
replication_factor = 3
Node 4
Client
Node 3
INSERT INTO table (column1, …) VALUES (value1, …) USING
CONSISTENCY QUORUM
Cass
andra
Institut Mines-Télécom
44
R3
R2
Généralités
•  Conçu comme un système de gestion de base de
données distribuée
•  l'utiliser si beaucoup de données réparties sur plusieurs
serveurs
•  Les performances d'écriture est toujours
excellente, mais les performances de lecture
dépend des modèles de données
•  concevoir le schéma approprié en fonction de la requête
Institut Mines-Télécom
45
Avantages et inconvénients
•  Adapté pour des séries
temporelles
•  Haute performance
•  Décentralisation
•  Evolutivité linéaire
•  Support de réplication
•  Pas de SPOF
•  Possibilité de MapReduce
Institut Mines-Télécom
• 
• 
• 
• 
• 
Pas d'intégrité référentielle
Interrogation des données
pour la récupération limitée
Le tri des données fait
partie de la conception
pas GROUP BY
Modèle de données en
fonction de chaque requête
46
Modèle de données
47
Institut Mines-Télécom
Cassandra
Modèle clé-colonne(s)
•  Un enregistrement est
une collection de
colonnes labellisés (avec
un nom)
•  Famille de colonnes =
Table (Par analogie avec
RDBMS)
•  Un enregistrement doit
contenir au moins une
colonne
Institut Mines-Télécom
48
Exemple
Institut Mines-Télécom
49
Keyspace
§  Ensemble de familles de colonnes (~Base de
données)
Institut Mines-Télécom
50
Méthodologie – E/R model
§  Diagramme ER (Chen): entités, associations,
cardinalités, etc.
Institut Mines-Télécom
51
Modèle de données pour cassandra
Institut Mines-Télécom
52
Cassandra query language CQL
53
Institut Mines-Télécom
Cassandra
Keyspace
•  Création
CREATEKEYSPACEdemo
WITHreplicaCon={‘class’:’SimpleStrategy’,
replicaCon_factor’:3};
•  Utilisation
USE demo;
•  Suppression
DROP KEYSPACE demo;
Institut Mines-Télécom
54
Creation d’une table (famille de
colonnes)
CREATETABLEusers(
emailvarchar,
biovarchar,
birthday;mestamp,
ac;veboolean,
PRIMARYKEY(email));
Institut Mines-Télécom
CREATE TABLE tweets(
email varchar PRIMARY
KEY,
time_posted timestamp,
tweet varchar);
55
Insertion
INSERTINTOusers(email,bio,birthday,ac;ve)
VALUES(‘[email protected]’,‘Associateprofessor’,
516513600000,true);
Importeràpar;rd’unfichierCSV
COPY table1 (column1, column2, column3, column4)
FROM ’data.csv';
Avec entête
COPY table1 (column1, column2, column3, column4)
FROM ’data.csv’
WITH HEADER=true;
Institut Mines-Télécom
56
Interrogation
SELECT*FROMusers;
SELECTcount(*)fromusers;
SELECT*FROMusersLIMIT10;
SELECTemailFROMusersWHEREac;ve=true;
Institut Mines-Télécom
57
Place à la pratique
Exercices adaptés de la
formation Datastax
58
Institut Mines-Télécom
Cassandra
Création de la keyspace
CREATE KEYSPACE demoVideo
WITH REPLICATION = {
'class': 'SimpleStrategy',
'replication_factor' : 1
};
USE demoVideo;
Remarque: SOURCE './myscript.cql';
Institut Mines-Télécom
60
Exemple introductif-creation de la table
CREATE TABLE videos
( id int,
name text,
runtime int,
year int,
PRIMARY KEY (id) );
Institut Mines-Télécom
61
insertion
-  Insérer ces données dans une table videos
-  Soit directement avec la clause INSERT ou en
utilisant un fichier CSV et la clause COPY
Institut Mines-Télécom
62
requêtage
-  Combien de lignes ont été insérées
-  Afficher tous les enregistrements
-  Afficher les informations concernant la vidéo
« insurgent »
-  Afficher les vidéos dont l’année est supérieure à
2014
-  Qu’obtenez vous? Pourquoi?
Institut Mines-Télécom
63
Stockage physique
Institut Mines-Télécom
64
Stockage partitionné
Institut Mines-Télécom
65
une solution aux requêtes précédentes?
§  Créer la table suivante:
CREATE TABLE
videos_by_name_year (
name text,
runtime int,
year int,
PRIMARY KEY ((name, year)) );
Institut Mines-Télécom
Requêtes
§  Trouver le film « Insurgent » réalisé en 2015
§  Trouver les informations du film « Interstellar »
§  Quels sont les films réalisés en 2014
Cass
andra
Institut Mines-Télécom
67
Cassandra-UPSERTS
INSERT INTO videos_by_name_year (name , year ,
runtime) VALUES ('Insurgent',2015, 127) ;
SELECT count(*) from videos_by_name_year
§  Que se passe-t-il?
Cass
andra
Institut Mines-Télécom
68
Clustering columns
CREATE TABLE videos_by_year (
id int,
name text,
runtime int,
year int,
PRIMARY KEY ((year), name );
Institut Mines-Télécom
69
Clustering column avec ordre
§  Par défaut ordre ascendant
§  SI on veut spécifier un ordre descendant:
CREATE TABLE videos_by_year (
id int,
name text,
runtime int,
year int,
PRIMARY KEY ((year), name) )
WITH CLUSTERING ORDER BY (name DESC);
Cass
andra
Institut Mines-Télécom
70
Requêtage sur les clustering Columns
SELECT * FROM videos_by_year WHERE year =
2014 AND name = 'Mockingjay';
§  Ou (opérations de comparaison)
SELECT * FROM videos_by_year WHERE year =
2014 AND name >= 'Interstellar';
Institut Mines-Télécom
71
Alter table
§  Ajout d’une colonne
ALTER TABLE table1 ADD another_column text;
§  Suppression d’une colonne
ALTER TABLE table1 DROP another_column;
§  La colonne PRIMARY KEY ne peut être modifiée
§  Suppression de toutes les données
TRUNCATE table1;
Institut Mines-Télécom
72
Colonne multi-valuée
§  Une colonne peut contenir plusieurs valeurs
(contrairement à RDBMS)
•  SET<TEXT> collection de valeurs typées et ordonnées
(selon la valeur)
•  LIST<TEXT> ordonnée par position
•  MAP<TEXT,INT> collection de clé-valeur ordonnée par
clé
Institut Mines-Télécom
73
UDT (User defined type)
CREATE TYPE address (
street text,
city text,
zip_code int,
phones set<text>
);
CREATE TYPE full_name (
first_name text,
last_name text
);
Institut Mines-Télécom
74
Modifier la table videos
-  Ajouter une colonne tags (pouvant contenir
plusieurs valeurs de tags)
-  Ajouter quelques tags aux vidéos de votre fichier
csv
-  Insérer les tags dans la table videos
-  Méthode TRUNCATE puis réinsertion
-  Méthode UPSERT
Institut Mines-Télécom
75
UDT
§  Créer un UDT video_encoding suivant l’exemple suivant
{encoding: '1080p', height: 1080, width: 1920, bit_rates: {'3000 Kbps', '4500 Kbps',
'6000 Kbps'}
§ 
§ 
§ 
Field Name
Data Type
encoding
text
height
int
width
int
bit_rates
set<text>
Créer un fichier videos_encoding.csv contenant video_id et les informations
d’encodage
Exemple:
1,"{encoding: '1080p', height: 1080, width: 1920, bit_rates: {'3000 Kbps', '4500
Kbps', '6000 Kbps'}}"
Institut Mines-Télécom
Alter table et ajout des infos
-  Ajouter une nouvelle colonne encoding à la table
videos
-  Insérer les nouvelles informations à partir du
fichier videos_encoding.csv créé précédemment
-  Afficher le contenu de videos
Institut Mines-Télécom
77
counter
§  Créer une nouvelle table avec un compteur permettant
de mettre à jour le nombre de vidéos pour chaque tag
et année
CREATE TABLE videos_count_by_tag (
tag TEXT,
added_year INT,
video_count counter,
PRIMARY KEY (tag, added_year)
);
Cass
andra
Institut Mines-Télécom
78
Counter (suite)
§  Pour mettre à jour le compteur: (lancez quelques
updates sur la table)
UPDATE videos_count_by_tag SET video_count =
video_count + 1 WHERE tag=‘MyTag’ AND
added_year=2015;
§  Afficher le résultat
§  Essayer un update du compteur avec un tag et
une année qui n’existe pas dans votre table.
Qu’obtenez vous?
Cass
andra
Institut Mines-Télécom
79
Dénormalisation
80
Institut Mines-Télécom
Cassandra
Rappels - exemple
81
Institut Mines-Télécom
Commentaires pour chaque vidéo
§  SELECT comment
§  FROM videos JOIN comments ON videos.id =
comments.video_id
Institut Mines-Télécom
82
Commentaires pour chaque login
utilisateur
83
Institut Mines-Télécom
Dénormalisation dans cassandra
Institut Mines-Télécom
84
Tables
§  Créer les tables et insérer des enregistrements
§  Ecrire les requêtes permettant de trouver les
commentaires pour un film particulier/ d’un utilisateur
particulier
§  On veut classer les vidéos commentés par un
utilisateur du plus récent au plus ancien. Que doit-on
faire?
Institut Mines-Télécom
85
MCD: Modèle conceptuel de
données
86
Institut Mines-Télécom
Cassandra
Clés des associations
87
Institut Mines-Télécom
One-to-one
§  Trouver la clé de cette relation
Institut Mines-Télécom
88
One-To-many
Institut Mines-Télécom
89
ManY-tO-many
Institut Mines-Télécom
90
Association avec attributs
Institut Mines-Télécom
91
Vers le modèle Logique de données
Institut Mines-Télécom
92
Modèle Logique: Diagramme de
Chebotko
§  Diagramme des tables et des requêtes (patterns
d’accès)
Institut Mines-Télécom
93
Diagramme de Chebotko: Notation
Institut Mines-Télécom
Plus d’informations
§  Dev: http://www.datastax.com/dev
§  Docs:http://docs.datastax.com/en/index.html
§  Planet Cassandra: http://planetcassandra.org/
§  blogs: http://tobert.github.io/
§  http://patrickmcfadin.com/
§  http://rustyrazorblade.com/
§  https://ahappyknockoutmouse.wordpress.com/author/
anukeus/
§  http://thelastpickle.com/blog/
§  Livre : http://www.amazon.com/Cassandra-HighAvailability-Robbie-Strickland/dp/1783989122
§  DataStax Academy: https://academy.datastax.com/
§  Formation: http://www.datastax.com/what-weoffer/
products-services/training
Institut Mines-Télécom
95
Merci pour votre attention
[email protected]
Institut Mines-Télécom
Téléchargement