ワイドカラム型DB わいどからむがたでーたべーす
CassandraHBaseBigtableカラムファミリーNoSQL大規模書き込み
ワイドカラム型DBについて教えて
簡単に言うとこんな感じ!
ワイドカラム型DBは「行ごとに持てる列数が違うExcel」みたいなDBだよ!RDBは全行が同じ列を持つけど、こっちは行ごとに何百万列でも持てる。IoTのセンサーログやSNSのタイムラインみたいに「行数も列数も超膨大」なデータを、世界中に分散して爆速で書き込めるのが強みなんだ!
ワイドカラム型DBとは
**ワイドカラム型DB(Wide Column Store)とは、行(Row)とカラム(Column)でデータを管理しますが、行ごとに異なる数・種類のカラムを持てるNoSQLデータベースです。カラムはカラムファミリー(Column Family)**という名前空間でグループ化されます。
RDBとの最大の違いは「スパース(疎)なデータに強い」点です。たとえば100万種類のセンサーがそれぞれ異なる計測項目を持つ場合、RDBではほとんどNULLだらけの巨大テーブルが生まれますが、ワイドカラム型DBでは各行は実際に値を持つカラムだけを格納するため無駄がありません。
ワイドカラム型DBは書き込みスループットと水平スケールに極めて優れ、Googleが世界中のデータセンターに分散して使うBigtable、Facebookが開発したCassandraが代表例です。一方、複数行をまたぐJOINや複雑な集計には弱く、シンプルなキーによるアクセスパターンが前提です。
ワイドカラム型DBの構造
| 概念 | 説明 | 例 |
|---|---|---|
| テーブル | データの入れ物 | sensor_data |
| Row Key | 行を一意に識別するキー | sensor_001 |
| カラムファミリー | カラムのグループ | metrics / metadata |
| カラム修飾子 | カラムファミリー内の個別カラム | temp / humidity / pressure |
| セル | (Row Key, CF, 修飾子, タイムスタンプ)の値 | 23.5 |
| バージョン | 同一セルの複数タイムスタンプ版を保持可能 | 複数の過去値を保持 |
歴史と背景
- 2006年:GoogleがBigtable論文を発表。ワイドカラム型DBの原型となる設計思想を公開
- 2007年:ApacheのHBaseがBigtableインスパイアのオープンソースとして開発開始
- 2008年:FacebookがCassandraをオープンソース化。Bigtable+Amazon Dynamoのハイブリッド設計
- 2010年:Apache Cassandraとなり急速に普及。NetflixやAppleが採用
- 2012年:Google Cloud Bigtable(マネージドサービス)がCloud BigTableとして提供開始
- 2020年代:Apache Cassandraは3.x→4.x→5.xと進化。Astra DB(DataStax)などマネージドも増加
主な製品比較
| 製品 | 特徴 | 主な用途 |
|---|---|---|
| Apache Cassandra | 分散・可用性最優先・書き込み超高速 | SNS・IoT・決済ログ |
| HBase | Hadoop/HDFS連携・強一貫性 | 大規模バッチ処理・Hadoop基盤 |
| Google Bigtable | Googleフルマネージド・Spanner連携 | 広告・分析・Google内部基盤 |
| ScyllaDB | Cassandra互換・C++実装で超高速 | 低レイテンシが必要な大規模環境 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| Google Bigtable論文 (2006) | ワイドカラム型DBの設計原則 |
| CQL (Cassandra Query Language) | Cassandraの操作言語。SQLライクな構文 |
| Apache Thrift | CassandraのRPC通信プロトコル(現在はCQLが主流) |