SlideShare a Scribd company logo
1 of 26
Download to read offline
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
CASSANDRA-JAVA-DRIVER
Vers Cassandra 1.2 et au delà
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
Sommaire

Cassandra

CQL 3

Binary Protocol

Java Driver

Modes de Requêtage

Métriques

Policies
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CASSANDRA
Base de données NoSQL orientée colonne

Extrêmement rapide

Pas de SPOF

Écrite en Java

...
2008
Facebook
2013
1.2
2009 2010 2011 2012
1.11.00.8
Apache
top level 0.8
Apache
incubator
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
CASSANDRA JAVA DRIVER
DATASTAX CASSANDRA JAVA DRIVER
CQL 3 + CQL Binary Protocol
Version 1.0.0
Release Mai 2013
Compatible avec Cassandra 1.2+
Apache License Version 2.0
Développé par les équipes de Datastax
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL 3 - CQL
CQL : C  assandra Query Language
CQL 3 ~  = SQL
Même syntaxe sans agrégation (JOIN, GROUP BY, …)
Changement de philosophie avec CQL 3 :   
→ Nécessite un schéma ! 
CREATE TABLE Users (KEY text PRIMARY KEY, NAME text)
INSERT INTO Users(KEY, NAME) VALUES ('1','Buzz') SELECT * FROM Users
UPDATE Users SET NAME='Woody' WHERE KEY='1'
ALTER TABLE Users ADD AGE text
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL 3 - SCHEMA
ippon@ippon:~$ cqlsh -2 -k ippevent
[cqlsh 3.0.2 | Cassandra 0.0.0 | CQL spec 2.0.0 | Thrift protocol 19.36.0]
cqlsh:ippevent> CREATE TABLE person (KEY text PRIMARY KEY, NAME text);
cqlsh:ippevent> INSERT INTO person(KEY, NAME, AGE) VALUES ('1','buzz',30);
cqlsh:ippevent> SELECT * FROM person;
KEY | AGE | NAME
-----+-----+------
1 | 30 | buzz
ippon@ippon:~$ cqlsh -3 -k ippevent
[cqlsh 3.0.2 | Cassandra 1.2.5 | CQL spec 3.0.0 | Thrift protocol 19.36.0]
cqlsh:ippevent> CREATE TABLE person (KEY text PRIMARY KEY, NAME text);
cqlsh:ippevent> INSERT INTO person(KEY, NAME, AGE) VALUES ('1','buzz',30);
Bad Request: Unknown identifier age
CLQ 2
CLQ 3
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL 3 - UPSERT
Cependant l'UPSERT reste possible
cqlsh:ippevent> SELECT * FROM Mutations;
cqlsh:ippevent> UPDATE Mutations SET A='value from UPDATE'
WHERE KEY='1';
cqlsh:ippevent> SELECT * FROM Mutations;
key | a | b
-----+-------------------+------
1 | value from UPDATE | null
cqlsh:ippevent> INSERT INTO Mutations(KEY,B)
VALUES('1','value from INSERT');
cqlsh:ippevent> SELECT * FROM Mutations;
key | a | b
-----+-------------------+-------------------
1 | value from UPDATE | value from INSERT
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
CQL 3 – Super Column
Abandon des Super Columns

Colonne dont la valeur est des colonnes
→ Préférer désormais l'utilisation de
clustering keys
buzz AGE ADRESSE
32 NUMERO RUE VILLE
90 Baudin Levallois
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
CQL 3 – Modélisation (Wide Rows)
Wide Rows
Cassandra peut stocker plus de 2M de colonnes par
clef.
Exemple : 
→ Comment faire avec CQL 3 ? 
buzz 133829 133950 134022 142109
Star command
...
Vers l'infini Où est Zurg ? Space
command ...
woody 133983 134802
J'ai un
serpent ...
Qui a
empoisonné ...
KEY COLUMNS ...
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
CQL 3 – Modélisation (Wide Rows)
buzz 133829-dialog 133950-dialog 134022-dialog 142109-dialog
Star command ... Vers l'infini Où est Zurg ? Space command ...
woody 133983-dialog 134802-dialog
J'ai un serpent ... Qui a empoisonné ...
CREATE TABLE DIALOG (
username VARCHAR,
said_at TIMESTAMP,
dialog VARCHAR,
PRIMARY KEY (username, said_at)
)
username said_at dialog
buzz 133829 Star command ...
buzz 133950 Vers l'infini ...
...
woody 133983 J'ai un serpent ...
...
Représentation Logique
Représentation Physique
Partition key Clustering key
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL 3 - Performances
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL 3 - Performances
Attention : performance des SELECT * 
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL Binary Protocol
CQL Binary Protocol remplaçant de Thrift
Thrift : rapide et multi-language 
Pourquoi changer ? RPC seulement. 
CQL Binary Protocol ouvre la porte au
streaming (curseurs), aux notifications
techniques, …
Mais Thrift reste maintenu
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CQL Binary Protocol

