MongoDB データソースへの接続
項目一覧
Overview
データソースは、アプリと同じプロジェクト内の MongoDB Atlasインスタンスを表します。 データソース を使用して、アプリケーションのデータを保存および取得します。
ほとんどのアプリは単一のデータソースに接続しますが、データが インスタンス全体に分散されている場合は、複数のデータソースを設定できます。 アプリケーションにリンクされた各データソースに一意の名前を定義し、その名前を使用してアプリ全体でデータソースを参照します。
データソースへのリクエストは、Atlas App Services を通じてルーティングされます。 このため、App Services はデータベース接続を自動的に開き、閉じます。 つまり、データソースを使用する場合、 db.close()
を呼び出すことを心配する必要はありません。
注意
バックエンドの暗号化
App Services と Atlas 間のすべての内部通信は x509 証明書で暗号化されます。
データの読み取り、書込み、集計
サーバー側の関数を使用するか、クライアント アプリケーションから接続して、データソースでデータを読み書きできます。 標準の MongoDB クエリ構文 を使用してクエリを記述します。
exports = async function() { const mongodb = context.services.get("mongodb-atlas"); return mongodb .db("myDatabase") .collection("myCollection") .findOne() }
Atlas Function でデータソースを操作する方法については、次のガイドを参照してください。
Realm SDK からデータソースを操作する方法については、「クライアント アプリから Atlas をクエリする 」を参照してください。
注意
リンクされたデータソースは、すべての MongoDB CRUD および集計操作をサポートしていません。 スキーマ検証とデータアクセス ルールのオーバーヘッドのため、個別のユーザーとして MongoDB をクエリする場合、一部の操作は使用できません。 代わりにシステムユーザーとして MongoDB をクエリすることで、一部の制限をバイパスできます。
サポートされている操作の詳細については、 CRUD および集計 API を参照してください。
データの保護と検証
データソースを使用すると、含まれるデータのアクセス ルールとドキュメント スキーマを定義できます。 ルールはユーザーにデータのサブセットの読み取りと書き込みを動的に許可し、スキーマは各ドキュメントの形状と内容を制御します。
リンクされたデータソースに対する読み取りおよび書込み操作は、デフォルトで安全です。 ユーザーは、ルールで明示的に許可されていない限り、データの読み取りも書き込みもできません。 認可されたユーザーによって挿入または変更されたデータは、対応するスキーマに準拠している必要があります。
コレクションのルールを定義しない場合、コレクションに対するクエリは失敗します。 つまり、データの破損やリークのリスクなく、適切に構成されたデータソース インターフェースをクライアント アプリケーションで安全に公開できます。
データの自動同期
Atlas Device Sync アプリケーションでデータが保存され、データの変更が連結されたクラスター( 同期されたクラスター )と同期されます。 同期プロトコルにより、すべての同期クライアントと同期されたクラスター間でデータの一貫性が確保されます。
Atlas Device Sync とアプリのデータソースとの連携方法について詳しくは、「 Atlas Device Sync 」を参照してください。
注意
Device Sync のデータソース要件
Device Sync を有効にするには、App Services App に次の要件を満たすリンクされたデータソースが少なくとも 1 つ必要です。
クラスターは、 サーバーレスインスタンス または フェデレーティッドデータベースインスタンス にはできません。 「データソースの制限 」を参照してください。
Reactの変更に対応する
データの変化に応じて関数を自動的に実行するデータベーストリガーを作成できます。 trigger は、MongoDB の 変更ストリーム を使用してデータソースを監視し、変更イベントが trigger 構成と一致するたびに関数を実行します。 trigger 関数は任意のコードを実行でき、その実行の原因となった変更に関する詳細情報については 変更イベント にアクセスできます。
trigger の仕組みと独自の定義方法の詳細については、「データベーストリガー 」を参照してください。
重要
trigger は、 変更ストリーム をサポートするデータソースでのみ使用できます。 フェデレーティッドデータベースインスタンスまたはサーバーレス Atlas インスタンスではトリガーを定義できません。
データソースのリンク
アプリ内で設定されたデータソースは、Atlas の基礎となるインスタンスにリンクされます。 アプリに複数の インスタンスをリンクしたり、同じ基礎のインスタンスにリンクする複数のデータソースを作成したりすることもできます。
App Services UI を使用するか、 App Services CLIまたはGithub配置で構成ファイルを定義してプッシュすることで、新しいリンクされたデータソースを構成できます。
新しいデータソースのリンク
Link a Data Sourceをクリックし、 Data Source Configuration画面で次の構成情報を指定します。
フィールド | 説明 | |
---|---|---|
Data Source | アプリと同じプロジェクトに関連付けられた MongoDB Atlas クラスターまたはフェデレーティッドデータベースインスタンス。 | |
App Services Service Name | データソースに接続する App Services サービスの名前。 MongoDB サービス クライアントをインスタンス化する場合など、アプリケーションの他の部分のデータソースを参照する場合は、この名前を使用します。 例App Services
Service Name
| |
MongoDB Connection String config.wireProtocolEnabled | Atlas クラスターに必要です。 フェデレーティッドデータベースインスタンスでは有効になっていません。 App Services がクライアントにワイヤプロトコル経由の接続stringを使用してこのクラスターに接続することを許可するかどうかを示すブール値。 | |
Read Preference | Atlas クラスターに必要です。 フェデレーティッドデータベースインスタンスでは使用できません。 クラスターの 読み込み設定( read preference ) を指定します。 デフォルトの読み込み設定(プライマリ)で、ほとんどのユースケースで十分有効です。 |
データソース構成ファイルの追加
config.json
という名前のファイルをデータソース サブディレクトリに追加します。 ファイルでは、MongoDB Atlas クラスターまたはフェデレーテッドデータベースインスタンスのいずれかを構成できます。
構成ファイルは、次の一般的な形式でなければなりません。
{ "name": "<Service Name>", "type": "mongodb-atlas", "config": { "clusterName": "<Atlas Cluster Name>", "readPreference": "<Read Preference>", "wireProtocolEnabled": <Boolean>, "sync": <Sync Configuration> } }
注意
クラスター構成ファイルの内容の詳細については、「リンクされた MongoDB クラスター構成 」を参照してください。
{ "name": "<Service Name>", "type": "datalake", "config": { "dataLakeName": "<Federated database instance name>" } }
データソースの制限
リンクされたデータソースは、複数のインスタンス MongoDB Atlas インスタンス タイプのいずれかを表すことができます。 基礎となるインスタンスのタイプによっては、すべての機能がサポートされているわけではありません。
データソースをリンクすると、基になるインスタンスタイプは変更できません。 代わりに、新しいデータソースを別のインスタンスタイプにリンクできます。
Atlas Data Federation
フェデレーティッドデータベースインスタンスは、MongoDB データソースとしてアプリにリンクできます。 ただし、Atlas Data Federation を使用する際に注意する必要がある注意事項がいくつかあります。
フェデレーティッド データソースは書込み操作をサポートしていません。
フェデレーティッド データソースには、システム関数からのみアクセスできます。
フェデレーティッド データソースのロールと権限を定義することはできません。
フェデレーティッド データソースに対して読み込み設定 ( read preference ) を設定することはできません。
フェデレーティッド データソースではデータベースtriggerを作成できません。
フェデレーティッド データソースをアプリのDevice Syncクラスターとして使用することはできません。
サーバーレスインスタンス
サーバーレスインスタンスは MongoDB データソースとしてアプリにリンクできます。 ただし、サーバーレスインスタンスは現在変更ストリームをサポートしていないため、次の機能は制限されています。
サーバーレスインスタンスではデータベースtriggerを作成できません。
サーバーレスインスタンスをアプリのDevice Syncクラスターとして使用することはできません。
サーバーレス MongoDB Atlas インスタンスである変更データソースのコレクションを監視することはできません。