BigTableの論文読み

簡単なメモです。

BigTable
大量のデータを扱うためのstorage system。

・フリーのものを使うのでなければコストが高い。
・行ごとのアクセスすることによって高速にアクセス
・スケールアウトしやすい

Data model
Row keyは任意のstring

  • 例ではURLの逆を使っている<-こうすることで同じようなURLが近くなっている
  • Row key でsortされている

Column Keyはfamily:qualifier

  • Familyでカテゴリ分け

何で複数のcolumnを束ねているのか

  • >全部を一緒にしてしまうと大きくなりすぎてキャッシュが効かなくなる。ある程度分割することでローカリティーをあげてキャッシュが効くようにするため

Timestampは書き込んだ時間

  • 時間をkeyとして過去のデータを保存する
  • こうすることで過去のデータにもアクセスしやすくする。


分散処理
・Table:巨大なTableを分割したものを(1つは100〜200MB)
・Master:tablettablet serverに割り当てる。
Tablet server:tabletを管理するサーバー。GFSによってファイルを管理している。
・chubby:tablet serverの負荷分散をしている。

Tablet server
Tabletの情報はGFSで管理しているのであるtablet serverが故障してもmasterが割り当てを変えることで復元できる。

・SStable:読み込み線尿の検索テーブルindexとdataからなる。

APIはローレベルのもの
やりかたはfigure2, figure3

Bigtableの工夫点
・Column familyをグループ分けして、そのグループごとにSStableを分割できるようにしてた

・Block cache
Tablet ServerがSStableを読み込む時には、まとまった量を読み込んでtablet serverにキャッシュする
・Scan cache
何度も読み込むやつはオンメモリに入れておく

性能評価
Tablet serverの数にあわせてclientを増加させながら1000byteのデータを読み書き

・Sequential readsはBlock Cacheのおかげでrandom readsより高速

・Table serverの増加とともに速度は上がるが、台数が増えるほど負荷の偏りが増えるのでその伸びは落ちる

応用例
Google Analytics
Google Earth


クローンがあるので試したかったらできる。
詳しくはBigTable クローンで検索すればできる。