cassandra ippevent 20 juin 2013

Post on 14-Jun-2015

304 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides de la présentation "Cassandra Java Driver" à l'Ippevent du 20 juin 2013 http://blog.ippon.fr/2013/06/03/ippevent-utiliser-les-nouvelles-apis-cassandra-le-2-juin-2013/

TRANSCRIPT

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

CASSANDRA-JAVA-DRIVERVers 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

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

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

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

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

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

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

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

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

AG

ILIT

E

CQL 3 - Performances

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

AG

ILIT

E

CQL 3 - Performances

Attention : performance des SELECT * 

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

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

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

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)

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

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

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

top related