HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Bigtableのモデル

Bigtableにおけるテーブルは、“行キー”と“カラムファミリー”というものを持ち、この“行キー”と“カラムファミリー”を指定してやると“列”の集合が得られる。
複数の“列”のうちの一つを指定すると、“タイムスタンプ”の集合が得られる。
最後に“タイムスタンプ”のうちの一つを指定すると、“構造データ”が得られる。

SQLDDLで書くと、以下のようなテーブルを定義することになるだろう。

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つの列を持つ表のような形で管理しているようだが…

見方を変えると、ある「<行キー>:<カラムファミリー>:<列>」に対する複数バージョンの“構造データ”を管理することができると見ることもできる。