Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
NFE204 - Damien JARS – 14 Décembre 2010
Le Problème :� Grand volume de données
� Constamment mises à jour (lectures/écritures)
� Plus (+) d’utilisateurs
Plus (+) de services� Plus (+) de services
� Plus (+) rapide
� Système distribué (plusieurs serveurs à travers le monde)
� Impossible de définir un modèle relationnel adapté
2NFE204 - CNAM - Damien JARS
La Solution :Redéfinir un système plus adapté, qui soit :
� Rapide
� Extensible (ajout de données, sans redéfinir le modèle)
Robuste (un grand volume de données)� Robuste (un grand volume de données)
� Distribué
� Tolérant aux fautes
� Projet Cassandra
3NFE204 - CNAM - Damien JARS
Plan1. Origines de Cassandra
2. No-SQL
1. Qu’est-ce que c’est ?
2. Modèle Orienté Colonnes2. Modèle Orienté Colonnes
3. Cassandra
1. Modèle de données
2. Utilisation
3. Avantages & Inconvénients
4NFE204 - CNAM - Damien JARS
Origines de Cassandra (1)
� Élaborée pour Facebook®
Par:
Avinash Lakshman (un auteur de Amazon® Dynamo®)� Avinash Lakshman (un auteur de Amazon® Dynamo®)
� Malik Prashant (ingénieur chez Facebook®)
� Juillet 2008 : Open-Source via Google Code
� Mars 2009 : Incubateur de la fondation Apache®
� Février 2010 : Top Level Project.
5NFE204 - CNAM - Damien JARS
Origines de Cassandra (2)
� Modèle de données de Google® BigTable® � no-sql orienté colonnes, architecture de stockage
� Technologie des systèmes distribués de Amazon® Dynamo® Dynamo® � réplication, tolérance aux fautes, gestion des clusters
6NFE204 - CNAM - Damien JARS
Origines de Cassandra (3)
� Utilisée par :
7NFE204 - CNAM - Damien JARS
Plan1. Origines de Cassandra
2. No-SQL
1. Qu’est-ce que c’est ?
2. Modèle Orienté Colonnes2. Modèle Orienté Colonnes
3. Cassandra
1. Modèle de données
2. Utilisation
3. Avantages & Inconvénients
8NFE204 - CNAM - Damien JARS
No-SQL� No-SQL pour « Not Only Structured Query Language »
� Terme inventé & introduit par Carlo Strozzi en 1998
� Pas de modèle relationnel
4 types de No-SQL� 4 types de No-SQL
� Cassandra: Orienté Colonnes
9NFE204 - CNAM - Damien JARS
No-SQL - Orienté Colonne (1)
� Organisée en ColumnFamily (sim. Tables (SGBD Relationnel)
� Pas de données « vides »
� Alors que le Relationel: cell_value = null ou ‘ ’
� Dynamique vs. Statique� Dynamique vs. Statique
� � Ajouter autant de colonnes à une ligne que nécessaire.
10NFE204 - CNAM - Damien JARS
No-SQL - Orienté Colonne (2 – Ex.)
11NFE204 - CNAM - Damien JARS
� Millions de colonnes !
� Facile d’en ajouter � Par ex : ‘Pseudo’ en + de ‘Nom’ et ‘Prénom’, dans FaceBook® v4 ?
No-SQL - Orienté Colonne (2)
� Cassandra ajoute les « SuperColumns »
� Requêtes sur un ensemble de SuperColumns
12NFE204 - CNAM - Damien JARS
Plan1. Origines de Cassandra
2. No-SQL
1. Qu’est-ce que c’est ?
2. Modèle Orienté Colonnes2. Modèle Orienté Colonnes
3. Cassandra
1. Modèle de données
2. Utilisation
3. Avantages & Inconvénients
13NFE204 - CNAM - Damien JARS
Modèle de donnéesCluster
Keyspace
ColumnFamily
Key
Le « node » est défini au niveau d'un groupe de serveur et pas seulement au niveau d'un site.
Key
SuperColumn( facultatif )
Column
Value
14NFE204 - CNAM - Damien JARS
Modèle de donnéesCluster
Keyspace
ColumnFamily
Key
Espace où réside les données. Il faut penser cette structure comme l'ensemble des données que gère un site donné.Key
SuperColumn( facultatif )
Column
Value
15NFE204 - CNAM - Damien JARS
site donné.Défini dans « storage-conf.xml »
Modèle de donnéesCluster
Keyspace
ColumnFamily
Key
Ensemble de clés-valeurs. (~Tables)
Key
SuperColumn( facultatif )
Column
Value
16NFE204 - CNAM - Damien JARS
Modèle de donnéesCluster
Keyspace
ColumnFamily
Key Ensemble de (Super)Colonnes. (~Ligne)Key
SuperColumn( facultatif )
Column
Value
17NFE204 - CNAM - Damien JARS
Ensemble de (Super)Colonnes. (~Ligne)
Modèle de donnéesCluster
Keyspace
ColumnFamily
KeyKey
SuperColumn( facultatif )
Column
Value
18NFE204 - CNAM - Damien JARS
Introduit par Facebook®. Sur-ensemble pour désigner facilement un ensemble de colonnes.(Value=List<Column>)
Modèle de donnéesCluster
Keyspace
ColumnFamily
KeyKey
SuperColumn( facultatif )
Column
Value
19NFE204 - CNAM - Damien JARS
Là où réside la donnée.Column:Value, où Column serait le nom d’une colonne en Relationnel.
Name : byte[] (tri)Timestamp : long (réplication)Value : byte[]
Modèle de données – ExempleColumnFamily : Users{
Key : ‘a234f-67d34-a23fb’ {
SuperColumn : General Informations {
Column : LastName {value : Zuckerberg}Column : FirstName{value : Mark}Column : BirthDate{value : 1984-05-14}
20NFE204 - CNAM - Damien JARS
}
}
Column : BirthDate{value : 1984-05-14}}
SuperColumn : Amis{
Column : Ami1{value : id_ami1}Column : Ami2{value : id_ami2}
}
Plan1. Origines de Cassandra
2. No-SQL
1. Qu’est-ce que c’est ?
2. Modèle Orienté Colonnes2. Modèle Orienté Colonnes
3. Cassandra
1. Modèle de données
2. Utilisation
3. Avantages & Inconvénients
21NFE204 - CNAM - Damien JARS
Utilisation – Lectures (1)
API: Thrift(+12 Langages)
� get($params) → Column
� get_slice($params) → list<Column>
� mulitget_slice($params) → map<key, list<Column>>� mulitget_slice($params) → map<key, list<Column>>
� get_count($params) → int
� multiget_count($params) → map<key, int>
� get_range_slices($params)
API Doc.: http://wiki.apache.org/cassandra/API
Exemples: http://wiki.apache.org/cassandra/ThriftExamples#Java
22NFE204 - CNAM - Damien JARS
Utilisation – Lectures (2)
En Interne :
� MemTable
� Serveur le plus proche
Réparation Auto.� Réparation Auto.
� Attend N réponses
23NFE204 - CNAM - Damien JARS
Utilisation – Écritures (1)
API :
� insert()
� batch_insert()
� remove()� remove()
� batch_mutate()
24NFE204 - CNAM - Damien JARS
Utilisation – Écritures (2)
En Interne :
� Le client demande l’écriture d’une donnée, n’importe où dans le cluster.
� Écriture dans le commit-log, puis dans la mémoire.� Écriture dans le commit-log, puis dans la mémoire.
� Le Partitionner décide des serveurs propriétaires de la donnée.
� Le commit-log est stockée sur la machine client, sur un disque local dédié
25NFE204 - CNAM - Damien JARS
Utilisation – Écritures (2)
En Interne :
26NFE204 - CNAM - Damien JARS
Utilisation – Écritures (3)
Avantages :
� Pas de “lock”
� Accès disque séquentiel
Atomicité garantie pour une “ColumnFamily”� Atomicité garantie pour une “ColumnFamily”
� Toujours accessible en écriture, même en cas de problème
� Les données sont ordonnées par ordre de clé
27NFE204 - CNAM - Damien JARS
Plan1. Origines de Cassandra
2. No-SQL
1. Qu’est-ce que c’est ?
2. Modèle Orienté Colonnes2. Modèle Orienté Colonnes
3. Cassandra
1. Modèle de données
2. Utilisation
3. Avantages & Inconvénients
28NFE204 - CNAM - Damien JARS
Avantages (1)
• Temps accès très rapideEx: Table >50 GigaBytes de données (source: Apache)
>50Go MySQL Cassandra
Écriture 300 ms 0.12 ms
29NFE204 - CNAM - Damien JARS
• Scalabilité Horizontale � + Serveurs = + Performances.• Décentralisé >> Pas de point unique de défaillance• Load balancing (Répartition de la charge)• Réplication Automatique• Grands volumes de données
Écriture 300 ms 0.12 ms
Lecture 350 ms 15 ms
Avantages (2)
• Open Source >> Gratuit et Libre• Protégé contre les injections SQL
>> Certainement l’avenir des grosses BD
30NFE204 - CNAM - Damien JARS
>> Certainement l’avenir des grosses BD
Inconvénients• Pas de SQL « Simple » (Select … From…)
• Pas de GUI. Travaux en cours…• Besoin de place sur le disque local/Memtable pour une valeur « atomique »
31NFE204 - CNAM - Damien JARS
« atomique »• Plus adapté aux grandes BD.• Pas « très simple » à mettre en place et à utiliser• Pas de « joins » comme en SQL Relationnel• Pas de requêtes sur les valeurs des données (à venir, v0.8)
SourcesSites Indépendants (FR) :
� http://www.betecommechou.com/2009/07/cassandra-le-modele-de-donnees/� http://blogexpertease.alti.com/index.php?2010/03/02/156-le-projet-cassandra-de-apache� http://victor-kabdebon.blogspot.com/ (auteur de VoxNucleus)� http://blog.xebia.fr/2010/05/04/nosql-europe-bases-de-donnees-orientees-colonnes-et-
cassandra/� http://pro.01net.com/editorial/513928/digg-adopte-a-son-tour-nosql-et-abandonne-mysql/� http://pro.01net.com/editorial/513928/digg-adopte-a-son-tour-nosql-et-abandonne-mysql/� http://blog.octo.com/nosql-jouons-avec-cassandra-13/
Sites Indépendants (EN) :
� http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/� Autres présentations sur Slideshare
Sites officiels :
� http://wiki.apache.org/cassandra/� http://cassandra.apache.org/
Merci de votre attention…
32NFE204 - CNAM - Damien JARS
NFE204 - Damien JARS – 14 Décembre 2010