Nouveau port (9042 par défaut)

Actif par défaut Cassandra 1.2.5+

Peut cohabiter avec l'interface Thrift
$CASSANDRA_HOME/conf/cassandra.yaml
# Whether to start the native transport server.
# Please note that the address on which the native transport is bound is the
# same as the rpc_address. The port however is different and specified below.
start_native_transport: true
# port for the CQL native transport to listen for clients on
native_transport_port: 9042
# Whether to start the thrift rpc server.
start_rpc: true
# port for Thrift to listen for clients on
rpc_port: 9160
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
Java Driver
Java Driver
Fonctionnalités

Query

Query Builder

Prepared Statements

Exécution asynchrone

Métriques

Politiques
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
Java Driver - QueryBuilder
QueryBuilder : 

Construction de requêtes typées

Fluent API
Opérations supportées

SELECT

UPDATE

INSERT

DELETE

BATCH
Pas encore d’opérations de DDL (prévu en 1.1.0)
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
Java Driver – Policies
ReconnectionPolicy

ConstantReconnectionPolicy // ré-éssai à intervall régulier

ExponentialReconnectionPolicy
LoadBalancingPolicy

DCAwareRoundRobinPolicy // load balance au sein d'un DC

RoundRobinPolicy

TokenAwarePolicy // load balance sur les nœuds qui ont la data
RetryPolicy

DowngradingConsistencyPolicy

LoggingRetryPolicy
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
AGILITE
CONCLUSION
Java Driver utilise un nouveau socle tourné vers les
futures releases de Cassandra

CQL 3

Adoption par utilisateurs SQL facilitée

Représentation logique de stockages spécifiques

CQL Binary Protocol

Taillé pour la forte volumétrie

Permettra d'accueillir de nouvelles fonctionnalités (ex : 
curseurs)
1ère implémentation de ces 2 socles
API très agréable à utiliser
Très configurable/extensible
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr
Liens
C* Summit 2013 : 

http://planetcassandra.org/Learn/CassandraSummit
NYC* 2013 - New Cassandra Drivers in Depth«   »
Michael Figuière
Documentation : 

http://www.datastax.com/doc-source/developer/java-driver/
Benchs

https://github.com/brianfrankcooper/YCSB

https://github.com/vberetti/YCSB
Cassandra Java Driver : vers Cassandra 1.2 et au-delà

More Related Content

What's hot

Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchMourad DACHRAOUI
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysVictor Coustenoble
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureFlorian Hussonnois
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostAlexander DEJANOVSKI
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraVictor Coustenoble
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beatsgcatt
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Modern Data Stack France
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandraDuyhai Doan
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetAlban Phélip
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika
 

What's hot (19)

Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearchParis Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Apache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalitésApache Cassandra - Concepts et fonctionnalités
Apache Cassandra - Concepts et fonctionnalités
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Webinar Degetel DataStax
Webinar Degetel DataStaxWebinar Degetel DataStax
Webinar Degetel DataStax
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
 
Consolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic BeatsConsolidez vos journaux et vos métriques avec Elastic Beats
Consolidez vos journaux et vos métriques avec Elastic Beats
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Delta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquetDelta Lake, un vernis pour parquet
Delta Lake, un vernis pour parquet
 
Zenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_mlZenika matinale spark-zeppelin_ml
Zenika matinale spark-zeppelin_ml
 

Viewers also liked

One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014Ippon
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationIppon
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Ippon
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Ippon
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Ippon
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Ippon
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Ippon
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
 
