サービスの制限
項目一覧
Overview
Atlas App Services には、ツールとクライアントが App Services を通じて MongoDB と交流する方法を構築する際に、留意する必要があるガイドラインがいくつかあります。 クエリの構造方法、使用する CRUD と集計操作の選択、同時ワークロードの処理方法を決定する際に、このガイダンスを念頭に置いてください。
集計
Atlas App Services は、 $currentOp
と$indexStats
を除くすべての集計パイプライン ステージをサポートしています。
セキュリティ上の理由から、ユーザー関数では集計パイプライン ステージのサブセットのみがサポートされています。
使用可能なパイプライン ステージと許可された関数コンテキストのリストについては、「集計 」を参照してください。
Atlas
バッチ ロード
データが MongoDB Atlas に一括/バッチでロードされる場合、App Services が変更を処理している間にデバイスにデータが表示されるのが遅延する可能性があります。
フェデレーティッドデータベースインスタンス
フェデレーティッドデータベースインスタンスは、MongoDB データソースとしてアプリにリンクできます。 ただし、Atlas Data Federation を使用する際に注意する必要がある注意事項がいくつかあります。
フェデレーティッド データソースは書込み操作をサポートしていません。
フェデレーティッド データソースには、システム関数からのみアクセスできます。
フェデレーティッド データソースのロールと権限を定義することはできません。
フェデレーティッド データソースに対して読み込み設定 ( read preference ) を設定することはできません。
フェデレーティッド データソースではデータベースtriggerを作成できません。
フェデレーティッド データソースをアプリのDevice Syncクラスターとして使用することはできません。
サーバーレスインスタンス
サーバーレスインスタンスは MongoDB データソースとしてアプリにリンクできます。 ただし、サーバーレスインスタンスは現在変更ストリームをサポートしていないため、次の機能は制限されています。
サーバーレスインスタンスではデータベースtriggerを作成できません。
サーバーレスインスタンスをアプリのDevice Syncクラスターとして使用することはできません。
サーバーレス MongoDB Atlas インスタンスである変更データソースのコレクションを監視することはできません。
シャーディングされたクラスター
Atlas Device Sync は現在、シャーディングされた MongoDB Atlas クラスターをサポートしていません。 ただし、シャーディングされたクラスターをデータソースとして追加し、関数 からアクセスすることはできます。
時系列コレクション
時系列コレクションはまだ変更ストリームをサポートしていません。 したがって、時系列コレクションで trigger を定義することはできません。
Atlas Device Sync では時系列コレクションを使用できますが、 Data Ingestのみがサポートされます。
プライベートエンドポイント
App Services は、Amazon Web Services を使用して Virtual Private CloudAWS PrivateLink に安全に接続するためのプライベートエンドポイントをサポートしています。プライベートエンドポイントを使用するには、アプリをAmazon Web Servicesのリージョンにローカルに配置する必要があります。 App Services では、グローバル Apps または GCP または Azure に配置されたアプリのプライベートエンドポイントはサポートされていません。 詳細については、「プライベートエンドポイント 」を参照してください。
変更ストリーム
App Services は、クラスターのサイズに基づいて、すべてのアプリにわたって特定のクラスターに対して開かれる変更ストリームの合計数を制限します。 次の表に、各クラスター サイズの制限を示します。
クラスター サイズ | Change Streamsの最大数 |
---|---|
無料階層( M0 ) | 5 |
共有クラスター( M2 / M5 ) | 10 |
小規模な専有クラスター( M10 / M20 ) | 100 |
標準クラスター( M30 / M40 ) | 1000 |
標準クラスター( M50 - M90 ) | 1000 |
高出力クラスター( M100+ ) | 1000 |
注意
App Services は、データベースtriggerまたはDevice Sync操作に関連付けられているコレクションごとに 1 つの変更ストリームを開きます。
重要
使用に関する推奨事項
開いている変更ストリームの数を最小限に抑えるには、次の手順に従います。
必要な場合にのみ同期操作を開始します。 不要になった場合は、開いている同期ストリームをすぐに閉じます。
無制限の数のコレクションを同期する必要があるデータモデルは避けます。
データベース コマンド
App Services は、 クライアント SDK または 関数 内の データベースコマンド をサポートしていません。ただし、ワイヤプロトコル経由で MongoDB クラスターに接続している場合は、データベースコマンドの限定的なサブセットを呼び出すことができます。 サポートされているコマンドのリストについては、「データベースコマンド 」を参照してください。
デバイスの同期
同時ワークロード
最大5 , 000の同時同期接続を確立できます。 「リクエスト トラフィック」を参照してください。
- 書込み:
- パフォーマンスを向上させるには、同時書込み数を 1 つの MongoDB ドキュメントに制限することをお勧めします。 App Services では、MongoDB ドキュメントに同時にデータを書込むユーザー数にハード制限はありません。 ただし、同時書込み (write) が 30 を超えると、同期や競合の解決が遅れる可能性があります。
- 読み取り:
- グローバル レルムから読み取るフロントエンド クライアントは、数十の同時ユーザー数を超えることができます。
Tip
スケーラビリティ
多数の同時書込み (write) を行う場合は、各書込み (write) を別々のドキュメントで動作させます。
デフォルトのメッセージサイズ制限
Device Sync では、クライアント アプリケーションから送信されるすべてのメッセージに対して圧縮された20 MB のデフォルトのメッセージ サイズ制限があります。 メッセージのサイズは、クライアント デバイスから送信された変更の圧縮サイズによって異なります。 変更セットと Sync が使用する圧縮の詳細については、「 変更セット 」を参照してください。
変更セットの圧縮されたサイズは、アップロードされるドキュメントのサイズと直接的には一致しません。 ただし、実際には、変更セットのサイズは通常、アップロードされるドキュメントのサイズと同じ順序になります。
この制限は、リソースを過剰に消費する接続に対する対策として機能します。
この制限は、 failed to read: read
limited at 20971521 bytes
のようなエラー メッセージとして表示されることがあります。
非アクティブのため一時停止
30 日間アクティビティがない場合、Device Sync は一時停止します。 Device Sync を再度有効にする方法については、「 同期の再有効化 」を参照してください。
MongoDB のバージョン要件
MongoDB サービスを使用して、MongoDB バージョン 3.6 の CRUD および集計機能のほとんどにアクセスできます。ただし、App Services は標準ツールとクライアントで利用可能なすべての操作と機能をサポートしていません。 App Services 経由で MongoDB に接続するときに利用できる特定の MongoDB 操作のリストについては、 CRUD および集計 API リファレンス を参照してください。
Device Sync では、特定のバージョンの MongoDB を実行するために MongoDB Atlas クラスターが必要です。 Flexible Sync には MongoDB 5.0.0 以降が必要です。
HTTP バージョンの要件
データAPIおよびHTTPS endpointsでは、リクエストを行う際にHTTP /1.1 以上が必要です。
クエリ オプション
App Services は、システム関数内のすべてのクエリ オプションをサポートしています。 App Services は、ユーザー関数から実行される CRUD 操作の特定のオプションをサポートしていません。 App Services 経由で MongoDB に接続するときに使用できる特定のオプションのリストについては、「クエリ オプション 」を参照してください。
クエリ結果
App Services を通じて実行された MongoDB クエリは、最大 50,000 のドキュメントを返すことができます。 さらに多くのドキュメントを返す必要がある場合は、クエリをページ分割することを検討してください。
リクエストトラフィック
App Services はリクエスト トラフィックを次のデフォルトに制限します。
10 、 000の同時リクエスト。 非同期の同時要求制限を超えて行われたリクエストには、 の HTTP 応答ステータス コードが与えられます429 - リクエストが多すぎる 。
5,000 の同時 Device Sync 接続。
App Services は、上記の制限を超えるリクエストを処理できます。 ただし、これらの制限は、アプリケーションが応答してスケーリングできるようにし、DOS 攻撃や意図しない請求を防ぐために設定されています。
接続プーリング
App Services は接続プーリングを使用して、リクエストとtrigger実行の間で接続を頻繁に開始したり閉じたりするオーバーヘッドを減らします。 接続は必要に応じて開かれます。 接続プーリングは、次のいくつかの要因によって決まります。
クラスター階層。 クラスター階層が高いほど、プール内で使用できる接続も多くなります。
配置モード。 グローバル配置では各リージョンで複数のサーバーを使用するため、接続プール全体が大きくなります。
サービス。 各サービスには独立した接続プールがあるため、アプリ内のサービスの数は利用可能な接続数に影響しません。
静的ホスティング
App Services は静的ホスティングに最大ファイル サイズ 25 MB の制約を適用します。
重要
静的ホスティングは非推奨です。 詳細はこちら。