データ API ビルダーは、 データ ソース ファイルを使用してハイブリッド エンドポイントをサポートするため、複数のデータ ソースとそのエンティティを個別の構成ファイルに定義できます。
これは、次の場合に便利です。
- 複数のデータベースからエンティティを公開する必要がある
- 構成をモジュール形式で整理する必要がある
- 異なるデータ バックエンドを個別に管理する必要がある
Structure
複数のデータ ソースを定義するには、複数の構成ファイルを作成し、最上位の構成の data-source-files 配列で参照します。
Top-level file
{
"data-source-files": [
"dab-config-sql.json",
"dab-config-cosmos.json"
],
"runtime": {
"rest": {
"enabled": true
}
}
}
子ファイル: dab-config-sql.json
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
},
"entities": {
"Book": {
"source": {
"object": "dbo.Books"
},
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
子ファイル: dab-config-cosmos.json
{
"data-source": {
"database-type": "cosmosdb_nosql",
"connection-string": "@env('COSMOS_CONNECTION_STRING')",
"database-name": "library"
},
"entities": {
"LoanRecord": {
"source": {
"object": "LoanRecords"
},
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Behavior
- 最上位ファイルの
runtime設定のみが尊重されます - すべての子ファイルには、
data-sourceセクションとentitiesセクションの両方が含まれている必要があります - エンティティ名は、すべてのファイルでグローバルに一意である必要があります
- 個別のファイルで定義されているエンティティは、リレーションシップを介して相互に参照することはできません
- ファイルは、必要に応じてサブフォルダーに入れ子にすることができます
Benefits
- バックエンドごとの構成のクリーンな分離
- スケーラブルなマルチデータベース API を有効にする
- 複雑なシステムのメンテナンスを簡素化
Limitations
- 構成ファイル間のリレーションシップなし
- 循環ファイル参照は許可されません
- 最上位レベルのファイルのみがランタイムの動作を制御します