Docs Menu
Docs Home
/ /
Atlas App Services
/

Device Sync モードの移行

項目一覧

  • 要件
  • 移行する前に注意すること
  • 移行ステージ
  • パーティションベースの同期から Flexible Sync への移行
  • 移行を開始する
  • 権限とルールの移行
  • 移行をキャンセルする
  • 移行をコミットする
  • 移行を元に戻す
  • バックエンド移行後
  • クライアント アプリの Flexible Sync への移行

Atlas App Services アプリには、パーティションベースの同期Flexible Syncの 2 つの Device Sync モードのいずれかを含めることができます。 パーティションベースの同期は古いモードであるため、Flexible Sync への移行を検討する必要があります。

パーティションベースの同期 を使用するApp Services AppをFlexible Syncに移行するには、自動プロセスです。 SDK バージョンのアップグレード以外では、同期モードの移行にはクライアント アプリ コードを変更する必要はありません。

移行により、パーティションベースの同期クライアントは Flexible Sync バックエンドと通信します。 クライアントアプリ コードも、パーティションベースの同期ではなく Flexible Sync を使用するように最終的に移行することをおすすめします。

App Services App:

  • 現在、パーティションベースの同期を使用している

リンクされた Atlas クラスター:

クライアント アプリ:

  • Atlas Device SDK の最小バージョン:

    • Swift SDK v 10.40.0以降

    • Kotlin SDK v 1.9.0以降

    • Node.js SDK v 11.10.0以降

    • React Native SDK v 11.10.0以降

    • .NET SDK v 11.1.0以降

    • Java SDK v 10.16.0以降

  • クライアント リセット ハンドラーが構成されている 。

アプリの同期モードを移行すると、クライアント アプリとアプリのバックエンドの両方に影響する変更が含まれます。 影響に注意し、事前に計画する必要があります。

  • SDK の最小バージョン要件を満たさないクライアント アプリは、移行後に同期できません。

  • 移行にかかる時間は、移行が必要なデータ量に直接比例します。 データが多いほど、移行に時間がかかります。

  • 移行は、移行中にキャンセルしたり、移行が完了した後の特定の時間枠内に元に戻すことができます。

  • Flexible Sync ではプログレス通知はサポートされていないため、移行後はプログレス通知は機能しません。

  • Flexible Sync に移行された後、Flexible Sync に移行された後にクライアントがリセットされます。 リカバリが有効になっているクライアント リセットハンドラーを使用して、クライアントがリセットされる前に保留中の変更を失うことがないようにする必要があります。

  • パーティションベースの同期クライアントから開発モードを使用して移行された Flexible Sync バックエンドに新しいテーブルを作成すると、予期しない動作が発生する可能性があります。

移行の ステージは App Services UI で確認できます。 同期モードの移行には、次の 3 つのステージがあります。

  1. パーティションベースの同期メタデータの同期

    この段階では、クライアントアプリはアプリのバックエンドに接続できますが、ローカル書き込みは同期されません。 同期されていない変更を回復するためのクライアント リセット ハンドラーがないと、これらの書込みは失われます。

    クライアントは同期されたコレクションの更新を受け取りますが、アップロードを送信したりアップロード確認を受け取ったりすることはできません。

  2. Flexible Sync メタデータの構築

    この段階では、クライアントは接続できません。 このステージの期間は、同期されたコレクション内のデータの量に直接比例します。

  3. 移行が完了しました

    Manage Sync Migration 移行がコミットまたは元に戻されていない場合、Device Sync ページに が表示されます。

移行が完了したら、パーティションベースの同期クライアントが Flexible Sync バックエンドとどのように交流するかについて詳しくは、「移行後」セクションを確認してください。

パーティションベースの同期から Flexible Sync への移行が開始されると、プロセスはほとんど自動的に行われます。 ただし、移行の重要な部分はユーザーが制御できます。

移行中に、これをキャンセルできます。 移行後、元に戻すか、移行を手動でコミットすることができます。

移行を開始する前に、移行のステージ影響を認識していることを確認してください。

