グーグルのクラウドを支えるテクノロジー > 第7回 スケーラビリティと一貫性を両立した分散データストアMegastore(パート1)
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
CTC教育サービスはコラム「グーグルのクラウドを支えるテクノロジー > 第7回 スケーラビリティと一貫性を両立した分散データストアMegastore(パート1) 」を公開しました。
はじめに
今回からは、2011年に公開された論文「Megastore: Providing Scalable, Highly Available Storage for Interactive Services」をもとにして、分散データストア「Megastore」を紹介していきます。Google Cloud Platform(GCP)では、Cloud Datastoreというデータストアを利用することができますが、Cloud Datastoreは、内部的にMegastoreを用いて実装されています。Megastoreに機能を追加して、より簡単に使えるようにしたものがCloud Datastoreだと考えて構わないでしょう。
Megastore、あるいは、Cloud Datastoreは、スケールアウト型の構造を持っており、1台のサーバーでは対応できないような大量のデータを取り扱うことができます。また、Megastoreの内部構造を知ることにより、Cloud Datastoreの特徴であるエンティティグループやAncestorクエリー、あるいは、インデックスの使い方をスッキリと理解することが可能になります。今回は、Megastoreの仕組みを理解する準備として、まずは、Cloud Datastoreの概要とこれらの特徴を整理しておきます。
Cloud Datastoreの概要
Cloud Datastoreは、一般に、分散キーバリューストア、あるいは、NoSQLなどに分類されるデータストアです。「Kind」とよばれる複数のテーブルに「エンティティ」とよばれるデータを保存していきます。Kindは、スプレッドシートにおける1枚のシートに相当するもので、各行が個別のエンティティに対応すると考えるとよいでしょう。そして、シートの列に相当するのが「プロパティ」です。各エンティティには、自身を特定する識別子(「ID」+「Parent」)があり、それぞれのKindに固有のプロパティに対して実際のデータを保存していきます。
図1は、ユーザーが所有する書籍の情報を登録する「本棚アプリ」のデータを想定した例です。ユーザーのプロファイル情報を保存するKind「User」と、それぞれの書籍の情報を保存するKind「Book」があります。
この続きは以下をご覧ください
http://www.school.ctc-g.co.jp/columns/nakai2/nakai207.html
ソーシャルもやってます!