Apache Cassandra (分散NoSQL)(カサンドラ)
Facebook 2008年公開・Apache Foundation 移管の分散NoSQL データベース。Wide Column・無限水平スケール・マルチデータセンタで巨大スケール採用。
概要
Apache Cassandra はAvinash Lakshman / Prashant Malik (Facebook) が2008年に公開・社内Inbox Search 用に開発開始、後にApache Software Foundation へ移管・Apache 2.0 ライセンスで運営されている分散NoSQL データベース。Amazon Dynamo (2007論文・分散性) と Google BigTable (2006論文・列指向) のハイブリッド設計、Wide Column ストア・無限水平スケール・マルチデータセンタ複製・Always-On (No Single Point of Failure) で巨大スケール採用。
主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 2008-07 | Facebook 公開 |
| 2009-03 | Apache Software Foundation 採用 |
| 2010-02 | Apache Top-Level Project |
| 2012 | Netflix 大規模採用 |
| 2014 | DataStax 商用版・Enterprise |
| 2015-04 | Cassandra 2.1 (Lightweight Transactions) |
| 2017-01 | Cassandra 3.x (Materialized Views) |
| 2021-07 | Cassandra 4.0 |
| 2024-09 | Cassandra 5.0 (Vector Search / Storage Attached Index) |
Cassandra 主要特徴
| 特徴 | 説明 |
|---|---|
| データモデル | Wide Column (Column Family) |
| アーキテクチャ | Peer-to-Peer (No Single Master) |
| 一貫性 | Tunable (Strong / Eventual 選択可) |
| 複製 | Configurable Replication Factor |
| ノード追加 | 線形スケール |
| Master | なし (P2P) |
| 障害耐性 | No Single Point of Failure |
| マルチDC | 標準 |
| CQL | Cassandra Query Language (SQL風) |
| 通信 | Gossip Protocol |
CAP 定理での位置
CAP 定理 (Consistency / Availability / Partition Tolerance):
| DB | CAP分類 |
|---|---|
| Cassandra | AP (Availability + Partition Tolerance) |
| MongoDB | CP (Consistency + Partition Tolerance) |
| Redis | CP |
| DynamoDB | AP |
| PostgreSQL | CP |
Cassandra は「Always-On」を最優先・データ整合性は「Eventually Consistent」を許容、ネットワーク分断時もサービス継続。
CQL (Cassandra Query Language)
SQL 風の独自クエリ言語:
-- Keyspace (Database 相当) 作成
CREATE KEYSPACE my_app
WITH REPLICATION = {
'class': 'NetworkTopologyStrategy',
'dc1': 3,
'dc2': 3
};
-- Table 作成
CREATE TABLE my_app.users (
user_id UUID,
email TEXT,
created_at TIMESTAMP,
PRIMARY KEY (user_id)
);
-- Insert / Select
INSERT INTO my_app.users (user_id, email, created_at)
VALUES (uuid(), '[email protected]', toTimestamp(now()));
SELECT * FROM my_app.users WHERE user_id = abc...;
JOIN なし・正規化少なめが特徴。
主要採用先
| 企業 | 用途 | 規模 |
|---|---|---|
| Netflix | ストリーミング履歴 | 数百TB |
| Apple | iCloud 一部 | 数百ノード |
| フィード | 数十TB | |
| eBay | 検索 / 在庫 | 数十ノード |
| Walmart | 注文管理 | 数百ノード |
| Discord | メッセージ (~2017まで・後ScyllaDB) | 数十TB |
| Cloudflare | DNS Analytics | - |
| Comcast | TV 推薦 | - |
Cassandra 5.0 (2024) 主要追加
| 機能 | 内容 |
|---|---|
| Vector Search | AI ベクトル類似検索 |
| Storage Attached Index (SAI) | 全列インデックス対応 |
| Trie Memtable | メモリ効率向上 |
| Cassandra Sidecar | 管理ツール |
主要競合・派生
| DB | 関係 |
|---|---|
| Apache HBase | Google BigTable 系・分散 |
| ScyllaDB | Cassandra C++ 互換実装・10倍高速 |
| DataStax Astra | DataStax の Cassandra マネージドクラウド |
| Apache Cassandra (Apache) | 本家オープンソース |
ScyllaDB (派生)
2014年ScyllaDB Inc. が Cassandra と100% wire-compatible なC++ 実装公開:
- 10倍以上の性能 (Reactor Pattern)
- Discord が2017年に Cassandra から ScyllaDB へ移行 (有名事例)
- 同じCQL クライアントで利用可
関連用語との違い
- vs MongoDB: Wide Column / Document
- vs Redis: 永続的分散 / In-Memory
- vs DynamoDB: OSS / AWS マネージド
- vs HBase: Cassandra (Peer-to-Peer) / HBase (Master-Slave)
FAQ
Q1: 個人で使う? A: 通常不要。Web アプリ・ホビーは PostgreSQL / MongoDB で十分。Cassandra は数十-数百ノードのスケールが必要な企業向け。
Q2: 学習価値? A: 高い。分散システム理論 (CAP / Gossip / Vector Clock / Consistent Hashing) の実用例として学習価値大。NoSQL 設計パターン理解に有効。
Q3: ScyllaDB へ乗換? A: 高性能要求・C++ メモリ効率重視ならScyllaDB。OSS コミュニティ・標準性ならCassandra。両方Wire互換でクライアント側変更最小。