Bigtableのモデル
Bigtableにおけるテーブルは、“行キー”と“カラムファミリー”というものを持ち、この“行キー”と“カラムファミリー”を指定してやると“列”の集合が得られる。
複数の“列”のうちの一つを指定すると、“タイムスタンプ”の集合が得られる。
最後に“タイムスタンプ”のうちの一つを指定すると、“構造データ”が得られる。
SQLのDDLで書くと、以下のようなテーブルを定義することになるだろう。
CREATE TABLE BIG_TABLE_SAMPLE ( ROW_KEY VARCHAR(64) NOT NULL, COL_FAMILY VARCHAR(64) NOT NULL, COL VARCHAR(64) NOT NULL, TS TIMESTAMP NOT NULL, SDATA BLOB NOT NULL, PRIMARY KEY(ROW_KEY, COL_FAMILY, COL, TS) )
実際のBigtableでは、
- <行キー>:<カラムファミリー>:<列>:<タイムスタンプ>
- 構造データ
という2つの列を持つ表のような形で管理しているようだが…
見方を変えると、ある「<行キー>:<カラムファミリー>:<列>」に対する複数バージョンの“構造データ”を管理することができると見ることもできる。