cassandra java driver : vers cassandra 1.2 et au-delà

26
www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr CASSANDRA-JAVA-DRIVER Vers Cassandra 1.2 et au delà

Upload: ippon-technologies

Post on 04-Jun-2015

1.482 views

Category:

Documents


0 download

TRANSCRIPT

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

CASSANDRA-JAVA-DRIVERVers Cassandra 1.2 et au delà

Page 2: 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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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.8Apachetop level 0.8

Apacheincubator

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

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.0Release Mai 2013Compatible avec Cassandra 1.2+Apache License Version 2.0Développé par les équipes de Datastax

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

CQL 3 - CQL

CQL : C  assandra Query Language

CQL 3 ~  = SQLMê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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

CQL 3 - UPSERT

Cependant l'UPSERT reste possiblecqlsh: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

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

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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

CQL 3 – Modélisation (Wide Rows)

Wide RowsCassandra peut stocker plus de 2M de colonnes par clef.Exemple : 

→ Comment faire avec CQL 3 ? 

buzz 133829 133950 134022 142109Star command ...

Vers l'infini Où est Zurg ? Space command ...

woody 133983 134802J'ai un serpent ...

Qui a empoisonné ...

KEY COLUMNS ...

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

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-dialogStar command ... Vers l'infini Où est Zurg ? Space command ...

woody 133983-dialog 134802-dialogJ'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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

CQL 3 - Performances

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

CQL 3 - Performances

Attention : performance des SELECT * 

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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 onnative_transport_port: 9042

# Whether to start the thrift rpc server.start_rpc: true# port for Thrift to listen for clients onrpc_port: 9160

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

Java Driver

Java Driver

Fonctionnalités Query Query Builder Prepared Statements Exécution asynchrone Métriques Politiques

Page 16: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 17: Cassandra Java Driver : vers Cassandra 1.2 et au-delà

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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)

Page 18: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 19: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 20: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 21: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 22: Cassandra Java Driver : vers Cassandra 1.2 et au-delà
Page 23: Cassandra Java Driver : vers Cassandra 1.2 et au-delà

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

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

www.ippon.fr www.atomes.com www.ippon-mobile.fr http://blog.ippon.fr

AG

ILIT

E

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 soclesAPI très agréable à utiliserTrès configurable/extensible

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

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

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