| | Mit ili proročanstvo? 1 Cassandra
Mit ili proročanstvo?
Cassandra
Mario Lukica
Krešimir Jurasović
Vedran Pugar 03.06.2013
| | Mit ili proročanstvo? 2 Cassandra
Kapsch – O kompaniji
03.06.2013
| | Mit ili proročanstvo? 3 Cassandra
Osnovne karakteristike
■ Otvoreni kod
■ Java
■ Distribuirana
■ Decentralizirana
■ Elastično skalabilna
■ Visoko dostupna, otporna na
greške
■ Podesivo konzistentna
■ Orijentirana prema stupcu
■ Time-to-live
■ Kompresija podataka
■ Ugrađena priručna memorija
03.06.2013
| | Mit ili proročanstvo? 4 Cassandra
Povijest
03.06.2013
2007
2008
Dynamo BigTable
Code
2009 2010 2011 2012
Apache
Incubator
Apache
Top-Level
v 0.6
2013
v 0.7
v 0.8
v 1.0 v 1.1 v 1.2
| | Mit ili proročanstvo? 5 Cassandra
Primjena
■Puno upisa
■ Upis aktivnosti korisnika ili uređaja
■ Korištenje društvenih mreža
■ Statistika aplikacije, nadzor, logiranje
■Geografska distribucija
■Replikacija između više podatkovnih centara ili zona dostupnosti
■ Podaci blizu klijenata
■Georedundancija
■Aplikacije u razvoju
■Model podataka bez sheme
03.06.2013
| | Mit ili proročanstvo? 6 Cassandra
Klijenti
03.06.2013
| | Mit ili proročanstvo? 7 Cassandra
CAP teorem
03.06.2013
■ Brewer, 2000
■Odaberi bilo koja 2 od:
■ Konzistencija
■ Dostupnost
■ Otpornost na razdiobu
■ Formalno dokazana
■Naglasak Cassandre
na dostupnost i
otpornost na razdiobu
Dostupnost
Konzistencija Otpornost
na
razdiobu
| | Mit ili proročanstvo? 8 Cassandra
Klaster
03.06.2013
0
75
50
25
Primjer tokena: 9786649238011895861830862952942418766
>76
1 - 25
26 - 50
51 - 75
■ Gossip
■ Replike
■ Replikacijski faktor
■ Strategija razmještaja
replika
■ Raspon tokena
■ Dijelitelj
■ Konzistentno raspršivanje
■ Snitch
Red 1
Red 2
RF = 3
| | Mit ili proročanstvo? 9 Cassandra
Topologija s više podatkovnih centara
03.06.2013
■ NetworkTopologyStrategy
0
75
50
25
1
76
51
26 PC 1 PC 2
RF = 3 RF = 2
Red 1
| | Mit ili proročanstvo? 10 Cassandra
Operacije
03.06.2013
RF = 3
Klijent
■ Koordinator
■ Razina konzistencije definirana
za svaku operaciju
■ Razina konzistencije definirana
u odnosu na replikacijski faktor –
ne ovisi o broju servera u
klasteru
■ Najnovija vrijednost stupca se
vraća kod čitanja
■ Popravak kod čitanja
■ Nagovještaj prijenosa
■ Redovno održavanje baze
| | Mit ili proročanstvo? 11 Cassandra
Razine konzistencije
■ ZERO (upis)
■ ANY (upis)
■ ONE
■ TWO
■ THREE
■ QUORUM
■ LOCAL_QUORUM
■ EACH_QUORUM
■ ALL
03.06.2013
| | Mit ili proročanstvo? 12 Cassandra
Jaka i odgođena konzistencija
Jaka konzistencija:
W + R > RF
Odgođena konzistencija:
W + R <= RF
W – broj upisa
R – broj čitanja
RF – replikacijski faktor
03.06.2013
| | Mit ili proročanstvo? 13 Cassandra
Pohrana podataka
03.06.2013
memorija
disk
CommitLog
Memtable
CF2
Memtable
CF1
- samo izmjene
- koristi se za sve CF-ove
- 1 po CF-u
SSTable-CF1-1 - više SSTable-ova za CF
- više datoteka za SSTable:
- podaci
- indeks
- bloom filter
- informacije o kompresiji
- statistički podaci
Klijent
1.
2.
asinhrono
| | Mit ili proročanstvo? 14 Cassandra
Data Model
03.06.2013
name1
value1
name2
value2
name3
value3
Stupac
rowId1
name1
value1
name4
value4 rowId2 Redak
name5
value51
name6
value61
rowId3
superColName1
name5
value52
name6
value62
superColName2
Super stupac
Obitelj stupaca
Keyspace
■ Kompozitni stupci
■ Vremenski ograničeni stupci
■ Stupci brojači
■ Tipovi podataka (Comparators &
Validators)
| | Mit ili proročanstvo? 15 Cassandra
cassandra-cli
CREATE COLUMN FAMILY users WITH comparator = UTF8Type AND key_validation_class=UTF8Type AND column_metadata = [ {column_name: full_name, validation_class: UTF8Type} {column_name: email, validation_class: UTF8Type} ];
SET users['ID1']['full_name']='Robert Jones'; SET users['ID1']['email']='[email protected]';
LIST users; GET users[utf8('ID1')][utf8('full_name')];
DEL users ['ID1']['email'];
03.06.2013
| | Mit ili proročanstvo? 16 Cassandra
CQL 3
CREATE TABLE tweets ( tweet_id bigint PRIMARY KEY, author varchar, body varchar );
CREATE INDEX tweets_author_idx ON tweets (author);
INSERT INTO tweets (tweet_id, author, body) VALUES (123, 'john', 'Checking up on Cassandra');
SELECT * FROM tweets WHERE author = 'john' ORDER BY tweet_id DESC LIMIT 50;
UPDATE tweets USING TTL 86400 SET body = 'Was checking up on Cassandra' WHERE author = 'john';
DELETE body FROM tweets WHERE author = 'john';
03.06.2013
| | Mit ili proročanstvo? 17 Cassandra
Klijenti
■ Java:
■ Hector, Astyanax, Pelops, Firebrand OCM, PlayOrm, Kundera, DataStax
Java Driver
■Scala
■ Cascal
■Python
■ Pycassa
■Ostali
■ Node.js, Clojure, .NET, Ruby, PHP, Perl, C++, Haskell, Erlang, Go
03.06.2013
| | Mit ili proročanstvo? 18 Cassandra
Monitoring i održavanje
■ JMX
■ nodetool
■Cassandra Cluster Admin
■OpsCenter (CE, EE)
03.06.2013
| | Mit ili proročanstvo? 19 Cassandra
Komercijalna rješenja
■DataStax
■ Community i Enterprise
■ Enterprise
■ Objedinjava podatke u realnom vremenu (Cassandra), analitiku (Hadoop)
i pretraživanje (Solr)
■ Podrška, trening, konzalting
■ OpsCenter
■Acunu
■ Real-Time Analytics
03.06.2013
| | Mit ili proročanstvo? 20 Cassandra
Zaključak
■Postoje opcije kod odabira baze podataka
■ SQL
■ NoSQL
■ NewSQL
■ ... još više opcija unutar svake obitelji baza
■Cassandra je jako dobar izbor u nekim situacijama
■Odaberite ovisno o zahtjevima aplikacije
03.06.2013
| | Mit ili proročanstvo? 21 Cassandra
Reference
■ Documentation : DataStax http://www.datastax.com/docs
■ Cassandra Wiki http://wiki.apache.org/cassandra/
■ git clone http://git-wip-us.apache.org/repos/asf/cassandra.git
■ Dynamo: Amazon’s Highly Available Key-value Store http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
■ Bigtable: A Distributed Storage System for Structured Data http://research.google.com/archive/bigtable.html
■ Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-
Tolerant Web Services http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf
03.06.2013
| | Mit ili proročanstvo? 22 Cassandra
Hvala!
03.06.2013