移行は通常、Device Sync を終了して再度有効にするのと同様の効果があります。 移行による追加の影響がいくつかあります。

  • App Services UI では、すべての構成ページが読み取り専用になります。 たとえば、 ルール、スキーマ、関数、Triggers 画面など。

  • アプリでは一定期間の読み取り専用同期が行われ、その後一定期間のダウンタイムが発生します。

  • 新しい Flexible Sync の構成では、クライアントの最大オフライン時間が 30 日間に設定されます。

  • Device Sync メタデータによって使用される Atlas クラスター内のストレージが一時的に 2 倍に増えます。 パーティションベースの同期メタデータと Flexible Sync メタデータは一時的に存在する必要があります。 同期されたデータのサイズによっては、移行するたびに請求が影響を受ける可能性があります。 重複したメタデータは、移行がロールバックまたはコミットされた後に削除されます。

パーティションベースの同期から Flexible Sync に移行するには、次の手順に従います。

  1. 次のようにDevice Sync画面に移動します。

    App Services UI から、左側のナビゲーション メニューにある [ Device Sync ] をクリックします。 Dashboardタブはデフォルトで表示されます。

  2. Configuration タブを選択します。

  3. [Start migration] をクリックします。

    移行を開始する
    クリックして拡大します
  4. 移行プロセスの情報を確認し、 Next: Migration Requirementsをクリックします。

  5. 移行要件を満たしていることを確認し、[ Start Migration ] をクリックします。

注意

一時的な同期の中断

移行が完了するまで、クライアントはローカル書き込みを同期できません。

移行が完了すると、Flexible Sync クライアント アプリはクライアントをリセットしGo 。 その後、アプリの Flexible Sync バックエンドと通信できるようになります。 Flexible Sync を無効にしてから再度有効にすることができ、クライアント アプリは引き続きバックエンドと通信します。

パーティションベースの同期を再度有効にすると、「移行済み」ステータスが失われます。 つまり、パーティションベースの同期クライアント アプリを使用してバックエンドで Flexible Sync を使用する場合は、別の移行を行う必要があります。

パーティションベースの同期ルールに直接 App Services ルールと同等の機能がある場合は、アプリの権限とルールが自動的に移行されます。 これにより、以前に定義された App Services ルールが上書きされます。

上記の手順 4 で、権限とルールが自動的に移行できるかどうかが確認されます。 App Services UI のReview Migration Processステップで、 Rules & Permissionsを探します。

一部のパーティションベースの同期ルール戦略は、App Services ルールに直接変換できません。 次のような権限を手動で移行する必要がある場合があります。

サポートされているすべての展開については、 Flexible Sync 互換展開のリスト を参照してください。

また、権限の操作方法の詳細については、「 Device Sync 権限ガイド 」を参照してください。

移行の進行中はいつでも移行をキャンセルできます。 これにより、移行が開始される前のすべての設定を持つパーティションベースの同期のアプリが返されます。

移行をキャンセルする場合は、次回の移行試行で最初からやり直す必要があります。

移行をキャンセルするには:

  1. 次のようにDevice Sync画面に移動します。

    App Services UI から、左側のナビゲーション メニューにある [ Device Sync ] をクリックします。 Dashboardタブはデフォルトで表示されます。

  2. Configuration タブを選択します。

  3. 通知バナーで、[ Cancel Migration ] をクリックします。

    移行をキャンセルする
    クリックして拡大します

    これにより、移行がキャンセルされます。 将来 Flexible Sync を有効にする場合は、再度移行する必要があります。

移行が完了すると、評価状態になります。 移行を手動でコミットして永続化するか、移行を元に戻してアプリをパーティションベースの同期に戻すことができます。

移行をコミットまたは元に戻すと、最小 oplog windowに従って自動的にコミットされます。 たとえば、最小 oplog window が48時間の場合、移行を元に戻すには48時間かかります。

移行がコミットされると、古いパーティションベースの同期メタデータが削除され、移行を元に戻すことはできません。