Introduction to NoSQL Databases | Hadoop Quick Introduction
Introduction to NoSQL Databases | Hadoop Quick IntroductionIntroduction to NoSQL Databases | Hadoop Quick Introduction
Introduction to NoSQL Databases | Hadoop Quick IntroductionZaranTech LLC
 
Morning With MongoDB
Morning With MongoDBMorning With MongoDB
Morning With MongoDBFastConnect
 

Viewers also liked (20)

One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
One Web (API?) – Alexandre Bertails - Ippevent 10 juin 2014
 
Multi criteria queries on a cassandra application
Multi criteria queries on a cassandra applicationMulti criteria queries on a cassandra application
Multi criteria queries on a cassandra application
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
 
Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...Démystifions le machine learning avec spark par David Martin pour le Salon B...
Démystifions le machine learning avec spark par David Martin pour le Salon B...
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
 
Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014Formation Usine Logicielle gratuite par Ippon 2014
Formation Usine Logicielle gratuite par Ippon 2014
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à AchillesJPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
NoSQL Introduction
NoSQL IntroductionNoSQL Introduction
NoSQL Introduction
 
El Supremo de Florida mantiene la pena de muerte a Pablo Ibar
El Supremo de Florida mantiene la pena de muerte a Pablo IbarEl Supremo de Florida mantiene la pena de muerte a Pablo Ibar
El Supremo de Florida mantiene la pena de muerte a Pablo Ibar
 
Introduction to NoSQL Databases | Hadoop Quick Introduction
Introduction to NoSQL Databases | Hadoop Quick IntroductionIntroduction to NoSQL Databases | Hadoop Quick Introduction
Introduction to NoSQL Databases | Hadoop Quick Introduction
 
Morning With MongoDB
Morning With MongoDBMorning With MongoDB
Morning With MongoDB
 

Similar to Cassandra Java Driver : vers Cassandra 1.2 et au-delà

Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
EIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relayEIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relaymdyabi
 
Firewalls
FirewallsFirewalls
Firewallsc0r3war
 
Les commandes CISCO (routeur)
Les commandes CISCO (routeur)Les commandes CISCO (routeur)
Les commandes CISCO (routeur)EL AMRI El Hassan
 
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm
 
Deep Dive: Virtual Private Cloud
Deep Dive: Virtual Private CloudDeep Dive: Virtual Private Cloud
Deep Dive: Virtual Private CloudJulien SIMON
 
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : Architecture
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : ArchitectureAlphorm.com Formation CCNP ENCOR 350-401 (5/8) : Architecture
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : ArchitectureAlphorm
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECSylia Baraka
 
vpn-site-a-site-avec-des-routeurs-cisco
 vpn-site-a-site-avec-des-routeurs-cisco vpn-site-a-site-avec-des-routeurs-cisco
vpn-site-a-site-avec-des-routeurs-ciscoCamara Assane
 
Présentation etherchannel
Présentation etherchannelPrésentation etherchannel
Présentation etherchannelLechoco Kado
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerThe Incredible Automation Day
 

Similar to Cassandra Java Driver : vers Cassandra 1.2 et au-delà (20)

Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
EIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relayEIGRP - EIGRP sur frame relay
EIGRP - EIGRP sur frame relay
 
Firewalls
FirewallsFirewalls
Firewalls
 
Démystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGADémystifier la programmation avec LabVIEW FPGA
Démystifier la programmation avec LabVIEW FPGA
 
Les commandes CISCO (routeur)
Les commandes CISCO (routeur)Les commandes CISCO (routeur)
Les commandes CISCO (routeur)
 
Tout atm
Tout atmTout atm
Tout atm
 
Orchestration
OrchestrationOrchestration
Orchestration
 
Orchestration
OrchestrationOrchestration
Orchestration
 
Astuces cisco
Astuces ciscoAstuces cisco
Astuces cisco
 
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : RoutingAlphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
Alphorm.com Formation CCNP ENCOR 350-401 (2of8) : Routing
 
CCNA 3.pdf
CCNA 3.pdfCCNA 3.pdf
CCNA 3.pdf
 
