Datastore の概要

Datastore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQL ドキュメント データベースです。Datastore の特長は次のとおりです。

  • アトミック トランザクション: Datastore は、結果が「すべて成功」と「何も起こらない」のどちらかになる一連のオペレーションを実行できます。
  • 可用性の高い読み取り / 書き込み処理: Datastore は、障害発生点からの影響を最小限に抑える冗長性を備えた Google データセンターで実行されています。
  • 優れたスケーラビリティと高いパフォーマンス: Datastore は分散アーキテクチャを使用して自動的にスケーリングを管理します。インデックスとクエリの制約を組み合わせることで、データセットのサイズではなく結果セットのサイズに応じてクエリをスケールします。
  • 柔軟なストレージとデータのクエリ: Datastore はオブジェクト指向の言語やスクリプト言語に自然に対応させることが可能で、複数のクライアントを通じてアプリケーションに公開されています。また SQL ライクなクエリ言語も提供しています。
  • 強整合性と結果整合性のバランス: Datastore ではキーによるエンティティの検索が可能なため、祖先クエリでは常に強整合性が保たれたデータを受け取ります。また、その他のすべてのクエリでは結果整合性が保たれます。このような整合性モデルにより、大量のデータとユーザーを処理しながら優れたユーザー エクスペリエンスを提供するアプリケーションを実現できます。

  • 保存時の暗号化: Datastore はディスクに書き込む前に自動的にすべてのデータを暗号化し、承認されたユーザーがデータを読み取るときに自動的に復号します。詳細については、サーバー側の暗号化をご覧ください。

  • 計画ダウンタイムが発生しないフルマネージド サービス: Datastore サービスの管理は Google が処理するため、デベロッパーはアプリケーションに集中できます。サービスが予定されたアップグレードを受けるときにも、アプリケーションは引き続き Datastore を使用できます。

Datastore モードの Firestore(Datastore)

Firestore は Datastore の新しいバージョンであり、Datastore のさまざまな機能強化が含まれています。既存の Datastore ユーザーは、Datastore モードの Firestore データベースのインスタンスを新しく作成することで、この機能強化を利用できます。将来的には、既存の Datastore データベースがすべて、Datastore モードの Firestore に自動的にアップグレードされる予定です。

従来のデータベースとの比較

Datastore のインターフェースは従来のデータベースと同じ機能を多数備えていますが、NoSQL データベースであるため、データ オブジェクト間の関係を表現する方法が異なります。ここでは Datastore とリレーショナル データベースのコンセプトをおおまかに比較します。

コンセプト Datastore Firestore リレーショナル データベース
オブジェクトのカテゴリ 種類 コレクション グループ テーブル
オブジェクト単体 エンティティ ドキュメント
オブジェクトの個々のデータ プロパティ フィールド
オブジェクトの一意の ID キー ドキュメント ID 主キー

リレーショナル データベースのテーブルの行とは異なり、Datastore では同じ種類のエンティティが異なるプロパティを持つ場合があります。また別々のエンティティが同じ名前のプロパティを持ちながら、値の型が異なる場合もあります。このような独自の特徴から、自動的にスケールする能力を活用するためにデータを設計、管理する方法が異なります。特に、Datastore は次の重要な動作方法が従来のリレーショナル データベースとは異なります。

  • Datastore は非常に大規模なデータセットに対して自動的にスケールできるように設計されているため、アプリケーションが大量のトラフィックを受信しても高いパフォーマンスを維持できます。
    • Datastore の書き込み処理は、必要に応じて自動的にデータを分散することでスケールされます。
    • Datastore では、データセットのサイズではなく結果セットのサイズに応じてパフォーマンスがスケールするクエリだけがサポートされているため、読み取り処理がスケールされます。つまり、結果セットに 100 件のエンティティが含まれるクエリは、100 件を超えるエンティティを検索した場合でも同じパフォーマンスを発揮します。これは 100 万件になっても同じです。この特徴が、一部のタイプのクエリがサポートされていない主な理由となっています。
  • すべてのクエリは構築済みのインデックスによって提供されるため、実行できるクエリのタイプは、SQL を使用するリレーショナル データベースで許可されているものよりも制限が厳しくなります。特に Datastore では、結合オペレーションや複数のプロパティに対する不等式フィルタリング、サブクエリの結果に基づいたデータに対するフィルタリングがサポートされていません。
  • 従来のリレーショナル データベースではスキーマが強制されますが、Datastore はスキーマレスです。同じ種類のエンティティであってもプロパティ セットの一貫性は求められません(ただし、独自のアプリケーション コードでこのような要件を強制することもできます)。

最適な用途

Datastore は、大規模な構造化データに対して可用性の高いアクセスを必要とするアプリケーションに最適です。Datastore は、次のようなタイプのすべてのデータを保存、クエリする目的で使用できます。

  • 小売店向けにリアルタイムな在庫と商品の詳細を提供する商品カタログ
  • ユーザーの過去の行動と好みに応じてカスタマイズされたエクスペリエンスを提供するユーザー プロフィール
  • ある銀行口座から別の口座への送金など、ACID プロパティに基づくトランザクション

ストレージとデータベースに関するその他のオプション

Datastore はすべてのユースケースに適しているわけではありません。たとえば、Datastore はリレーショナル データベースではなく、分析データに効果的なソリューションではありません。

ここでは Datastore 以外のソリューションを検討すべき一般的なシナリオを示します。

  • SQL を完全にサポートするオンライン トランザクション処理(OLTP)システム向けのリレーショナル データベースが必要な場合は、Cloud SQL を検討してください。
  • ACID トランザクションのサポートが不要な場合、またはデータが高度に構造化されていない場合は、Cloud Bigtable を検討してください。
  • オンライン分析処理(OLAP)システムでのインタラクティブなクエリが必要な場合は、BigQuery を検討してください。
  • 大容量の画像やムービーなど、大規模な不変 blob を格納する必要がある場合は、Cloud Storage を検討してください。

他のデータベース オプションについて詳しくは、データベース サービスの概要をご覧ください。