【かさんどら】

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」 = アパッチ カサンドラ
💬 ギリシャ神話の予言者カサンドラが名前の由来だよ。未来を見通す力(=分散データの管理能力)になぞらえているんだ
← 用語集にもどる