Поделиться через


Добавление нескольких источников данных

Построитель данных поддерживает гибридные конечные точки с помощью файлов источника данных, что позволяет определять несколько источников данных и их сущностей в отдельных файлах конфигурации.

Этот подход полезен для таких сценариев, как:

  • Необходимо предоставить сущности из нескольких баз данных
  • Вы хотите упорядочить конфигурации модульно
  • Необходимо самостоятельно управлять различными серверными службами данных

Structure

Чтобы определить несколько источников данных, создайте несколько файлов конфигурации и сослаться на них в data-source-files массиве конфигурации верхнего уровня.

Файл верхнего уровня

{
  "data-source-files": [
    "dab-config-sql.json",
    "dab-config-cosmos.json"
  ],
  "runtime": {
    "rest": {
      "enabled": true
    },
    "graphql": {
      "enabled": true
    },
    "mcp": {
      "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')",
    "options": {
      "database": "library"
    }
  },
  "entities": {
    "LoanRecord": {
      "source": {
        "object": "LoanRecords"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

Behavior

  • Учитываются только параметры файла runtime верхнего уровня.
  • Каждый дочерний файл должен содержать как раздел, так и data-source раздел entities
  • Имена сущностей должны быть глобально уникальными для всех файлов
  • Сущности, определенные в отдельных файлах , не могут ссылаться друг на друга через связи
  • Файлы можно вложить в вложенные папки по мере необходимости

Benefits

  • Чистое разделение конфигурации на серверную часть
  • Включает масштабируемые API с несколькими базами данных
  • Упрощение обслуживания сложных систем

Limitations

  • Нет связей между файлами конфигурации
  • Ссылки на циклические файлы не допускаются
  • Поведение среды выполнения только элементов управления файлами верхнего уровня