添加多个数据源

数据 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 设置
  • 每个子文件必须同时包含一个和entities一个data-source
  • 实体名称在所有文件中必须全局唯一
  • 在单独的文件中定义的实体不能通过关系相互引用
  • 文件可以根据需要嵌套在子文件夹中

Benefits

  • 清理每个后端的配置分离
  • 启用可缩放的多数据库 API
  • 简化复杂系统的维护

Limitations

  • 配置文件之间没有关系
  • 不允许循环文件引用
  • 仅顶级文件控制运行时行为