Firestore への自動アップグレード

このページでは、Cloud Datastore から Datastore モードの Firestore へのアップグレード パスについて説明します。

Firestore は Datastore モードで動作するため、Cloud Datastore との下位互換性があります。Datastore モードの Firestore では、Datastore システムの動作を維持しながら Firestore の改善されたストレージ レイヤにアクセスできます。Datastore モードの Firestore では、Cloud Datastore の次の制限がなくなります。

  • クエリに結果整合性がなくなります。代わりに、結果整合性を明示的にリクエストしない限り、強整合性になります。
  • トランザクション内のクエリが祖先クエリである必要がなくなります。
  • 25 エンティティ グループまでというトランザクションの制限がなくなります。
  • 1 秒あたり 1 個というエンティティ グループへの書き込み制限がなくなります。
  • トランザクションでは、楽観的同時実行ではなく悲観的ロックを使用するようになりました。

Datastore モードの詳細については、Datastore モードの Firestore をご覧ください。

Google Cloud は 2021 年から、既存の Cloud Datastore データベースを Datastore モードの Firestore に段階的にアップグレードしていく予定です。

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

Cloud Datastore を使用するアプリケーションを管理している場合は、アプリケーション コードの更新は必要ありません。Google から、アプリケーションを Datastore モードの Firestore にアップグレードするスケジュールをお知らせします。このアップグレードにダウンタイムは必要ありません。

自動アップグレード プロセスについてご不明な点がある場合は、各サポート窓口までお問い合わせください。

アップグレードのステージ

大まかに言うと、このプロセスに従って Cloud Datastore データベースを Datastore モードの Firestore にアップグレードします。このプロセスにアプリケーションのダウンタイムは必要ありません。

  1. 新しい Datastore モードの Firestore データレプリカを既存の Cloud Datastore データベースに追加します。Datastore モードの Firestore にエンティティの書き込みオペレーションを非同期で複製します。

  2. 既存のデータとインデックス エントリを Cloud Datastore から Datastore モードの Firestore にコピーします。コピーが完了したら、データを確認します。

  3. Datastore モードの Firestore に直接エンティティをリダイレクトします。まず、結果整合性を読み込み、強整合性の読み込みをリダイレクトします。

  4. エンティティの書き込みとトランザクション型の読み取りを Datastore モードの Firestore に直接リダイレクトします。

このプロセスでは以下のステージを使用します。

1. コピーして確認する

このステージでは、Datastore モードの Firestore レプリカを使用し、次の手順を実施します。

  1. ジャーナル

    Cloud Datastore へのエンティティの書き込みオペレーションも、Datastore モードの Firestore レプリカへのサイドチャネルでも開始されます。これは、Cloud Datastore の既存のレプリケーション システムの一部として行われます。これらの書き込みオペレーションは、書き込みレイテンシには影響しません。Datastore モードの Firestore レプリカは、コピー手順の後に適用する書き込みオペレーションをバッファします。

  2. コピー

    Datastore モードの Firestore レプリカで、既存のデータとインデックス エントリのオフライン コピーを作成します。コピー手順は Cloud Datastore のオペレーションに影響しません。このステップは数日続く場合があります。

  3. ジャーナルを排出する

    オフライン コピーのデータの上にジャーナル ステップによる書き込みを適用します。

  4. データを確認する

    Datastore モードの Firestore のデータを再確認するには、Cloud Datastore のデータに対して比較します。

2. 結果整合性読み取りをリダイレクトする

Datastore モードの Firestore から結果整合性読み取り(祖先フィルタのないクエリ)が提供されます。この時点では、読み取りのための Cloud Datastore セマンティクスは引き続き適用されます。

  • 祖先クエリは強整合性を持ちます。
  • 非祖先クエリは結果整合性になります。
  • ルックアップは強整合性を持ちます(結果整合性向けに明示的に構成されているものを除く)。

Datastore モードの Firestore は、引き続き Cloud Datastore データのレプリカとして動作します。

3. 強整合性読み取りをリダイレクトする

Datastore モードの Firestore から強整合性読み取り(トランザクション以外)が提供されます。読み取りのための Cloud Datastore セマンティクスは引き続き適用されます。Firestore から直接読み取りを行うようになった場合でも、Firestore は、強整合性読み取りのために最新であることを Cloud Datastore に依存して保証します。

4.書き込みをリダイレクトする

エンティティの書き込みとトランザクション型の読み取りを Datastore モードの Firestore にリダイレクトします。同じエンティティを同時に変更すると、トランザクションが中止されます。 同じエンティティ グループ内の異なるエンティティを同時に変更しても、トランザクションが中止されることはありません。

この段階の初期でも、Datastore モードの Firestore は、それぞれの書き込みが行われる前に最新であることが保証されるよう Cloud Datastore に依存しています。先に実行されたすべての書き込みが確実に適用される最終パスが終了すると、Datastore モードの Firestore は Cloud Datastore のコンサルティングを停止します。

5. 移行完了

読み取りのための Datastore モードの Firestore のセマンティクスが適用され、すべてのクエリが強整合性になります。

料金はこれまでと同じですが、料金には Firestore SKU が表示されます。[App Engine の割り当て] ページには、Cloud Datastore の使用量の代わりに Firestore の使用量が表示されます。

ログと進捗状況の通知

アップグレード プロセスでは、Cloud Logging を使用して進捗状況のアップデートを公開します。ログを表示するには、Logs ExplorerCloud Logging API、または Cloud SDK を使用します。

アップデートは、datastore.googleapis.com ロギング サービス名の下にある 2 つのログに公開されます。

ログ名 モニタリング対象リソース ペイロード
migration_state datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationStateEvent
migration_progress datastore_database type.googleapis.com/google.datastore.admin.v1.MigrationProgressEvent

migration_state ログは、アップグレードの全体的な状態(RUNNINGCOMPLETE)が変更されると更新されます。

migration_progress ログは、アップグレードが新しいステージ(STARTCOPY_AND_VERIFYREDIRECT_EVENTUALLY_CONSISTENT_READSREDIRECT_STRONGLY_CONSISTENT_READSREDIRECT_WRITES)に移行するたびに更新されます。

アップグレードの進行中に通知を受け取るには、2 つのログに基づいてログベースの指標を作成し、これらの指標に基づいてアラートを作成します。

既存のアプリケーションのテスト

Cloud Datastore を使用する既存のアプリの場合、以下の手順で Dataststore モードの Firestore でのアプリの動作をテストできます。

  1. 新しいプロジェクトを作成します。このプロジェクトでは、Firestore の Datastore モードでデータベースを作成します。
  2. マネージド エクスポート サービスを使用して、アプリケーション データの一部を Cloud Storage にエクスポートします。
  3. マネージド インポート サービスを使用して、アプリケーションのデータを新しいプロジェクトにインポートします。
  4. テストするアプリケーション ロジックを新しいプロジェクトにコピーするか、新しいプロジェクトに対してアプリケーションの動作をシミュレートします。

Cloud Monitoring の指標

Datastore データベースで使用できる Cloud Monitoring 指標は、アップグレード プロセス中も変わりません。利用可能な Datastore の指標をご覧ください