2015 03-31 dom-code_cassandra
-
Upload
freek-van-polen -
Category
Software
-
view
55 -
download
0
Transcript of 2015 03-31 dom-code_cassandra
![Page 1: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/1.jpg)
Storing Data the Cassandra WayFreek van Polen
“Simplicity is the ultimate sophistication.”
-Leonardo Da Vinci
![Page 2: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/2.jpg)
About Me
● Cognitive Artificial Intelligence @ UU● Almende:
– Researcher, self-organization, wireless sensor networks
● Sense:– First employee, developer, backend, team leader
![Page 3: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/3.jpg)
Goal of this Talk
● Not to tell you to use Cassandra for everything
![Page 4: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/4.jpg)
Goal of this Talk
● Not to tell you to use Cassandra for everything● Not to go into all gory details of Cassandra
![Page 5: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/5.jpg)
Goal of this Talk
● Not to tell you to use Cassandra for everything● Not to go into all gory details of Cassandra● Not to show off my drawing skills
![Page 6: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/6.jpg)
Goal of this Talk
● Introduce some database theory
![Page 7: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/7.jpg)
Goal of this Talk
● Introduce some database theory● Make you enthusiastic about Cassandra
![Page 8: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/8.jpg)
Goal of this Talk
● Introduce some database theory● Make you enthusiastic about Cassandra
Use the right tool for the job!
![Page 9: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/9.jpg)
SQL vs NoSQL
![Page 10: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/10.jpg)
Non relational data
● documents● graphs● key-value● wide-row
{“meetup”: “DomCode”,“name”: “Monthly Meetup March”,“date”: “31032015”,“organizers”: [
“Ross”,“Lucas”
],“location”: “Infi”,“talks”: [
{“speaker”: “Arian”,“topic”: “functional js”
},{
“speaker”: “Freek”,“topic”: “cassandra”,“length”: 45
}]
}
![Page 11: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/11.jpg)
Non relational data
● documents● graphs● key-value● wide-row
![Page 12: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/12.jpg)
Non relational data
● documents● graphs● key-value● wide-row
“6573672017456”: “tom”
“9810919283853”: “mary”
“1129823948673”: “jane”
“9827712003003”: “dani”
![Page 13: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/13.jpg)
Non relational data
● documents● graphs● key-value● wide-row
Stock 1: [+3.23, +5.02, 2.45, 34.12, 12.65, +0.43]Stock 2: [+5.34, +6.34, +9.12, +0.53]Stock 3: [3.21, 5.32, 8.12, 0.53, 0.12, +0.43, +0.76, +2.55]
![Page 14: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/14.jpg)
Scalability
Database [A-Z]
![Page 15: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/15.jpg)
Scalability
Database [A-Z]
![Page 16: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/16.jpg)
Scalability: replication
Database [A-Z]
Copy of Database [A-Z]
![Page 17: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/17.jpg)
Scalability: sharding
Database [A-M]
Database [N-Z]
![Page 18: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/18.jpg)
Scalability: combined(oh the horror)
Database [A-M] Copy of Database [A-M]
Database [N-Z] Copy of Database [N-Z]
![Page 19: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/19.jpg)
Coordinator
Scalability: combined(oh the horror)
Database [A-M] Copy of Database [A-M]
Database [N-Z] Copy of Database [N-Z]
![Page 20: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/20.jpg)
CAP theorem
![Page 21: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/21.jpg)
CAP theorem
RDBMS
![Page 22: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/22.jpg)
ACID & BASE
● Atomicity● Consistency● Isolation● Durability
● Basically● Available● Soft-state ● Eventual consistency
![Page 23: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/23.jpg)
Cassandra \o/
![Page 24: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/24.jpg)
Cassandra Cluster
● All nodes are equal● All nodes can process any request● Throughput and storage space scales linearly● Graceful degradation
![Page 25: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/25.jpg)
Cassandra: Gossip
5
37
1
8 2
46
![Page 26: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/26.jpg)
Cassandra: Gossip
5
37
1
8 2
46
![Page 27: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/27.jpg)
Cassandra: Replication
5
37
1
8 2
46
Token Ring
![Page 28: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/28.jpg)
Cassandra: Replication
5
37
1
8 2
46
[A - D]
[E - H]
[I - K]
[L - N][O - Q]
[R - T]
[U - W]
[X - Z]
![Page 29: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/29.jpg)
Cassandra: Replication
5
37
1
8 2
46
[A - D]
[E - H]
[I - K]
[L - N][O - Q]
[R - T]
[U - W]
[X - Z] replication = 3
![Page 30: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/30.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K: 12-24?
![Page 31: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/31.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K: 12-24? K: 12-24?
![Page 32: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/32.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K: 12-24!
K: 12-24!
![Page 33: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/33.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K: 12-24!
![Page 34: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/34.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K:22 = “tom”
![Page 35: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/35.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K:22 = “tom” K:22 = “tom”
![Page 36: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/36.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
Got it!
Great success!
![Page 37: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/37.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K:22 = “tom”
K:22 = “tom”
K:22 = “jerry”
![Page 38: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/38.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K:22 = “tom”
K:22 = “tom”
K:22 = “jerry”
K:22 = “tom”
![Page 39: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/39.jpg)
Cassandra: Request Processing
5
37
1
8 2
46
K:22 = “tom”
K:22 = “tom”
K:22 = “tom”
![Page 40: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/40.jpg)
Cassandra: Tunable Consistency
● Consistency.ANY
● Consistency.ONE
● Consistency.QOURUM
● Consistency.ALL
![Page 41: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/41.jpg)
Cassandra: Data Model
CREATE TABLE transactions (account_id string,date timestamp,amount float,other_account string,PRIMARY KEY (account_id, date)
);
![Page 42: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/42.jpg)
Cassandra: Data Model
CREATE TABLE transactions (account_id string,date timestamp,amount float,other_account string,PRIMARY KEY (account_id, date)
);
29-03-2015 15:23:45
29-03-2015 16:56:21
30-03-2015 04:00:00
NLRABOxxx amount: -143.90other: NLINGxxx
amount: -29.30other: NLABNxxx
amount: +2000.00other: NLASNxxx
![Page 43: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/43.jpg)
Cassandra Data Model
● Primary Key #1:– Row key
– Unit of partitioning
● Primary Key #2:– Column key
– Order within row
– Order is preserved on disk!
![Page 44: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/44.jpg)
Distributed Concurrent Writes
from: https://aphyr.com/posts/294-call-me-maybe-cassandra
![Page 45: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/45.jpg)
Distributed Concurrent Writes
● Last write wins● Paxos● Treat data as
immutable
from: https://aphyr.com/posts/294-call-me-maybe-cassandra
![Page 46: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/46.jpg)
Distributed Concurrent Writes
● Cassandra trades consistency for availability, partition tolerance, and super easy administration...
● This is not for all use cases
from: https://aphyr.com/posts/294-call-me-maybe-cassandra
![Page 47: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/47.jpg)
THE use case: time series data
CREATE TABLE sensor_data ( sensor_id text, time timestamp, value text, PRIMARY KEY (sensor_id, time));
![Page 48: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/48.jpg)
Thanks!
![Page 49: 2015 03-31 dom-code_cassandra](https://reader031.fdocuments.in/reader031/viewer/2022032217/55a92ad91a28ab8a3e8b4576/html5/thumbnails/49.jpg)
Cassandra?