Cassandra: The Definitive Guideの5章を読んだ
の続編
6章はアーキテクチャ
この章でCassandraの仕組みを理解できました
・snitch
ネットワークのトポロジーの情報を教える
これで効率的にリクエストを送ることができる
・データの配置
各nodeは守備範囲になってるtokenが割り当てられてる
イメージとしてはringになっていて最大から最小までのどこかをカバーするイメージ
そして、データはpartition keyからhashを計算して該当のnodeに割り当てられる
・トークンの確認
今回だとlast_nameが同じなら同じtokenになる
SELECT token(last_name) FROM my_keyspace.user;
・Replication Strategy
SimpleStrategy:一つのリングにする
NetworkTopologyStrategy:各々のデータセンターでレプリケーションする
・Consistency Level
QUORUM:過半数
ONE:一つ。hintは含まない
ANY:hintも含む
・Replica factorとConsistency Levelの違い
Replica factor:いくつのノードに書き込みを保存するか
Consistency Level:いくつのノードが成功を返したら正しいにするか
・Coordinator node
初回にリクエストを受けたnode
これが他のnodeに書き込み依頼を出す
・Hinted Handoff
Coordinator nodeが書き込み時にポストイットのようなヒントを残しておく
そして、該当のnodeが復活したときに再度書き込みを実施する
・light weight transaction
略してLWT
2phase commitに変わるもの
prepareを投げて
最新のデータか確認し
propsalを返却し
過半数が返却したらcommitする
・nodeの中
Cassandra Daemon:Memtables, Key Caches, Row Caches
Disk:commit log, SSTables, Hints
・commit log
クラッシュ時の回復に利用
・書き込みのロジック
commit logに書き込み
Memtablesに書き込み
MemtablesがいっぱいになるとSSTablesに書き込み
・削除
実際には削除せずにtombstoneというフラグを立てる
一定期間後にGCで消される
この章でCassandraの内部の仕組みを理解しましたとさ
まだまだ続くよ
関連記事:
- Cassandra: The Definitive Guideの8章と9章を読んだ
- Cassandra: The Definitive Guideの1章と2章を読んだ
- Dockerを使ってCassandraの学習環境を構築する