33
NFE204 - Damien JARS – 14 Décembre 2010

NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

NFE204 - Damien JARS – 14 Décembre 2010

Page 2: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 3: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 4: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 5: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 6: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 7: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

Origines de Cassandra (3)

� Utilisée par :

7NFE204 - CNAM - Damien JARS

Page 8: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 9: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 10: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 11: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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 ?

Page 12: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

No-SQL - Orienté Colonne (2)

� Cassandra ajoute les « SuperColumns »

� Requêtes sur un ensemble de SuperColumns

12NFE204 - CNAM - Damien JARS

Page 13: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 14: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 15: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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 »

Page 16: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

Modèle de donnéesCluster

Keyspace

ColumnFamily

Key

Ensemble de clés-valeurs. (~Tables)

Key

SuperColumn( facultatif )

Column

Value

16NFE204 - CNAM - Damien JARS

Page 17: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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)

Page 18: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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>)

Page 19: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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[]

Page 20: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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}

}

Page 21: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 22: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 23: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

Utilisation – Lectures (2)

En Interne :

� MemTable

� Serveur le plus proche

Réparation Auto.� Réparation Auto.

� Attend N réponses

23NFE204 - CNAM - Damien JARS

Page 24: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

Utilisation – Écritures (1)

API :

� insert()

� batch_insert()

� remove()� remove()

� batch_mutate()

24NFE204 - CNAM - Damien JARS

Page 25: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 26: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

Utilisation – Écritures (2)

En Interne :

26NFE204 - CNAM - Damien JARS

Page 27: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 28: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 29: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 30: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 31: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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)

Page 32: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

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

Page 33: NFE204 -Damien JARS –14 Décembre 2010deptinfo.cnam.fr/~rigaux/docs/jars_cassandra.pdf · Origines de Cassandra (2) Modèle de données de Google® BigTable® no-sqlorienté colonnes,

NFE204 - Damien JARS – 14 Décembre 2010