Bigtable

Bigtable（ビッグテーブル）とは、Googleの大規模なサーバ上の大量のデータを管理するために設計された、データ圧縮機能を持つ高性能なNoSQL型のプロプライエタリのデータストレージシステムである。Google File System、分散ロックマネージャの1種であるChubby Lock Service、SSTable（に似たログ構造化ストレージ）、その他のいくつかのGoogleの技術を活用して構築されている。2015年5月6日、パブリックバージョンのBigtableが、Google Cloud Platformのサービスの1つとして公開された。BigtableはGoogle Cloud Datastoreのバックエンドとしても利用されている。

歴史 
2004年から開発が始まり、2006年には設計が論文として公開された。

MapReduce（BigTableに格納されたデータの生成や修正にしばしば使われている）、Google Reader、Google マップ、Google Print、My Search History、Google Earth、Blogger、Google Code hosting、Orkut 、YouTubeのようないくつものアプリケーションを支えている。

Googleが自社でデータベースを開発した理由はコスト、スケーラビリティ、パフォーマンス特性のより良いコントロールなどであるとされる。

GoogleのSpanner RDBMSは、各テーブルの2相コミットごとにPaxosグループを持つBigtableの実装上にレイヤーを作っている。は、Spannerを用いてMySQLに依存する実装を置き換えるために作られた。

技術 

BigTableは高速で超大規模な列指向DBMSである。行ではなく、列からの高速な読み込みに焦点を当てている。BigTableは数百から数千台のサーバのペタバイトまでのデータを扱い、システムにサーバを簡単に増設して、再設定なしにそれらのリソースを自動的に利用し始めるように設計されている 。

各テーブルは多次元である。1つ1つのフィールドはその時点のスナップショットを持ち、バージョニングを行う事が出来る。テーブルはGFSに最適化されており、大きなテーブルは複数のTablet segment（タブレットセグメント）に自動的に分割される。分割はタブレットが200メガバイトのサイズになるように行の境界で行われる。サイズが特定の限界を超える兆候が見られた場合、テーブルはBMDiffとZippyアルゴリズムを使用して圧縮される。これらはLZWより圧縮率で劣るが、計算量で勝っている。

タブレットのGFS内の位置（サーバのIPとPort）は、「META1」タブレットと呼ばれる複数の特別なタブレットにデータベースエントリとして記録されている。META1タブレットは1つだけある「META0」タブレットを照会する事で作成される。「META0」タブレットは通常は１つのマシンを占有している。「META1」タブレットの位置に関してクライアントから頻繁に問い合わせを受けるからである。「META1」タブレットはそれ自体が、実際のデータの位置についての答えを持っている。GFSマスターサーバのように、META0は通常はボトルネックにはならない。META1の位置を発見・送信する為に必要なプロセッサ時間と帯域はごく僅かである。クライアントは積極的に位置をキャッシュして、照会を必要最低限にするからである。

他の実装 
Hadoopプロジェクトは、BigTableの現在の実装を目指して改良を加えられている。HBaseと呼ばれている。
"Just as Bigtable leverages the distributed data storage provided by the Google File System, Hbase will provide Bigtable-like capabilities on top of Hadoop."

 Hypertable

関連事項 
 Google App Engine
 MapReduce
 Spanner (データベース)
 列指向データベース管理システム
 エラー忘却型コンピューティング

参考文献

外部リンク 
 丸山先生レクチャーシリーズ第3回リポート：クラウドのデータサービスを掘り下げる（ITmedia）
 講演資料

ひくてふる
データベース
クラウドストレージ