移行を手動でコミットするには次の手順に従います。

  1. 次のようにDevice Sync画面に移動します。

    App Services UI から、左側のナビゲーション メニューにある [ Device Sync ] をクリックします。 Dashboardタブはデフォルトで表示されます。

  2. Configuration タブを選択します。

  3. ページの上部で [ Manage migration ] ドロップダウンをクリックし、[ Delete Partition-Based Sync metadataを選択します。

    移行をコミットする
  4. メタデータを削除し、Flexible Sync への移行にコミットすることを確認します。

    重要

    一度削除すると、パーティションベースの同期メタデータを復元することはできません。

移行が完了した後、コミットされる前に元に戻すことができます。

完了した移行は、最小 oplog windowに従って自動的にコミットされます。 最小 oplog window を調整することで、移行を元に戻すのに必要な時間を増減できます。

コミットされた移行を元に戻すことはできません。

移行をキャンセルするのと同様、移行を元に戻す場合は、次回の移行試行で最初からやり直す必要があります。

移行を元に戻すには、次の手順に従います。

  1. 次のようにDevice Sync画面に移動します。

    App Services UI から、左側のナビゲーション メニューにある [ Device Sync ] をクリックします。 Dashboardタブはデフォルトで表示されます。

  2. Configuration タブを選択します。

  3. Manage Syncセクションから [ Manage migration ] ドロップダウンをクリックし、[ Revert back to Partition-Based Sync ] を選択します。

    移行を元に戻す

    これにより、移行が元に戻されます。 将来 Flexible Sync を有効にする場合は、再度移行する必要があります。

移行されたバックエンドは、オブジェクトモデルのパーティションキー フィールドを使用して、Flexible Sync クライアントオブジェクトをバックエンド上の Flexible Sync と同等にマッピングします。 オブジェクトモデルにパーティションキー フィールドがない場合、バックエンドは Flexible Sync クライアントが作成するすべてのオブジェクトに 1 つの を自動的に挿入します。

以下は、注意が必要なインジェクション フィールドのその他の特徴です。

  • 挿入されたフィールドは、次の構造に従います: <yourPartitionKey> == <yourPartitionValue> 。 フィールドキーは、古いパーティションベースの同期バックエンド構成から派生します。 値は、現在のパーティションベースの同期クライアント構成から派生します。

  • 挿入されたフィールドは、オブジェクトを作成したクライアントに同期しません。 つまり、元のクライアントはインジェクションされたpartitionKeyフィールドを読み取れません。

パーティションベースの同期クライアントは、 partitionKey == partitionValueになっている各テーブルの同期サブスクリプションを自動的に作成します。 これは、クライアントアプリを Flexible Sync に移行するまで続きます。

クライアント アプリを Flexible Sync に移行すると、バックエンドはパーティション キー フィールドの挿入を停止します。 クライアント アプリが同期サブスクリプションを管理するためにパーティション キー フィールドに依存している場合は、オブジェクトモデルにパーティションキー フィールドを追加する必要があります。

そうしないと、アプリの新しいバージョンで作成されたオブジェクトは、古いバージョンのクライアント アプリ コードを使用するクライアントに同期されません。

アプリのバックエンドが Flexible Sync に移行されたら、クライアント アプリを Flexible Sync に移行することをお勧めします。 クライアントアプリを Flexible Sync に移行すると、クライアントはアプリのデータモデル内の各オブジェクトモデルの同期サブスクリプションの自動作成を停止します。

また、すべての同期サブスクリプションを削除してから、データ用の新しいサブスクリプションを作成することもおすすめします。 これは、移行後に同期されるデータを制御する最も明確な方法です。

個々のサブスクライブを削除する場合、自動生成されるサブスクライブには、「 flx_migrated_ + オブジェクトモデル名」という特定の命名形式が使用されます。 たとえば、 Personオブジェクトモデルのサブスクリプション名はflx_migrated_Personになります。

自動生成サブスクリプションを削除して再作成しない場合は、自動生成されたサブスクリプションを保持できます。 ただし、これらのサブスクリプションはクライアント コードでは作成されないため、クライアント コードの維持と拡張が困難になる可能性があります。

パーティションベースの同期から Flexible Sync に移行した後のクライアント コードの更新の詳細については、以下を参照してください。

戻る

Atlas Device Sync プロトコル