Bigtable
ワイドカラムのNoSQLデータベースサービス
From Wikipedia, the free encyclopedia
Bigtable(ビッグテーブル)とは、Googleの大規模なサーバ上の大量のデータを管理するために設計された、データ圧縮機能を持つ高性能なNoSQL型のプロプライエタリのデータストレージシステムである。Google File System、分散ロックマネージャの1種であるChubby Lock Service、SSTable(LevelDBに似たログ構造化ストレージ)、その他のいくつかのGoogleの技術を活用して構築されている。2015年5月6日、パブリックバージョンのBigtableが、Google Cloud Platformのサービスの1つとして公開された。BigtableはGoogle Cloud Datastoreのバックエンドとしても利用されている[1][2]。
| 開発元 | Google Inc. |
|---|---|
| 初版 | 2005年2月 |
| プログラミング 言語 | |
| プラットフォーム | Google Cloud Platform |
| 種別 | Cloud Storage |
| ライセンス | プロプライエタリ |
| 公式サイト |
cloud |
歴史
2004年から開発が始まり[3]、2006年には設計が論文として公開された[4]。
MapReduce(Bigtableに格納されたデータの生成や修正にしばしば使われている)[5]、Google Reader[6]、Google マップ[7]、Google Print、My Search History、Google Earth、Blogger、Google Code hosting、Orkut[7] 、YouTube[8]のようないくつものアプリケーションを支えている。
Googleが自社でデータベースを開発した理由はコスト、スケーラビリティ、パフォーマンス特性のより良いコントロールなどであるとされる[9]。
GoogleのSpanner RDBMSは、各テーブルの2相コミットごとにPaxosグループを持つBigtableの実装上にレイヤーを作っている。Google F1は、Spannerを用いてMySQLに依存する実装を置き換えるために作られた[10]。
技術
Bigtableは高速で超大規模な列指向DBMSである。行ではなく、列からの高速な読み込みに焦点を当てている。Bigtableは数百から数千台のサーバのペタバイトまでのデータを扱い、システムにサーバを簡単に増設して、再設定なしにそれらのリソースを自動的に利用し始めるように設計されている[11] 。
各テーブルは多次元である。1つ1つのフィールドはその時点のスナップショットを持ち、バージョニングを行う事が出来る。テーブルはGFSに最適化されており、大きなテーブルは複数のTablet segment(タブレットセグメント)に自動的に分割される。分割はタブレットが200メガバイトのサイズになるように行の境界で行われる。サイズが特定の限界を超える兆候が見られた場合、テーブルはBMDiffとZippyアルゴリズムを使用して圧縮される。これらはLZWより圧縮率で劣るが、計算量で勝っている。
タブレットのGFS内の位置(サーバのIPとPort)は、「META1」タブレットと呼ばれる複数の特別なタブレットにデータベースエントリとして記録されている。META1タブレットは1つだけある「META0」タブレットを照会する事で作成される。「META0」タブレットは通常は1つのマシンを占有している。「META1」タブレットの位置に関してクライアントから頻繁に問い合わせを受けるからである。「META1」タブレットはそれ自体が、実際のデータの位置についての答えを持っている。GFSマスターサーバのように、META0は通常はボトルネックにはならない。META1の位置を発見・送信する為に必要なプロセッサ時間と帯域はごく僅かである。クライアントは積極的に位置をキャッシュして、照会を必要最低限にするからである。