Adición de más de un origen de datos

Data API Builder admite puntos de conexión híbridos mediante archivos de origen de datos, lo que permite definir varios orígenes de datos y sus entidades en archivos de configuración independientes.

Este enfoque es útil para escenarios como:

  • Debe exponer entidades de más de una base de datos.
  • Quiere organizar las configuraciones de forma modular
  • Debe administrar diferentes back-end de datos de forma independiente.

Estructura

Para definir varios orígenes de datos, cree varios archivos de configuración y haga referencia a ellos en la data-source-files matriz de la configuración de nivel superior.

Archivo de nivel superior

{
  "data-source-files": [
    "dab-config-sql.json",
    "dab-config-cosmos.json"
  ],
  "runtime": {
    "rest": {
      "enabled": true
    },
    "graphql": {
      "enabled": true
    },
    "mcp": {
      "enabled": true
    }

  }
}

Archivo secundario: 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" ] }
      ]
    }
  }
}

Archivo secundario: dab-config-cosmos.json

{
  "data-source": {
    "database-type": "cosmosdb_nosql",
    "connection-string": "@env('COSMOS_CONNECTION_STRING')",
    "options": {
      "database": "library"
    }
  },
  "entities": {
    "LoanRecord": {
      "source": {
        "object": "LoanRecords"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

Comportamiento

  • Solo se respeta la configuración del archivo de runtime nivel superior.
  • Cada archivo secundario debe contener una data-source sección y entities
  • Los nombres de entidad deben ser únicos globalmente en todos los archivos
  • Las entidades definidas en archivos independientes no se pueden hacer referencia entre sí a través de relaciones
  • Los archivos se pueden anidar en subcarpetas según sea necesario.

Beneficios

  • Separación limpia de la configuración por back-end
  • Habilita las API escalables de varias bases de datos
  • Simplifica el mantenimiento de sistemas complejos

Limitaciones

  • Sin relaciones entre archivos de configuración
  • No se permiten referencias a archivos circulares
  • Solo el comportamiento en tiempo de ejecución de los controles de archivo de nivel superior