1. ホーム
  2. database

[解決済み] Googleが使用しているデータベースは何ですか?

2022-03-24 17:06:29

質問

オラクルやMySQLなど、自分たちで構築したものなのでしょうか?

解決方法は?

ビッグテーブル

構造化データのための分散ストレージシステム

Bigtableは分散型ストレージです。 構造化データを管理するためのシステム(Googleが構築)。 に拡張できるように設計されています。 ペタバイト級の大容量データを 数千台のコモディティサーバー

Googleの多くのプロジェクトは、データを Bigtableは、Webインデックスを含む。 Google Earth、Google Financeなどです。 これらのアプリケーションは非常に Bigtableに要求されるものは、以下のように異なります。 データサイズ(URLからWebまで)の点で ページ、衛星画像)、そして レイテンシー要件(バックエンドから 一括処理からリアルタイムデータ を提供します。)

このように様々な Bigtableは、このような要求に対し、成功裏に 柔軟で高性能な これらすべてのGoogleのソリューションに 製品です。

一部の機能

  • 高速かつ超大規模なDBMS
  • は、疎な分散型多次元ソートマップであり、行指向と列指向の両方の特徴を持つデータベースです。
  • ペタバイト級に拡張できるよう設計されている
  • 数百台、数千台のマシンにまたがって動作する
  • マシンを追加すれば、再設定することなく自動的にリソースの利用を開始することができます。
  • 各テーブルは複数のディメンションを持つ(そのうちの1つは時間のフィールドで、バージョン管理を可能にする)。
  • テーブルを複数のタブレットに分割し、GFS (Google File System) に最適化。

アーキテクチャ

BigTableはリレーショナル・データベースではありません。結合をサポートしないし、SQLのようなリッチなクエリもサポートしない。各テーブルは多次元スパースマップである。テーブルは行と列で構成され、各セルはタイムスタンプを持つ。一つのセルに対して、異なるタイムスタンプを持つ複数のバージョンが存在することがある。タイムスタンプは、「このWebページの'n'バージョンを選択する」「特定の日時より古いセルを削除する」といった操作を可能にする。

巨大な表を管理するために、Bigtableは表を行の境界で分割し、タブレットとして保存しています。タブレットは200MB程度で、1台あたり100個程度のタブレットを保存しています。この設定により、1つのテーブルのタブレットを多くのサーバに分散して保存することができます。また、きめ細かな負荷分散も可能である。あるテーブルが多くのクエリーを受けた場合、他のタブレットを流したり、忙しいテーブルをそれほど忙しくない別のマシンに移動させたりすることができます。また、あるマシンがダウンした場合、タブレットを他の多くのサーバーに分散させ、任意のマシンに対するパフォーマンスの影響を最小限に抑えることができます。

テーブルは、不変のSSTablesとログの末尾(マシンごとに1つのログ)として保存されます。マシンのシステムメモリが不足すると、Google独自の圧縮技術(BMDiffとZippy)を使っていくつかのテーブルを圧縮する。小圧縮はいくつかのテーブルを含むだけであるが、大圧縮はテーブルシステム全体を含み、ハードディスクのスペースを回復する。

Bigtableのタブレットの位置はセルに格納されている。特定のタブレットの検索は、3層構造で処理される。クライアントは1つしかないMETA0テーブルへのポイントを取得します。META0テーブルは、検索対象のタブレットの位置を含む多数のMETA1テーブルを記録している。META0 と META1 の両方がプリフェッチとキャッシュを多用し、システムのボトルネックを最小限に抑えています。

実装方法

BigTableは Googleファイルシステム (GFS)は、ログファイルやデータファイルのバッキングストアとして使用されます。GFSは、テーブル・データを永続化するために使用されるGoogle独自のファイル形式であるSSTablesのための信頼性の高いストレージを提供します。

BigTableが重宝しているもう一つのサービスが 太った 高可用性、高信頼性の分散型ロックサービスです。Chubby は、クライアントがロックを取得し、場合によってはメタデータと関連付け、Chubby に keep alive メッセージを返すことでロックを更新することができる。ロックは、ファイルシステムのような階層的な名前構造で保存されます。

3つの主要な サーバータイプ Bigtableのシステムで注目される

  1. マスターサーバー:タブレットをタブレットサーバーに割り当て、タブレットの所在を把握し、必要に応じてタスクを再分配します。
  2. タブレットサーバー:タブレットの読み取り/書き込み要求を処理し、サイズ制限(通常100MB~200MB)を超えたタブレットを分割します。タブレットサーバーが故障した場合、100台のタブレットサーバーがそれぞれ新しいタブレットを1台ずつピックアップし、システムは回復します。
  3. ロックサーバ:分散ロックサービスChubbyのインスタンス。BigTableでは、書き込みのためにタブレットを開く、同時に複数のアクティブなマスターが存在しないようにする、アクセス制御をチェックするなど、多くの動作でロックの取得が必要です。

Googleの研究論文からの例。

テーブルのスライスの例 はウェブページを保存します。行の名前は 逆方向のURL . コンテンツ列 ファミリーには ページコンテンツ であり、かつ アンカーカラムのファミリーには アンカーテキスト を参照している ページになります。CNNのホームページを参照しているのは スポーツ・イラストレイテッド誌と MY-lookのトップページのため、この行は という名前の列が含まれています。 anchor:cnnsi.com そして anchor:my.look.ca . 各アンカーセル には 1バージョン コンテンツ欄 があります。 3つのバージョン タイムスタンプで t3 , t5 および t6 .

API

BigTableの代表的な操作は、テーブルやカラムファミリーの作成と削除、データの書き込み、行からのカラムの削除です。BigTableはこの機能をアプリケーション開発者にAPIとして提供しています。トランザクションは行単位でサポートされますが、複数の行キーにまたがるトランザクションはサポートされません。


以下は 論文PDFへのリンク .

そして、ここには GoogleのJeff Deanがワシントン大学で講演しているビデオです。 Googleのバックエンドで使用されているBigtableコンテンツ・ストレージ・システムについて説明しています。