Apache Cassandra (2008年)(アパッチカサンドラ)
Apache Cassandra は2008年Facebook (Avinash Lakshman・Prashant Malik) が Amazon Dynamo (2007年) 論文の影響で開発した分散NoSQL DB で2009年Apache Software Foundation 寄贈・線形スケーラビリティ・データセンタ間レプリケーション・高可用性 (Eventually Consistent) 採用しNetflix/Apple/Instagram/Twitter (X)/Uber 等で大規模採用された分散DB の代表。
Apache Cassandra (2008年)
概要
Apache Cassandra は2008年7月Facebook (Avinash Lakshman・Prashant Malik) が Amazon Dynamo (2007年Werner Vogels・分散ハッシュテーブル論文「Dynamo: Amazon's Highly Available Key-value Store」SOSP 2007) と Google Bigtable (2006年論文・カラムファミリーDB) の影響で開発した分散NoSQL DB で2009年Apache Software Foundation 寄贈 (Facebook→Apache Top-Level Project 2010年) ・線形スケーラビリティ (1000+ ノードまで)・データセンタ間レプリケーション (Multi-datacenter)・高可用性 (Eventually Consistent・CAP 定理のAP 重視) ・CQL (Cassandra Query Language・SQL 風 2010年Cassandra 0.8)・Tunable Consistency (一貫性レベル選択可能 ONE/QUORUM/ALL) 採用しNetflix (2010年-・最大採用先)・Apple (300+ クラスタ・最大ユーザー)・Instagram・Twitter (X) /Uber (Geo Routing)・Discord・Spotify 等で大規模採用された分散DB の代表。Cassandra 5.0 (2024年9月最新) と継続改良・DataStax (商用) ・ScyllaDB (C++ 互換 2014年) 派生。
主な特徴・仕組み
- 発表: 2008年7月Facebook (Avinash Lakshman・Prashant Malik)
- Apache 寄贈: 2009年3月・2010年Apache Top-Level Project
- 言語: Java 実装・後C 拡張
- 対応OS: 全主要Linux・macOS・Windows (限定)
- ライセンス: Apache License 2.0 (オープンソース)
- クエリ言語: CQL (Cassandra Query Language・SQL 風 2010年-)
- データモデル: Wide Column Store (Google Bigtable 影響)・Key-Value+カラムファミリー
- 特徴: 分散・線形スケーラビリティ・高可用性・Multi-DC・Tunable Consistency
- 主要バージョン: 0.6 (2010年4月Apache 初リリース)・1.0 (2011年10月)・2.0 (2013年9月)・3.0 (2015年11月)・4.0 (2021年7月)・5.0 (2024年9月最新)
Amazon Dynamo の影響 (2007年論文)
分散DB 理論基盤:
- 2007年10月SOSP: Amazon CTO Werner Vogels「Dynamo: Amazon's Highly Available Key-value Store」論文公開
- 革新: (1) Consistent Hashing (一貫性ハッシュ・ノード追加削除でデータ再分散最小化)・(2) Vector Clock (バージョン管理)・(3) Sloppy Quorum (柔軟な過半数決定)・(4) Eventually Consistent (CAP 定理のAP 選択)・(5) Hinted Handoff (障害ノード復旧時データ補完)
- 影響: Cassandra (2008年・Dynamo+Bigtable)・Riak (2009年Basho・Dynamo インスパイア)・Voldemort (2009年LinkedIn)
- 意義: 「NoSQL 分散DB の理論基盤」確立・全主要分散NoSQL DB の祖
Google Bigtable の影響 (2006年論文)
カラムファミリーDB 起源:
- 2006年OSDI: Google「Bigtable: A Distributed Storage System for Structured Data」論文公開
- 動作: Wide Column Store・Key-Value+カラムファミリー・Google Search/Maps/Gmail で利用
- 影響: Apache HBase (2008年Powerset・Hadoop ベース)・Apache Cassandra (2008年Facebook・Bigtable+Dynamo)
- 後継: Google Cloud Bigtable (2015年マネージドサービス) ・現代Big Data の主流選択肢
Facebook での起源 (2008年)
Cassandra 開発の背景:
- 2007年Facebook Inbox 検索機能: ユーザー2億超のメッセージDB・MySQL の限界
- 2008年Avinash Lakshman (元Amazon Dynamo チーム)・Prashant Malik: 分散DB として Cassandra 開発
- 2008年7月オープンソース公開: Facebook 内部利用+コミュニティ公開
- 2009年Apache 寄贈: Facebook が Inbox から MyRocks (MySQL+RocksDB) に2010年移行・Cassandra は外部コミュニティに引継ぎ
- 2010年Apache Top-Level Project: Cassandra プロジェクト独立
Netflix での大規模採用 (2010年-)
最大級のCassandra ユーザー:
- 2010年Netflix Cloud 移行: AWS にCassandra 採用 (Oracle/Sybase から移行)
- 規模: 10,000+ ノード・PB 級データ
- 用途: User Profile・Recommendation・Viewing History・全Netflix サービスの核
- 特徴: Multi-DC で全世界配信・障害時自動フェイルオーバー・全ユーザー無中断
- 後継: 2024年現代もNetflix Cassandra 中核・Netflix 自身がCassandra コミュニティに主要貢献
Apple での最大級採用
公表されている最大Cassandra ユーザー:
- Apple Cassandra 規模: 75,000+ ノード・100,000+ インスタンス・10PB+ データ (2017年Apple 公表)
- 用途: iCloud・iMessage・FaceTime・Apple ID・Apple Maps・全Apple サービスの中核
- 意義: 「世界最大規模Cassandra ユーザー」と公認・Apple は Cassandra 主要コミッタ
- 後継: 2024年現代もApple のCassandra 規模拡大継続
Tunable Consistency
Cassandra の柔軟性:
- 動作: 一貫性レベルを読込/書込毎に選択可能
- レベル: ONE (1ノードのみ・高速・低信頼)・QUORUM (過半数・バランス)・ALL (全ノード・低速・最高信頼)
- CAP 定理: Consistency (C)・Availability (A)・Partition Tolerance (P) の3つから2つ選択
- Cassandra: AP 重視 (高可用性+分割耐性・一貫性は Eventually)
- 対比: 従来RDBMS (Oracle/PostgreSQL) はCA (一貫性+可用性・但しPartition で不可)
- 後継: 全現代分散DB で類似Tunable 機能
CQL (Cassandra Query Language・2010年-)
SQL 風クエリ言語:
- 2010年Cassandra 0.8: CQL 初導入・SQL 風構文 (SELECT・INSERT・UPDATE・DELETE)
- CQL3 (2013年Cassandra 1.2): テーブル定義改良・現代主流形式
- 特徴: SQL に類似だが JOIN なし・サブクエリなし・分散DB の制約
- 採用: 全Cassandra ユーザーの標準・古いThrift API は2020年Cassandra 4.0 で廃止
採用システム (2008-2024年)
- 大手企業: Apple (世界最大級)・Netflix (10,000+ ノード)・Instagram (Facebook 傘下)・Twitter (X)・Uber (Geo Routing)・Discord (メッセージング)・Spotify・GitHub (一部)・Reddit
- 金融: JP Morgan・Goldman Sachs (一部分析用途)
- 通信: AT&T・Verizon・各国通信会社
- eBay: 商品検索DB
- Walmart Labs: 在庫管理
- NASA: 一部科学データ管理
- クラウド: DataStax Astra (Apache Cassandra マネージドサービス)・Amazon Keyspaces (Cassandra 互換マネージド)・Azure Cosmos DB (Cassandra API 互換)・Google Cloud Bigtable (類似Wide Column・但しCassandra でない)
関連技術との違い
| 項目 | Oracle (1979) | MongoDB (2009) | Cassandra (2008) | Redis (2009) |
|---|---|---|---|---|
| データモデル | リレーショナル | Document (BSON) | **Wide Column (Bigtable 派生) ** | Key-Value (in-memory) |
| 用途 | エンタープライズ ACID | スタートアップ柔軟スキーマ | **大規模分散 (Netflix・Apple) ** | キャッシング・セッション |
| CAP 定理 | CA (一貫性+可用性) | CP (一貫性+分割耐性) | **AP (可用性+分割耐性) ** | CP (一貫性+分割耐性) |
| 線形スケーラビリティ | 限定 (RAC) | あり (Sharding) | **完全 (1000+ ノード) ** | 限定 (Cluster) |
| クエリ言語 | SQL | MongoDB Query | **CQL (SQL 風) ** | 独自Redis Commands |
| シェア (2024 DB-Engines) | 1位 | 5位 | 11位 | 6位 |
よくある質問 (FAQ)
Q1: なぜCassandra が Netflix/Apple 等の大規模採用に成功したか? A: (1) 線形スケーラビリティ (1000+ ノード対応)・(2) Multi-DC で全世界配信・(3) AP 重視で「障害時も動く」高可用性・(4) Eventually Consistent で読込性能最大化・(5) Tunable Consistency で用途別最適化・(6) Apache オープンソース (ベンダーロックインなし)・(7) Apple/Netflix の主要コミッタで開発継続・全要因で「世界最大規模分散DB」確立。
Q2: Cassandra と DynamoDB はどちらが優れたか? A: 用途次第。Cassandra: オープンソース・オンプレミス可能・Multi-cloud・Apple 等の自社運用・大規模 (10,000+ ノード)。DynamoDB: AWS マネージドサービス・Serverless・運用容易・AWS lock-in・中規模適。新規プロジェクト: AWS 専用なら DynamoDB・Multi-cloud/オンプレミスなら Cassandra/ScyllaDB。
Q3: 現代でCassandra 学ぶ価値は? A: あり。(1) 大規模分散DB の理論基盤理解 (CAP 定理・Consistent Hashing 等)・(2) Netflix・Apple・Instagram・Discord 等の大手で需要・(3) Backend Engineer (大規模システム) の必須知識・(4) ScyllaDB (C++ 互換) ・DataStax Astra・Amazon Keyspaces 等の選択肢拡大・(5) 中堅以上のBackend Engineer は高給職 (世界平均年収$120,000-$180,000)・新卒は一般RDBMS から始め後 Cassandra へ。
まとめ
- 2008年Facebook 開発・後Apache 寄贈
- Amazon Dynamo+Google Bigtable 影響
- 線形スケーラビリティ・Multi-DC レプリケーション
- Eventually Consistent (CAP AP 重視)
- Netflix/Apple/Instagram で大規模採用