Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra, web scale no sql data platform
-
Upload
marko-svaljek -
Category
Technology
-
view
129 -
download
0
description
Transcript of Cassandra, web scale no sql data platform
![Page 1: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/1.jpg)
CASSANDRAWEB-SCALE NOSQL DATA PLATFORM
/ Marko Švaljek @msvaljek
0
![Page 2: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/2.jpg)
ABOUT MESoftware Developer at KapschZagreb Cassandra Meetup
![Page 3: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/3.jpg)
NUMBERS25% of the Fortune 100 use itApple - 75 000 nodes, 10 PB of dataNetflix - 2500 nodes, 1 trillion req/dayDataStax - professional Cassandra supportMeetup - 167 Groups, 114 Cities, 41 Countries
![Page 4: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/4.jpg)
FUN PART
Android TV Box
Arduino
![Page 5: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/5.jpg)
FUN PART
Android TV Box
Arduino
![Page 6: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/6.jpg)
BREWER'S CAP THEOREMAvailability
Partition ToleranceConsistency
CA AP
CP
nodes can fail
same data for all network fails
RDBMS Cassandra
MongoDB
![Page 7: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/7.jpg)
CONSISTENT HASHING - 1hash_function: row_key -> [0 .. 99]
A
BC
D0
25
50
75
![Page 8: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/8.jpg)
CONSISTENT HASHING - 2Murmur3: row_key -> -263 to 263-1
A
B C
D
hash(C")
hash(A")
hash(D")
hash(B")
![Page 9: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/9.jpg)
CONSISTENT HASHING - 3num_tokens: 256
virtual nodes
![Page 10: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/10.jpg)
GOSSIPA
C
D
H B
F
E is down
G is down
12
3
![Page 11: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/11.jpg)
CLIENT REQUESTSA
C
BDClient
CoordinatorNode
quorum =replication_factor
2+ 1
![Page 12: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/12.jpg)
WRITE PATH
Memory
Disk
Commit log
memtable
Data
SSTable
memtableFlush
Inde
x
![Page 13: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/13.jpg)
COMPACTION
Removetombstones
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
Merge
Uncompacted data
- - - - -
- - - - -
- - - - -
Latest data entries
- - - - -
- - - - -
- - - - -
Compacted data
Consolidate
![Page 14: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/14.jpg)
BLOOM FILTER
1 1 1 0 1 1 0 0 0 1 0 1
A B C
D
✓ ✓ ✗
![Page 15: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/15.jpg)
READING FROM SSTABLEData?
Memory
Disk
Read Bloom Filter
Key Cache
DataSSTable
Data not in filter Data is in filter
![Page 16: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/16.jpg)
DATA ORGANIZATIONKeyspace
Column family (table)
Row ...Column Column
Timpestamp Timpestamp
Value Value
![Page 17: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/17.jpg)
KEYSPACECREATE KEYSPACE used_cars WITH replication = { 'class': 'SimpleStrategy', 'replication_factor' : 1};
CREATE KEYSPACE used_cars WITH replication = { 'class': 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 3};
![Page 18: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/18.jpg)
TABLESCREATE TABLE users ( username text PRIMARY KEY, password text, first_name text, last_name text, state text);
![Page 19: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/19.jpg)
INSERTINGINSERT INTO offers (username, date, price, brand, model, year, mileage, color) VALUES ('jsmith', '2014-09-19 11:35:20', 6000, 'BMW', '120i', 2010, 40000, 'Black');
![Page 20: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/20.jpg)
UPDATEUPDATE offers SET brand = 'Ford', model = 'Mustang' WHERE username = 'jdoe' AND date = '2014-08-11 17:12:32+0200';
Use upsert (insert same data) when possibleNO updating of primary key fields
![Page 21: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/21.jpg)
DELETEDELETE FROM offers WHERE username = 'jdoe' AND date = '2014-08-11 17:12:32+0200';
tombstones
![Page 22: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/22.jpg)
SELECTSELECT username, date, brand, model FROM offers WHERE username = 'jsmith';
username | date | brand | model----------+--------------------------+-------+------- jsmith | 2014-05-11 01:22:11+0200 | Ford | Orion jsmith | 2014-09-09 11:35:20+0200 | BMW | 118d jsmith | 2014-09-19 11:35:20+0200 | BMW | 120i jsmith | 2014-09-20 17:12:32+0200 | Audi | A6
![Page 23: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/23.jpg)
APPS15+ languages supported
var cql = require('node-cassandra-cql');
var client = new cql.Client({ hosts: ['127.0.0.1:9042'], keyspace: 'test'});
client.execute('SELECT * FROM test_table', [], function(err, result) { for (var i = 0; i < result.rows.length; i++) { console.log(result.rows[i].get('id')); console.log(result.rows[i].get('test_value')); } });
![Page 24: Cassandra, web scale no sql data platform](https://reader034.fdocuments.in/reader034/viewer/2022052601/559453161a28abe14f8b4741/html5/thumbnails/24.jpg)
THANK YOU!
Q & A
@msvaljek