Apache cassandra in 2016

38
Apache Cassandra™ en 2016 DuyHai DOAN Évangéliste Apache Cassandra™

Transcript of Apache cassandra in 2016

Page 1: Apache cassandra in 2016

Apache Cassandra™ en 2016DuyHai DOANÉvangéliste Apache Cassandra™

Page 2: Apache cassandra in 2016

2

Page 3: Apache cassandra in 2016

Présentation et use-cases

Page 4: Apache cassandra in 2016

@doanduyhai

Caractéristiques principales

4

•  massivement scalable (1000+ nœuds sur un seul cluster)

•  disponibilité extrême (même en cas de perte de N-1 nœuds, N=RF)

•  gestion du multi-data center/multi-cloud provider

•  data modèle riche

•  éco-système étendu (Apache Spark™, Apache Mesos™, Apache Zeppelin™)

Page 5: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

5 Messaging

Collections/ Playlists

Fraud detection

Recommendation/ Personalization

Internet of things/ Sensor data

Page 6: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

6 Messaging

Collections/ Playlists

Fraud detection

Recommendation/ Personalization

Internet of things/ Sensor data

Page 7: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

7

Page 8: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

8

Page 9: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

9

Page 10: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

10

Page 11: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

11

Page 12: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

12

Page 13: Apache cassandra in 2016

@doanduyhai

Cas d’utilisation

13

Page 14: Apache cassandra in 2016

@doanduyhai

Popularité (db-engines.com)

14

Page 15: Apache cassandra in 2016

Utilisateurs de Apache Cassandra™

Page 16: Apache cassandra in 2016

@doanduyhai

Quelques noms

16

Page 17: Apache cassandra in 2016

@doanduyhai

Quelques (nouveaux) noms

17

User management Ads Analytics

Locations

Realtime BI

State management Live streaming

Page 18: Apache cassandra in 2016

@doanduyhai

Quelques noms chez nous

18

Les 6 top banques

françaises

Page 19: Apache cassandra in 2016

Fonctionnalités d’Apache Cassandra™

Page 20: Apache cassandra in 2016

@doanduyhai

Tables distribuées

20

H

A

E

D

B C

G F

user_id1

user_id2

user_id3

user_id4

user_id5

Page 21: Apache cassandra in 2016

@doanduyhai

DDL

21

•  CREATE/ALTER/DROP KEYSPACE•  CREATE/ALTER/DROP TABLE

•  CREATE/ALTER/DROP TYPE <custom_data_type>

•  CREATE/ALTER/DROP USER•  CREATE/ALTER/DROP ROLE

•  GRANT/REVOKE <privileges> ON <table> TO <role_name>

Page 22: Apache cassandra in 2016

@doanduyhai

DML

22

INSERT INTO users(login, name, age) VALUES('jdoe', 'John DOE', 33);

UPDATE users SET age = 34 WHERE login = 'jdoe';

DELETE age FROM users WHERE login = 'jdoe';

SELECT age FROM users WHERE login = 'jdoe';

Page 23: Apache cassandra in 2016

@doanduyhai

Collections

23

CREATE TABLE xxx( …, li list<text>, se set<text>, ma map<int, text>, …);

UPDATE xxx SET li = li + [append] …UPDATE xxx SET se = se + {append} UPDATE xxx SET ma[key] = value …

Page 24: Apache cassandra in 2016

@doanduyhai

User Defined Type (UDT)

24

CREATE TYPE address ( number int, street text, zipcode text, city text, country text);

Page 25: Apache cassandra in 2016

@doanduyhai

Lightweight Transactions

25

INSERT INTO users(…) VALUES(...) IF NOT EXISTS;

DELETE users WHERE ... IF EXISTS;

UPDATE users SET age = xxx WHERE ... IF age = 30;

Page 26: Apache cassandra in 2016

@doanduyhai

Time to live

26

INSERT INTO users(…) VALUES(...) USING TTL = 3600;

UPDATE users USING TTL = 3600 SET age = xxx WHERE ...;

Page 27: Apache cassandra in 2016

@doanduyhai

User Defined Functions/Aggregates

27

CREATE FUNCTION toUpperCase(input text)RETURNS NULL ON NULL INPUT RETURNS intLANGUAGE javaAS $$ return input.toUpperCase(); $$;

SELECT toUpperCase(firstname) FROM users WHERE …

SELECT max(salary) FROM users WHERE ...

Page 28: Apache cassandra in 2016

Nouvelles fonctionnalités d’Apache Cassandra™ en 2016

Page 29: Apache cassandra in 2016

@doanduyhai

Delete by range

29

DELETE timeseriesWHERE sensor_id = xxxAND date<= yyy AND date >= zzz

Cassandra 3.0

Page 30: Apache cassandra in 2016

@doanduyhai

Vues matérialisées

30

CREATE MATERIALIZED VIEW user_by_salaryAS SELECT * FROM userWHERE id IS NOT NULL AND salary > 100000PRIMARY KEY((salary), id);

Cassandra 3.0

Page 31: Apache cassandra in 2016

@doanduyhai

Vues matérialisées

31

CREATE MATERIALIZED VIEW rich_usersAS SELECT * FROM userWHERE id IS NOT NULL AND salary > 100000PRIMARY KEY((salary), id);

CREATE MATERIALIZED VIEW rich_french_usersAS SELECT * FROM userWHERE id IS NOT NULL AND country = ‘France’ AND salary > 100000PRIMARY KEY((country), id);

Cassandra 3.10

Cassandra 3.0

Page 32: Apache cassandra in 2016

@doanduyhai

Mise à jour atomique UDT (1er niveau)

32

UPDATE usersSET address.street = 12WHERE id = xxx;

Cassandra 3.6

Page 33: Apache cassandra in 2016

@doanduyhai

Nouveau index SASI

33

CREATE CUSTOM INDEX albums_title_idx ON music.albums(title) USING 'org.apache.cassandra.index.sasi.SASIIndex’WITH OPTIONS = {

'mode': 'CONTAINS', 'analyzer_class':

'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer', 'tokenization_enable_stemming': 'true',

'analyzed': 'true', 'tokenization_normalize_lowercase': 'true’ };

Cassandra 3.5

Page 34: Apache cassandra in 2016

@doanduyhai

GROUP BY

34

SELECT avg(salary)FROM users_by_countryGROUP BY country, city;

Cassandra 3.10

Page 35: Apache cassandra in 2016

Demo 35

Page 36: Apache cassandra in 2016

36

Q & A

! "

Page 37: Apache cassandra in 2016

37

Page 38: Apache cassandra in 2016

38

@doanduyhai

[email protected]

https://academy.datastax.com/

Merci