データベース基本概念

ワイドカラム型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
バージョン同一セルの複数タイムスタンプ版を保持可能複数の過去値を保持
ワイドカラム型DBの構造(HBase/Cassandra) Row Key sensor_001 sensor_002 sensor_003 sensor_004 カラムファミリー: metrics temp humidity pressure 23.5 65.2 1013.2 22.8 (なし) (なし) 24.1 70.0 (なし) (なし) (なし) 1011.0 カラムファミリー: metadata location model owner 東京・屋上 XR-200 総務部 大阪・倉庫 (なし) (なし) 各行で持つカラムが異なる(スパース構造)→ NULLを格納せず実際の値のみ保存

歴史と背景

  • 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・決済ログ
HBaseHadoop/HDFS連携・強一貫性大規模バッチ処理・Hadoop基盤
Google BigtableGoogleフルマネージド・Spanner連携広告・分析・Google内部基盤
ScyllaDBCassandra互換・C++実装で超高速低レイテンシが必要な大規模環境

関連する規格・RFC

規格・RFC番号内容
Google Bigtable論文 (2006)ワイドカラム型DBの設計原則
CQL (Cassandra Query Language)Cassandraの操作言語。SQLライクな構文
Apache ThriftCassandraのRPC通信プロトコル(現在はCQLが主流)

関連用語