Docs Menu
Docs Home
/ /
Atlas App Services

MongoDB データソースへの接続

項目一覧

  • Overview
  • データの読み取り、書込み、集計
  • データの保護と検証
  • データの自動同期
  • Reactの変更に対応する
  • データソースのリンク
  • データソースの制限
  • Atlas Data Federation
  • サーバーレスインスタンス

データソースは、アプリと同じプロジェクト内の 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 つ必要です。

データの変化に応じて関数を自動的に実行するデータベーストリガーを作成できます。 trigger は、MongoDB の 変更ストリーム を使用してデータソースを監視し、変更イベントが trigger 構成と一致するたびに関数を実行します。 trigger 関数は任意のコードを実行でき、その実行の原因となった変更に関する詳細情報については 変更イベント にアクセスできます。

trigger の仕組みと独自の定義方法の詳細については、「データベーストリガー 」を参照してください。

重要

trigger は、 変更ストリーム をサポートするデータソースでのみ使用できます。 フェデレーティッドデータベースインスタンスまたはサーバーレス Atlas インスタンスではトリガーを定義できません。

アプリ内で設定されたデータソースは、Atlas の基礎となるインスタンスにリンクされます。 アプリに複数の インスタンスをリンクしたり、同じ基礎のインスタンスにリンクする複数のデータソースを作成したりすることもできます。

App Services UI を使用するか、 App Services CLIまたはGithub配置で構成ファイルを定義してプッシュすることで、新しいリンクされたデータソースを構成できます。

1

Atlas App Services UI で、左側のナビゲーション メニューのManageの下に Linked Data Sourcesをクリックします。

2

Link a Data Sourceをクリックし、 Data Source Configuration画面で次の構成情報を指定します。

フィールド
説明
Data Source
アプリと同じプロジェクトに関連付けられた MongoDB Atlas クラスターまたはフェデレーティッドデータベースインスタンス。
App Services Service Name

データソースに接続する App Services サービスの名前。 MongoDB サービス クライアントをインスタンス化する場合など、アプリケーションの他の部分のデータソースを参照する場合は、この名前を使用します。

App Services Service Name myAtlasClusterを持つ MongoDB クラスター データソースを検討します。 関数内でサービス クライアントを作成するには、次のコードを使用します。

const myAtlasCluster = context.services.get("myAtlasCluster");
MongoDB Connection String
config.wireProtocolEnabled
Atlas クラスターに必要です。 フェデレーティッドデータベースインスタンスでは有効になっていません。 App Services がクライアントにワイヤプロトコル経由の接続stringを使用してこのクラスターに接続することを許可するかどうかを示すブール値。
Read Preference
Atlas クラスターに必要です。 フェデレーティッドデータベースインスタンスでは使用できません。 クラスターの 読み込み設定( read preference ) を指定します。 デフォルトの読み込み設定(プライマリ)で、ほとんどのユースケースで十分有効です。
3

MongoDB クラスターまたはフェデレーティッドデータベースインスタンスを選択して構成したら、 Saveをクリックします。 App Services は、データソースへのリンクのプロセスをすぐに開始します。このプロセスには最大 5 分かかる場合があります。

1

MongoDB Atlas クラスターまたはフェデレーティッドデータベースインスタンスを App Services CLI にリンクするには、アプリケーションの構成ファイルのローカル コピーが必要です。

アプリの最新バージョンのローカルコピーを取得するには、次のコマンドを実行します。

appservices pull --remote="<Your App ID>"

Tip

App Services UI のDeploy > Export App画面からアプリケーションの構成ファイルのコピーをダウンロードすることもできます。

2

/data_sourcesのデータソースに使用する名前で新しいサブディレクトリを作成します。

mkdir -p data_sources/<Data Source Name>
3

config.jsonという名前のファイルをデータソース サブディレクトリに追加します。 ファイルでは、MongoDB Atlas クラスターまたはフェデレーテッドデータベースインスタンスのいずれかを構成できます。

構成ファイルは、次の一般的な形式でなければなりません。

/data_sources/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "mongodb-atlas",
"config": {
"clusterName": "<Atlas Cluster Name>",
"readPreference": "<Read Preference>",
"wireProtocolEnabled": <Boolean>,
"sync": <Sync Configuration>
}
}

注意

クラスター構成ファイルの内容の詳細については、「リンクされた MongoDB クラスター構成 」を参照してください。

/data_sources/<Service Name>/config.json
{
"name": "<Service Name>",
"type": "datalake",
"config": {
"dataLakeName": "<Federated database instance name>"
}
}
4

データソース用のconfig.jsonファイルを定義して保存したら、リモート アプリに構成をプッシュできます。 App Services は、データソースへのリンクのプロセスをすぐに開始します。このプロセスには最大 5 分かかる場合があります。

appservices push --remote="<Your App ID>"

リンクされたデータソースは、複数のインスタンス MongoDB Atlas インスタンス タイプのいずれかを表すことができます。 基礎となるインスタンスのタイプによっては、すべての機能がサポートされているわけではありません。

データソースをリンクすると、基になるインスタンスタイプは変更できません。 代わりに、新しいデータソースを別のインスタンスタイプにリンクできます。

フェデレーティッドデータベースインスタンスは、MongoDB データソースとしてアプリにリンクできます。 ただし、Atlas Data Federation を使用する際に注意する必要がある注意事項がいくつかあります。

サーバーレスインスタンスは MongoDB データソースとしてアプリにリンクできます。 ただし、サーバーレスインスタンスは現在変更ストリームをサポートしていないため、次の機能は制限されています。

  • サーバーレスインスタンスではデータベースtriggerを作成できません。

  • サーバーレスインスタンスをアプリのDevice Syncクラスターとして使用することはできません。

  • サーバーレス MongoDB Atlas インスタンスである変更データソースのコレクションを監視することはできません。

戻る

Okta (Custom JWT)