Deep Dive: Virtual Private Cloud
Deep Dive: Virtual Private CloudDeep Dive: Virtual Private Cloud
Deep Dive: Virtual Private Cloud
 
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : Architecture
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : ArchitectureAlphorm.com Formation CCNP ENCOR 350-401 (5/8) : Architecture
Alphorm.com Formation CCNP ENCOR 350-401 (5/8) : Architecture
 
Event sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPECEvent sourcing avec Kafka, UPEC
Event sourcing avec Kafka, UPEC
 
Tuto VP IPSEC Site-to-site
Tuto VP IPSEC Site-to-siteTuto VP IPSEC Site-to-site
Tuto VP IPSEC Site-to-site
 
Adsl cisco
Adsl ciscoAdsl cisco
Adsl cisco
 
Vpn
VpnVpn
Vpn
 
vpn-site-a-site-avec-des-routeurs-cisco
 vpn-site-a-site-avec-des-routeurs-cisco vpn-site-a-site-avec-des-routeurs-cisco
vpn-site-a-site-avec-des-routeurs-cisco
 
Présentation etherchannel
Présentation etherchannelPrésentation etherchannel
Présentation etherchannel
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 

More from Ippon

Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ipponIppon
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratiqueIppon
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautifulIppon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Ippon
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfaitIppon
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponIppon
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitIppon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open SourceIppon
 

More from Ippon (11)

Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ippon
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratique
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautiful
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfait
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec Ippon
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 

