何のデータベースはGoogleを使用しますか?
-
21-08-2019 - |
質問
でOracleはMySQLにはめられており、それらの中には、築いていけますか?
解決
ビッグテーブル
Bigtable は分散ストレージです 構造化データを管理するためのシステム(Googleが構築) これは、非常に 大判:ペタバイト規模のデータ 何千台ものコモディティサーバー。
Google の多くのプロジェクトでは、データを Bigtable(ウェブ インデックス作成を含む) Google Earth、Google Finance。これらのアプリケーションは、非常に Bigtable に対するさまざまな要求。 データサイズの用語(URLからWebまで) ページを衛星画像に更新)と レイテンシー要件(バックエンドから リアルタイムデータへの一括処理 サービング)。
これらのさまざまな要求にもかかわらず、BigTableはこれらのすべてのGoogle製品に柔軟で高性能ソリューションを成功裏に提供しました。
いくつかの機能
- 高速かつ超大規模な DBMS
- 行指向データベースと列指向データベースの両方の特性を共有する、まばらな分散多次元ソート マップ。
- ペタバイトの範囲にスケールできるように設計されています
- 何百、何千台のマシンで動作します
- システムにマシンを追加するのは簡単で、再構成することなく自動的にそれらのリソースの利用を開始します。
- 各テーブルには複数のディメンションがあります (そのうちの 1 つは時間のフィールドであり、バージョン管理が可能です)
- テーブルは複数のタブレットに分割されることで GFS (Google ファイル システム) 用に最適化されます。テーブルのセグメントは、タブレットのサイズが約 200 メガバイトになるように選択された行に沿って分割されます。
建築
BigTable はリレーショナル データベースではありません。結合はサポートされておらず、SQL のようなリッチなクエリもサポートされていません。各テーブルは多次元の疎マップです。テーブルは行と列で構成され、各セルにはタイムスタンプが付いています。異なるタイムスタンプを持つセルの複数のバージョンが存在する可能性があります。タイムスタンプを使用すると、「この Web ページの 'n' バージョンを選択する」または「特定の日付/時刻より古いセルを削除する」などの操作が可能になります。
巨大なテーブルを管理するために、Bigtable は行境界でテーブルを分割し、タブレットとして保存します。タブレットは約 200 MB で、各マシンで約 100 個のタブレットを節約できます。この設定により、単一テーブルのタブレットを多数のサーバーに分散させることができます。また、きめ細かい負荷分散も可能になります。1 つのテーブルが多くのクエリを受信している場合、他のタブレットを除外したり、ビジー状態のテーブルをそれほどビジーではない別のマシンに移動したりすることができます。また、マシンがダウンした場合、タブレットは他の多くのサーバーに分散されるため、特定のマシンへのパフォーマンスへの影響は最小限に抑えられます。
テーブルは、不変の SSTable およびログの末尾 (マシンごとに 1 つのログ) として保存されます。マシンのシステム メモリが不足すると、Google 独自の圧縮技術 (BMDiff および Zippy) を使用して一部のタブレットを圧縮します。小規模な圧縮には数個のタブレットのみが含まれますが、大規模な圧縮にはテーブル システム全体が含まれ、ハードディスク領域が回復されます。
Bigtable タブレットの場所はセルに保存されます。特定のタブレットの検索は 3 層システムによって処理されます。クライアントは META0 テーブルへのポイントを取得しますが、そのテーブルは 1 つだけです。META0 テーブルは、検索対象のタブレットの場所を含む多くの META1 タブレットを追跡します。META0 と META1 は両方とも、システムのボトルネックを最小限に抑えるために、プリフェッチとキャッシュを多用します。
実装
BigTable は上に構築されています Google ファイル システム (GFS)、ログ ファイルとデータ ファイルのバッキング ストアとして使用されます。GFS は、テーブル データを永続化するために使用される Google 独自のファイル形式である SSTable に信頼性の高いストレージを提供します。
BigTable が頻繁に利用するもう 1 つのサービスは次のとおりです。 ぽっちゃり, 、可用性が高く信頼性の高い分散ロック サービスです。Chubby を使用すると、クライアントはロックを取得でき、場合によってはロックを何らかのメタデータに関連付けることができ、キープアライブ メッセージを Chubby に送信することで更新できます。ロックは、ファイルシステムのような階層的な名前付け構造に保存されます。
主要なものは 3 つあります サーバーの種類 Bigtable システムに興味のあるもの:
- マスターサーバー:タブレットをタブレット サーバーに割り当て、タブレットの場所を追跡し、必要に応じてタスクを再分散します。
- タブレットサーバー:タブレットの読み取り/書き込みリクエストを処理し、サイズ制限 (通常は 100MB ~ 200MB) を超えた場合にタブレットを分割します。タブレット サーバーに障害が発生した場合、100 台のタブレット サーバーがそれぞれ 1 台の新しいタブレットをピックアップし、システムが回復します。
- ロックサーバー:Chubby 分散ロック サービスのインスタンス。BigTable 内の多くのアクションでは、書き込みのためにタブレットを開くこと、一度に複数のアクティブなマスターが存在しないことの確認、アクセス制御のチェックなど、ロックの取得が必要です。
Google の研究論文からの例:
サンプルテーブルのスライスは、 Web ページを格納します。行名は 逆引きURL. 。コンテンツ列 family には、 ページ内容, そして アンカー列ファミリーには、 アンカーのテキスト これは、 ページ。CNNのホームページは、 スポーツイラストレイテッドと MY-lookホームページなので、行 という名前の列が含まれています。
anchor:cnnsi.com
そしてanchor:my.look.ca
. 。各アンカーセル は 1つのバージョン;[コンテンツ] 列 は 3つのバージョン, 、タイムスタンプ時t3
,t5
, 、 そしてt6
.
API
BigTable に対する一般的な操作は、テーブルと列ファミリーの作成と削除、データの書き込み、行からの列の削除です。BigTable は、この機能を API でアプリケーション開発者に提供します。トランザクションは行レベルでサポートされますが、複数の行キーにわたってサポートされることはありません。
ここにあります 研究論文のPDFへのリンク.
そして、ここで見つけることができます ワシントン大学での講義における Google のジェフ ディーンのビデオ, 、Google のバックエンドで使用される Bigtable コンテンツ ストレージ システムについて説明します。
他のヒント
これは、彼らが自分自身を構築した何か - 。それはBigtableのと呼ばれています。
http://en.wikipedia.org/wiki/BigTableする
データベース上のGoogleによる論文があります:
スパナには、Googleのグローバルな分散リレーショナル・データベース管理システム(RDBMS)であります BigTableのの後継。 Googleは各テーブルには主キーを持っている必要がありますので、それは純粋なリレーショナルシステムではありませんと主張しています。
ここの紙のリンクです。
スパナは、Googleのスケーラブルな、マルチバージョンでグローバルに分散し、 同期 - レプリケートされたデータベース。これは、最初にシステムであり、 地球規模でのデータを配布し、外部一貫したサポート 分散トランザクション。本論文では、スパナがある方法を説明します 構造化され、その機能セット、様々な設計の基礎となる理論的根拠 意思決定、およびクロックの不確実性を公開する新しいタイムAPI。この APIとその実装は、外部の支援に不可欠です 一貫性と強力な機能の様々な:非ブロッキングで読み込みます 過去、ロックフリーの読み取り専用トランザクション、および原子スキーマの変更、 スパナのすべてにわたってます。
グーグルによって発明の別のデータベースには、メガストアのです。ここでは抽象的であります:
メガストアはの要件を満たすために開発されたストレージ・システムであり、 今日のインタラクティブなオンラインサービスを提供しています。メガストアは、スケーラビリティをブレンド の伝統的なRDBMSの利便性のNoSQLデータストアの 道小説、両方の強い一貫性の保証を提供し、高いです 可用性。私たちは内に完全にシリアライズ可能なACIDセマンティクスを提供します データのきめ細かいパーティション。このパーティショニングは、私たちがすることができます 同期して、広域ネットワークを介して各書き込みを複製 合理的な待ち時間とデータセンター間のシームレスなフェイルオーバーをサポートしています。 本論文では、メガストアのセマンティクスおよび複製アルゴリズムを記述しています。 それはまた、Googleの広い範囲をサポートする私たちの経験を記述する 生産サービスはメガストアで構築されます。
、GoogleがBigTableのと呼ばれる自家製のソリューションを使用すると、彼らは現実の世界にそれを記述したいくつかの論文を発表しました。
Apacheの人々は HBaseののと呼ばれるこれらの論文で提示アイデアの実装を持っています。 HBaseのは、自分のサイトによると、が大きくなるのHadoopプロジェクトの一部である「1は、簡単に書くと、膨大な量のデータを処理するアプリケーションを実行することができますソフトウェアプラットフォームです。」のベンチマークのいくつかは非常に印象的です。自分のサイトには、 http://hadoop.apache.org のである。
Googleはすべての主要なアプリケーションのためのBigTableのを使用していますが、彼らはhref="http://www.mysql.com/customers/customer.php?id=75" rel="noreferrer">もMySQLのを使用して他の(おそらくマイナーな)アプリケーションのため。
もっとも手軽ないBigTableなリレーショナルデータベース(のようにMySQLが大きな(分散) ハッシュテーブル もっとも異なる特性です。いぶ慣れてきたので次回作は(限定版)のBigTable自分自身の Google AppEngine 台。
横Hadoop上記の他にも多くの実装として解決の問題としてのBigTable(拡張性、整えています。私もブログ昨日上場し こちらの.
Googleは、主のBigtableを使用します。
Bigtableのは非常に大きなサイズにスケーリングするために設計された構造化データを管理するための分散ストレージシステムである。
は、詳細については、こちらをのrel="nofollow"> href="http://labs.google.com/papers/bigtable.html"
Googleはまた、自分のアプリケーションのいくつかについては、OracleとMySQLデータベースを使用しています。 あなたが追加することができ、任意のより多くの情報が高く評価されます。