【かさんどら】

Cassandra(カサンドラ) とは?

公開:
💡 書き込みの嵐もへっちゃら!リング型に並んで全員がリーダー
📌 このページのポイント
Cassandra リングトポロジー Node A Node B Node C Node D Node E Node F 0-59 60-119 120-179 180-239 240-299 300-359 マスターレス設計 全ノードが対等 → 単一障害点なし コンシステントハッシュ データをリング上に均等分散 レプリカ自動配置 隣接ノードにコピーを保持 高速書き込み Memtable + CommitLogで即応答 データ分散
Cassandra のリングトポロジーとデータ分散
ひよこ ひよこ
Cassandraってなんで書き込みが速いの?
ペンギン先生 ペンギン先生
Cassandraはデータを書き込むとき、まずメモリ上のMemtableに書いてからログに記録するだけだから、ディスクへのランダム書き込みが発生しないんだ。だから圧倒的に速いよ
ひよこ ひよこ
リング型トポロジーって何?普通のデータベースと何が違うの?
ペンギン先生 ペンギン先生
普通のDBはマスターとスレーブという主従関係があるけど、Cassandraは全ノードが対等にリング状に並んでいるんだ。どのノードに書いても読んでもOKだから、1台壊れてもサービスが止まらないよ
ひよこ ひよこ
でもリーダーがいないと、データの整合性はどうやって保つの?
ペンギン先生 ペンギン先生
いい質問!Cassandraは「整合性レベル」を指定できるんだ。たとえばQUORUMなら過半数のノードが応答すればOK、ONEなら1ノードでOK。速度と整合性のトレードオフを自分で決められるよ
ひよこ ひよこ
SQLは使えるの?
ペンギン先生 ペンギン先生
CQLというCassandra独自のクエリ言語を使うよ。SQLに似ているけど、JOINが使えないなど制約があるんだ。その代わりパーティションキーを使った検索がものすごく速い設計になっているよ
ひよこ ひよこ
どんなサービスで使われてるの?
ペンギン先生 ペンギン先生
Netflixが数千ノード規模で使っていることで有名だね。他にもInstagramのDM機能やAppleのSiriのバックエンドにも使われているよ。とにかく大量のデータを書き込み続けるサービスとの相性が抜群なんだ
ひよこ ひよこ
MongoDBとどっちがいいの?
ペンギン先生 ペンギン先生
用途次第だね。MongoDBドキュメント指向で柔軟なクエリが得意、Cassandraは書き込みヘビーなワークロードが得意。IoTや時系列ならCassandra、複雑なクエリが必要ならMongoDBを選ぶのが定石だよ
ひよこ ひよこ
運用は大変じゃないの?
ペンギン先生 ペンギン先生
正直、ノード管理やデータのリバランスなど運用は簡単ではないよ。でもマネージドサービスAmazon KeyspacesやDataStax Astraを使えば運用負担をかなり減らせるから、最近はそちらを選ぶチームも多いね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Cassandra」って出てきたら「書き込みが超速い分散データベース」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Cassandra」 = アパッチ カサンドラ
💬 ギリシャ神話の予言者カサンドラが名前の由来だよ。未来を見通す力(=分散データの管理能力)になぞらえているんだ
← 用語集にもどる