最終更新日: 2026 年 7 月 24 日
Apache Cassandra は、複数のサーバーにわたる大量のデータを処理するように設計された、オープンソースの分散型 NoSQL データベースです。分散型アーキテクチャにより単一障害点が排除され、ノードやデータセンターの停止に関係なくオンラインを維持する必要がある高可用性、書き込み重視のワークロードに適しています。
Facebook(現 Meta)のエンジニアである Avinash Lakshman 氏と Prashant Malik 氏が、Facebook の受信トレイ検索を強化するために Cassandra を作成しました。同社は、多数のサーバーにわたる膨大なデータセットを保存し、速度を落とすことなく検索できるシステムを必要としていました。
このデータベースを構築するために、チームは他の 2 つの確立されたデータベース モデルからインスピレーションを得ました。Google の 2006 年の Bigtable 論文のワイドカラム ストレージ モデルと、Amazon の Dynamo の分散リング アーキテクチャを組み合わせたのです。彼らは、神話に登場するトロイアの予言者にちなんでプロジェクトを命名しました。これは、他人が信じない予言をするという「呪い」にちなんだものです。
このプロジェクトは、その可能性がエンジニアリング コミュニティ全体に明らかになるにつれて急速に進化しました。
その歴史から、多くの企業がシステムを強化するために信頼を寄せています。Cassandra は高可用性システム向けの実績ある選択肢ですが、その設計上のトレードオフを評価することで、チームは従来のアーキテクチャを自己管理することが最新のアプリケーションのニーズに適合するかどうかを判断できます。
Cassandra は、スマート(IoT)センサーからの情報、アプリケーションのロギング、モニタリング パイプラインなど、データの安定したストリームを伴う作業によく使用されます。また、イベント トラッキングやレコメンデーション システムでも広く使用されており、大規模なデータを迅速に保存してクエリを実行することが重要です。
ダウンタイムが許されないシステムでは、Cassandra が使用されます。Cassandra のマルチデータセンター レプリケーションと非同期書き込みにより、サービスが中断されることやデータが失われることなく、データセンター全体をオフラインにできるからです。多くのグローバル企業が、さまざまな地域でアプリを 24 時間 365 日稼働させるためにこれを利用しています。
Cassandra は、すべてのノードが同一であるピアツーピア設計を使用します。これらのノードは分散型のリングに設定され、コンシステント ハッシュ法と呼ばれる方法を使用してデータを均等に分散し、ボトルネックを防止して、単一障害点がないようにします。また、読み取りまたは書き込みが成功したかどうかをチェックする際のデータベースの厳密さを選択することもできます。これにより、特定のアプリケーションのニーズに基づいて、速度と最新のデータのどちらを優先するかを決定できます。
このデータベースでは、ワイドカラム ストアと呼ばれるモデルが使用されます。このモデルは、通常のスプレッドシートと同様に、キー空間、行、動的列にデータを整理するのに役立ちますが、より柔軟性があります。これにより、アプリの成長に合わせて簡単に変更できる方法でデータを設計できます。
機能 | Apache Cassandra | 従来の RDBMS |
データモデル | 非正規化 | 正規化 |
スキーマの柔軟性 | 実行中に変更可能 | ダウンタイムが必要 |
インデックス構造 | ログ構造化マージツリー | B ツリー |
書き込みの最適化 | プライマリ | セカンダリ |
CAP のポジショニング(整合性、可用性、パーティション耐性) | AP(可用性と分断耐性) | CA(整合性と可用性) |
クエリ機能 | CQL(JOIN なし) | JOIN を使用した完全な SQL |
データモデル
非正規化
正規化
スキーマの柔軟性
実行中に変更可能
ダウンタイムが必要
インデックス構造
ログ構造化マージツリー
B ツリー
書き込みの最適化
プライマリ
セカンダリ
CAP のポジショニング(整合性、可用性、パーティション耐性)
AP(可用性と分断耐性)
CA(整合性と可用性)
クエリ機能
CQL(JOIN なし)
JOIN を使用した完全な SQL
Cassandra ストレージ エンジンは、ログ構造マージ(LSM)ツリーを使用してデータを処理します。受信した書き込みは、耐久性確保のためにコミットログに書き込まれ、Memtable を介してメモリに保持されます。Memtable がいっぱいになると、不変の Sorted String Table(SSTable)としてディスクにフラッシュされます。
この追記専用の設計により、Cassandra は書き込み中心のスループットに優れています。インプレース アップデートを回避することで、システムはランダムなディスク I/O に依存する従来のシステムよりもはるかに高速に受信データを処理できます。
Cassandra に関するよくある質問とその回答を以下に紹介します。
常にオンライン状態を維持し、ストリーミング ログやセンサーデータなど、大量のデータ書き込みを処理する必要があるアプリに使用される分散データベースです。
Cassandra は NoSQL データベースです。CQL という SQL に似た言語を使用しますが、複雑な結合や高度なトランザクションの安全性など、SQL と同じ機能をすべてサポートしているわけではありません。
Kafka はデータをリアルタイムで移動させるためのもので、Cassandra はそのデータを安全に保存するためのものです。1 つのシステムで一緒に使用されることがよくあります。
Cassandra は、大量のデータの大規模な書き込みに最適です。MongoDB はドキュメント データベースであり、柔軟な構造を持つさまざまな種類のデータを検索する必要がある場合に適しています。
Cassandra はオンライン トランザクション処理(OLTP)向けに作られており、単純な高速読み取りと書き込みの処理に優れています。大規模なレポートの実行や全データの同時スキャンなど、複雑な分析タスク向けには構築されていません。
スケーラビリティ
ノードを追加してより多くの作業を処理できます。そのためにシステムをオフにする必要はありません。
単一障害点なし
すべてのノードが同等であるため、システムは非常に安定しています。
データの自動コピー
システムは自動的にデータを複数の場所に保存します。
高速書き込み
ストレージ設計は、大量の書き込みを一度に処理できるように構築されています。
調整可能な整合性
クエリごとに、データの厳密さを制御できます。完璧な精度を求める場合は「すべて」のノードを選択し、最速な処理を求める場合は「1 つ」のノードを選択します。
ベンダー ロックインなし
標準的なハードウェアで実行されるため、特定のクラウド プロバイダに縛られることはありません。必要に応じて、オンプレミス環境とさまざまなクラウド間でデータを移動できます。
独自の Cassandra システムを運用するには、多くのオーバーヘッドが必要になります。必要な容量の計画、サーバーのセットアップ、修理の処理、バックアップの確保、システム実行中の更新を行う必要があります。
マネージド サービスは、煩雑な作業を代行することで、この状況を変えます。
これらの運用タスクをマネージド プラットフォームに移行することで、チームはデータベースのパイプライン調整を心配する必要がなくなり、ユーザーに価値を提供することに集中できます。
Cassandra ワークロードの実行方法を決定する際には、主に 3 つのパスがあります。
適切な方法を選択するには、チームの専門知識と特定のビジネスニーズのバランスを取る必要があります。以下のチェックリストを意思決定プロセスの参考にしてください。
質問 | 「はい」の場合… | 「いいえ」の場合… |
データベースを修正して調整する時間はありますか? | 「データベースのパイプライン調整」を担当する専任のエンジニアがいれば、セルフマネージド クラスタを処理できます。 | インフラストラクチャのメンテナンスにエンジニアリングの時間を浪費しないように、マネージド サービスを選択します。 |
「オンラインを維持する」ことは、完全な整合性よりも重要ですか? | Cassandra の AP モデルは、高可用性アプリに最適です。 | Cloud Spanner を検討してください。Cloud Spanner は、厳格なデータ安全性を備えた分散システムのスケールを提供します。 |
成長に合わせて迅速にスケールアップする必要がありますか? | トラフィックの急増に対応するために自動スケーリングを提供するマネージド サービスまたは Bigtable を使用します。 | 静的クラスタでも機能するかもしれませんが、繁忙期にパフォーマンスのボトルネックが発生するリスクがあります。 |
マネージド サービスを利用すると、作業の信頼性が高まるでしょうか? | はい。マネージド サービスはバックアップとパッチ適用を自動化して、人為的ミスを防ぎます。 | 手動メンテナンスのリスクが高く、構成ミスが発生する可能性があることを受け入れています。 |
インフラストラクチャのポータビリティを目指しているでしょうか? | セルフマネージドでは、クラウド間の移動やオンプレミスでの実行を最も自由に行うことができます。 | 運用上の労力を軽減することによって、クラウド固有のメリットを享受したいとお望みです。 |
質問
「はい」の場合…
「いいえ」の場合…
データベースを修正して調整する時間はありますか?
「データベースのパイプライン調整」を担当する専任のエンジニアがいれば、セルフマネージド クラスタを処理できます。
インフラストラクチャのメンテナンスにエンジニアリングの時間を浪費しないように、マネージド サービスを選択します。
「オンラインを維持する」ことは、完全な整合性よりも重要ですか?
Cassandra の AP モデルは、高可用性アプリに最適です。
Cloud Spanner を検討してください。Cloud Spanner は、厳格なデータ安全性を備えた分散システムのスケールを提供します。
成長に合わせて迅速にスケールアップする必要がありますか?
トラフィックの急増に対応するために自動スケーリングを提供するマネージド サービスまたは Bigtable を使用します。
静的クラスタでも機能するかもしれませんが、繁忙期にパフォーマンスのボトルネックが発生するリスクがあります。
マネージド サービスを利用すると、作業の信頼性が高まるでしょうか?
はい。マネージド サービスはバックアップとパッチ適用を自動化して、人為的ミスを防ぎます。
手動メンテナンスのリスクが高く、構成ミスが発生する可能性があることを受け入れています。
インフラストラクチャのポータビリティを目指しているでしょうか?
セルフマネージドでは、クラウド間の移動やオンプレミスでの実行を最も自由に行うことができます。
運用上の労力を軽減することによって、クラウド固有のメリットを享受したいとお望みです。
Cassandra の管理作業から解放されたい場合は、Google Cloud の Bigtable と Spanner という 2 つの便利なソリューションをご利用いただけます。
ワイドカラム型ストレージと高書き込みスループットを目的として Cassandra をすでに使用している場合は、Bigtable が最適かもしれません。これを使用するには、既存の Cassandra キースペースとテーブルを Bigtable テーブルにマッピングし、Cloud Bigtable クライアント ライブラリを使用するようにアプリケーション コードを更新します。Bigtable はフルマネージドであるため、以前は Cassandra で手動で調整する必要があったシャーディングとロード バランシングを自動的に処理します。
Cassandra ワークロードが拡大し、より強力な整合性が必要になった場合や、SQL のリレーショナル機能が必要になった場合は、Spanner も良い選択肢となります。これを使用するには、標準 SQL を使用してスキーマを定義します。その際、非正規化された Cassandra データの一部を正規化する必要がある場合があります。Cassandra と同じ水平スケーリングが可能で、強整合性、グローバルな整合性、完全なリレーショナル SQL サポートという利点も加わります。