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年から開発が始まり"First an overview. BigTable has been in development since early 2004 and has been in active use for about eight months (about February 2005)." Google's BigTable、2006年には設計が論文として公開された。

MapReduce（Bigtableに格納されたデータの生成や修正にしばしば使われている）"Bigtable can be used with MapReduce, a framework for running large-scale parallel computations developed at Google. We have written a set of wrappers that allow a Bigtable to be used both as an input source and as an output target for MapReduce job". pg 3 of "Bigtable: A Distributed Storage System for Structured Data", 2006、Google Reader"Reader is using Google's BigTable in order to create a haven for what is likely to be a massive trove of items." Official Google Reader blog.、Google マップ"There are currently around 100 cells for services such as Print, Search History, Maps, and Orkut." Google's BigTable、Google Print、My Search History、Google Earth、Blogger、Google Code hosting、Orkut 、YouTube"Their new solution for thumbnails is to use Google’s BigTable, which provides high performance for a large number of rows, fault tolerance, caching, etc. This is a nice (and rare?) example of actual synergy in an acquisition." YouTube Scalability Talkのようないくつものアプリケーションを支えている。

Googleが自社でデータベースを開発した理由はコスト、スケーラビリティ、パフォーマンス特性のより良いコントロールなどであるとされる"We have described Bigtable, a distributed system for storing structured data at Google....Our users like the performance and high availability provided by the Bigtable implementation, and that they can scale the capacity of their clusters by simply adding more machines to the system as their resource demands change over time...Finally, we have found that there are significant advantages to building our own storage solution at Google. We have gotten a substantial amount of flexibility from designing our own data model for Bigtable." from the Conclusion of "Bigtable: A Distributed Storage System for Structured Data", 2006。

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

 技術 

Bigtableは高速で超大規模な列指向DBMSである。行ではなく、列からの高速な読み込みに焦点を当てている。Bigtableは数百から数千台のサーバのペタバイトまでのデータを扱い、システムにサーバを簡単に増設して、再設定なしにそれらのリソースを自動的に利用し始めるように設計されている*"Database War Stories #7: Google File System and 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）
 講演資料

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