ネイティブ モードと Datastore モードからの選択

新しい Firestore データベースを作成する際に、Datastore モードで実行されるようにデータベース インスタンスを構成できます。このモードでは、Firestore データベースが Datastore との下位互換性を持つようになります。このページでは、Firestore の 2 つのデータベース モード(ネイティブ モードDatastore モード)の違いについて説明します。

ネイティブ モードの Firestore

Firestore は、Datastore のリブランディングとなる次期メジャー バージョンです。Datastore と Firebase Realtime Database を最大限に活用し、自動スケーリングと高パフォーマンスを実現して、アプリケーション開発をより快適にするように構築された NoSQL ドキュメント データベースです。

Firestore には次のような新機能が導入されています。

  • 新しい強整合性に優れたストレージ レイヤ
  • コレクションとドキュメントのデータモデル
  • リアルタイム アップデート
  • モバイル クライアント ライブラリとウェブ クライアント ライブラリ

Firestore は Datastore と下位互換性がありますが、新しいデータモデル、リアルタイム アップデート、モバイルおよびウェブ クライアント ライブラリの機能はありません。Firestore のすべての新機能にアクセスするには、Firestore をネイティブ モードで使用する必要があります。

Datastore モードの Firestore

Datastore モードの Firestore は、Datastore システムの動作を使用しますが、Firestore のストレージ レイヤにアクセスするため以下の Datastore の制限がなくなります。

  • 結果整合性の制限がなくなり、Datastore クエリすべてで強整合性を確保できます。
  • トランザクション内のクエリが祖先クエリである必要がなくなります。
  • 25 エンティティ グループまでというトランザクションの制限がなくなります。
  • 1 秒あたり 1 個というエンティティ グループへの書き込み制限がなくなります。

Datastore モードでは、Datastore と互換性のない Firestore の機能が無効になります。

  • プロジェクトは Datastore API リクエストを受け入れ、Firestore API リクエストを拒否します。
  • プロジェクトでは、Firestore インデックスの代わりに Datastore インデックスが使用されます。
  • このプロジェクトで Datastore クライアント ライブラリを使用することはできますが、Firestore クライアント ライブラリは使用できません。
  • Firestore のリアルタイム機能は利用できません。
  • Cloud Console では、データベースで Datastore ビューアが使用されます。

Datastore モードへの自動アップグレード

既存の Datastore データベースは Datastore モードの Firestore に自動的にアップグレードされます。Datastore データベースを必要とする新しいプロジェクトでは、Datastore モードの Firestore を使用する必要があります。

料金とロケーション

ネイティブ モードと Datastore モードのデータベースは同じ料金体系をとり、同じロケーションで利用できます。料金とロケーションについては、以下のページで詳しく説明しています。

ネイティブ モードの Firestore

Datastore モードの Firestore

データベース モードの選択

新しい Firestore データベースを作成するときは、データベース モードを選択する必要があります。同じプロジェクトでネイティブ モードと Datastore モードの両方を使用することはできません。データベース モードを選択する場合は、次のことをおすすめします。

  • 新しいサーバー プロジェクトの場合は、Datastore モードで Firestore を使用する。

    Datastore モードで Firestore を使用すると、既存の Cloud Datastore サーバー アーキテクチャを使用しながら、基本的な Datastore の制限を排除できます。Datastore モードでは、毎秒数百万回の書き込みまで自動的にスケーリングします。

  • モバイルアプリやウェブアプリの場合は、ネイティブ モードで Firestore を使用する。

    Firestore では、リアルタイムおよびオフライン機能を備えたモバイルおよびウェブ クライアント ライブラリをご利用いただけます。ネイティブ モードでは、数百万のクライアント同時実行まで自動的にスケーリングします。

機能の比較

次の表は、データベース モードのシステム動作を比較したものです。

Firestore
ネイティブ モード
Firestore
Datastore モード
データモデル ドキュメントとコレクションに分類されたドキュメント データベース 種類とエンティティのグループに分類されたエンティティ
ストレージ レイヤ 常に強整合性のある新たなストレージ レイヤ 常に強整合性のある新たなストレージ レイヤ
クエリとトランザクション
  • データベース全体での強整合性を確保したクエリ
  • 任意の数のコレクションにおいて、トランザクションごとに 500 ドキュメントまで
  • 制限: 射影クエリはありません。
  • Datastore の以前の整合性の制限を排除
  • データベース全体での強整合性を確保したクエリ
  • トランザクションでは任意の数のエンティティ グループにアクセス可能
Datastore v1 API のサポート なし。リクエストが拒否される あり
Firestore v1 API のサポート あり なし。リクエストが拒否される
リアルタイム アップデート

リアルタイム更新のための、ドキュメントまたは一連のドキュメントをリッスンする機能をサポート

ドキュメントまたは一連のドキュメントをリッスンしながら、クライアントにデータの変更を通知し、最新のデータセットを送信

サポート対象外
オフライン データの永続性 モバイル クライアント ライブラリとウェブ クライアント ライブラリでオフライン データの永続性をサポート サポート対象外
クライアント ライブラリ Firestore クライアント ライブラリ:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
  • Android
  • iOS
  • ウェブ
Datastore クライアント ライブラリ:
  • Java
  • Python
  • PHP
  • Go
  • Ruby
  • C#
  • Node.js
セキュリティ
  • Identity and Access Management(IAM)でデータベース アクセスを管理
  • Firestore のセキュリティ ルールは、モバイルおよびウェブ クライアント ライブラリのサーバーレス認証および承認をサポート
IAM でデータベース アクセスを管理
パフォーマンス 数百万のクライアント同時実行まで自動的にスケーリング。1 秒あたり最大 10,000 件の書き込み 毎秒数百万回の書き込みまで自動的にスケーリング
SLA Firestore SLA Firestore SLA
ロケーション
  • 米国(マルチリージョン)
  • ヨーロッパ(マルチリージョン)
  • モントリオール
  • ロサンゼルス
  • サウスカロライナ
  • バージニア州北部
  • サンパウロ
  • ロンドン
  • フランクフルト
  • 東京
  • ムンバイ
  • シドニー
  • 米国(マルチリージョン)
  • ヨーロッパ(マルチリージョン)
  • モントリオール
  • ロサンゼルス
  • サウスカロライナ
  • バージニア州北部
  • サンパウロ
  • ロンドン
  • フランクフルト
  • 東京
  • ムンバイ
  • シドニー
料金 同じ料金体系
コンソール Firebase コンソールおよび Cloud Console Firestore Viewer Cloud Console Datastore Viewer
名前空間 サポート対象外 名前空間に対応
App Engine クライアント ライブラリの統合

App Engine スタンダード環境の Python 2.7 および PHP 5.5 ランタイムではサポートされない

App Engine スタンダード環境の Python 3.7、PHP 7.2、Java 8、Go、Node.js のランタイムでサポート

App Engine フレキシブル環境のすべてのランタイムでサポート

すべてのランタイムでサポート