Cassandra Java Driver : vers Cassandra 1.2 et au-delà

  • 1. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CASSANDRA-JAVA-DRIVER Vers Cassandra 1.2 et au delà
  • 2. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr Sommaire  Cassandra  CQL 3  Binary Protocol  Java Driver  Modes de Requêtage  Métriques  Policies
  • 3. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CASSANDRA Base de données NoSQL orientée colonne  Extrêmement rapide  Pas de SPOF  Écrite en Java  ... 2008 Facebook 2013 1.2 2009 2010 2011 2012 1.11.00.8 Apache top level 0.8 Apache incubator
  • 4. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CASSANDRA JAVA DRIVER DATASTAX CASSANDRA JAVA DRIVER CQL 3 + CQL Binary Protocol Version 1.0.0 Release Mai 2013 Compatible avec Cassandra 1.2+ Apache License Version 2.0 Développé par les équipes de Datastax
  • 5. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL 3 - CQL CQL : C  assandra Query Language CQL 3 ~  = SQL Même syntaxe sans agrégation (JOIN, GROUP BY, …) Changement de philosophie avec CQL 3 :    → Nécessite un schéma !  CREATE TABLE Users (KEY text PRIMARY KEY, NAME text) INSERT INTO Users(KEY, NAME) VALUES ('1','Buzz') SELECT * FROM Users UPDATE Users SET NAME='Woody' WHERE KEY='1' ALTER TABLE Users ADD AGE text
  • 6. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL 3 - SCHEMA ippon@ippon:~$ cqlsh -2 -k ippevent [cqlsh 3.0.2 | Cassandra 0.0.0 | CQL spec 2.0.0 | Thrift protocol 19.36.0] cqlsh:ippevent> CREATE TABLE person (KEY text PRIMARY KEY, NAME text); cqlsh:ippevent> INSERT INTO person(KEY, NAME, AGE) VALUES ('1','buzz',30); cqlsh:ippevent> SELECT * FROM person; KEY | AGE | NAME -----+-----+------ 1 | 30 | buzz ippon@ippon:~$ cqlsh -3 -k ippevent [cqlsh 3.0.2 | Cassandra 1.2.5 | CQL spec 3.0.0 | Thrift protocol 19.36.0] cqlsh:ippevent> CREATE TABLE person (KEY text PRIMARY KEY, NAME text); cqlsh:ippevent> INSERT INTO person(KEY, NAME, AGE) VALUES ('1','buzz',30); Bad Request: Unknown identifier age CLQ 2 CLQ 3
  • 7. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL 3 - UPSERT Cependant l'UPSERT reste possible cqlsh:ippevent> SELECT * FROM Mutations; cqlsh:ippevent> UPDATE Mutations SET A='value from UPDATE' WHERE KEY='1'; cqlsh:ippevent> SELECT * FROM Mutations; key | a | b -----+-------------------+------ 1 | value from UPDATE | null cqlsh:ippevent> INSERT INTO Mutations(KEY,B) VALUES('1','value from INSERT'); cqlsh:ippevent> SELECT * FROM Mutations; key | a | b -----+-------------------+------------------- 1 | value from UPDATE | value from INSERT
  • 8. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CQL 3 – Super Column Abandon des Super Columns  Colonne dont la valeur est des colonnes → Préférer désormais l'utilisation de clustering keys buzz AGE ADRESSE 32 NUMERO RUE VILLE 90 Baudin Levallois
  • 9. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CQL 3 – Modélisation (Wide Rows) Wide Rows Cassandra peut stocker plus de 2M de colonnes par clef. Exemple :  → Comment faire avec CQL 3 ?  buzz 133829 133950 134022 142109 Star command ... Vers l'infini Où est Zurg ? Space command ... woody 133983 134802 J'ai un serpent ... Qui a empoisonné ... KEY COLUMNS ...
  • 10. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CQL 3 – Modélisation (Wide Rows) buzz 133829-dialog 133950-dialog 134022-dialog 142109-dialog Star command ... Vers l'infini Où est Zurg ? Space command ... woody 133983-dialog 134802-dialog J'ai un serpent ... Qui a empoisonné ... CREATE TABLE DIALOG ( username VARCHAR, said_at TIMESTAMP, dialog VARCHAR, PRIMARY KEY (username, said_at) ) username said_at dialog buzz 133829 Star command ... buzz 133950 Vers l'infini ... ... woody 133983 J'ai un serpent ... ... Représentation Logique Représentation Physique Partition key Clustering key
  • 11. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL 3 - Performances
  • 12. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL 3 - Performances Attention : performance des SELECT * 
  • 13. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL Binary Protocol CQL Binary Protocol remplaçant de Thrift Thrift : rapide et multi-language  Pourquoi changer ? RPC seulement.  CQL Binary Protocol ouvre la porte au streaming (curseurs), aux notifications techniques, … Mais Thrift reste maintenu
  • 14. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CQL Binary Protocol  Nouveau port (9042 par défaut)  Actif par défaut Cassandra 1.2.5+  Peut cohabiter avec l'interface Thrift $CASSANDRA_HOME/conf/cassandra.yaml # Whether to start the native transport server. # Please note that the address on which the native transport is bound is the # same as the rpc_address. The port however is different and specified below. start_native_transport: true # port for the CQL native transport to listen for clients on native_transport_port: 9042 # Whether to start the thrift rpc server. start_rpc: true # port for Thrift to listen for clients on rpc_port: 9160
  • 15. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE Java Driver Java Driver Fonctionnalités  Query  Query Builder  Prepared Statements  Exécution asynchrone  Métriques  Politiques
  • 16.
  • 17. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE Java Driver - QueryBuilder QueryBuilder :   Construction de requêtes typées  Fluent API Opérations supportées  SELECT  UPDATE  INSERT  DELETE  BATCH Pas encore d’opérations de DDL (prévu en 1.1.0)
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr Java Driver – Policies ReconnectionPolicy  ConstantReconnectionPolicy // ré-éssai à intervall régulier  ExponentialReconnectionPolicy LoadBalancingPolicy  DCAwareRoundRobinPolicy // load balance au sein d'un DC  RoundRobinPolicy  TokenAwarePolicy // load balance sur les nœuds qui ont la data RetryPolicy  DowngradingConsistencyPolicy  LoggingRetryPolicy
  • 24. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr AGILITE CONCLUSION Java Driver utilise un nouveau socle tourné vers les futures releases de Cassandra  CQL 3  Adoption par utilisateurs SQL facilitée  Représentation logique de stockages spécifiques  CQL Binary Protocol  Taillé pour la forte volumétrie  Permettra d'accueillir de nouvelles fonctionnalités (ex :  curseurs) 1ère implémentation de ces 2 socles API très agréable à utiliser Très configurable/extensible
  • 25. www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr Liens C* Summit 2013 :   http://planetcassandra.org/Learn/CassandraSummit NYC* 2013 - New Cassandra Drivers in Depth«   » Michael Figuière Documentation :   http://www.datastax.com/doc-source/developer/java-driver/ Benchs  https://github.com/brianfrankcooper/YCSB  https://github.com/vberetti/YCSB