スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

Bigtable論文を読んだメモ

Bigtable: A Distributed Storage System for Structured Data

をざっと読んだ感想:

  • Bigtableは単なるソートされたkey-valueペアだ
    • Multidimensionalという言葉に惑わされない方がよい
        • レコードをイミュータブルにして履歴を残し、たまにGCするのはpgsqlやInterBaseなどのバージョニング系DBと同じ
    • row keyとcolumn keyを組み合わせて1つのキーをつくり、2次元の表のように使っているが、実態は単なる超巨大なkey-valueペア
    • column familyとかlocality groupも、とりあえず忘れてOK
      • アクセス権チェックとか、でかいBlobだけ遅延読み込みするとか、そういうやつだ
  • Bigtableはこれしかできない
    • keyを指定して特定行をatomicにCRUDする
      • 分散txは社内でもモメたけど結局付けなかったよ
    • keyの前方一致検索で複数行を一括取得する(scan)
      • ソートしてあるからこれは速い(single disk seek)
    • valueに基づく検索は一切不可!
      • こんな棒人間みたいな仕様でもAnalyticsとかEarthとかOrkutとか60以上のプロジェクトをこなせたよ!
  • GAEではBigtableをどう使っているか
    • value内容(ex 名前)を検索条件に指定すると、「テーブル名+名前」をkeyとする新しいindex表を自動的に作る。このkeyの範囲指定で該当行を引っ張ってくる
    • だからクエリの種類が増えたり複雑なクエリに頼りすぎるとindexが爆発する