アーキテクチャの概要

アーキテクチャの概要

Cassandraの機能のうち、レプリケーション・データをどのノードに配置するのかを決定する方法、Gossipアルゴリズムによる情報の取得方法、データの読み書き方法について紹介します。

レプリケーション・データの配置方法

最初のレプリカは、キーを基に計算されたレンジ(範囲)ごとに、それぞれのレンジを担当するノードに配置されます。残りのレプリカは、指定されたレプリケーション方法に従って分散されます。

Cassandraでは、ネットワーク構成や要件に合わせて柔軟に対応できるように、RackUnaware、RackAware、DatacenterShardの3つのレプリケーション方法を用意しています。

RackUnaware
もっとも単純なレプリケーション方法です。名前の通り、データ・センターやラックの位置といった場所を一切意識することなく、近隣のノードに配置します。

図2: RackUnaware

RackAware
Cassandraクラスタが複数のデータ・センターにまたがって収容されている場合に使用されます。
この方法では、2番目のレプリカを、最初のノードとは異なるデータ・センターに配置します。続く3番目以降のレプリカは、同一データ・センター内の異なるラックに配置します(図3)。
ラックやデータ・センターの判別としては、図4に示した3種類の方法が用意されています。

図3: RackAware

図4: ラック/データ・センターの判別方法

DatacenterShard
基本的にはRackAwareと同じ方法ですが、RackAwareよりも均等にデータを配置します(図5)。ラック/データ・センターの判別方法も、RackAwareと同じです。

図5: DatacenterShard

Gossipアルゴリズムによる情報の取得

Gossipアルゴリズムは、ノード間の情報を、近隣のノードから徐々に伝播させていきます。これにより、クラスタ内のすべてのノードが個々のノードの状態を把握できるようにします。

Cassandraでは、このアルゴリズムを用いて結果整合性を確保しています。世代とバージョンを基にデータの鮮度を判断し、自ノードに保存しているデータよりも新しいデータがどこに存在しているかを、近隣のノードを経由して徐々に伝播させて確認、取得します。

図6: Gossipアルゴリズムによる情報の取得

このアルゴリズムを用いると、情報が徐々に伝播していくため、ノードが増えた場合でもトラフィック量が大幅に増えることはありません。しかし、全ノードに情報が反映されるまでに時間がかかる場合があります。

データの読み書き

クライアントから入力されたデータは、メモリー上のMemtable、ディスク上のCommitLog、SSTableに保存されます。

データの書き込み

書き込みプロセスですが、最初にCommitLogに書き込み、その後にメモリー上のMemtableに保存され、Memtableが一杯になったら、非同期でSSTableへの書き込み(Flushing)を行う、というプロセスになっています。

図7: データの書き込み処理

Flushingは自動で行われますが、バックアップ・データの取得時などに手動で実行することもできます。

データの読み込み

データを保持しているノードからのデータの読み込みは、Memtable、SStableの両方から行われます。

図8: データの読み込み処理

読み込みは、MemtableとSSTableの両方から必要なデータを探すことから、若干速度が遅くなります。この対策として、BloomFilterやキャッシュを使って読み込み速度を向上させる仕組みを用意しています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30