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


Runtime

Параметры конфигурации, определяющие поведение среды выполнения.

Параметры разбиения на страницы

Property Default Description
размер страницы runtime.pagination.max Определяет максимальные записи на страницу
runtime.pagination.default-page-size Задает записи по умолчанию на ответ

Параметры REST

Property Default Description
runtime.rest.path "/api" Базовый путь для конечных точек REST
runtime.rest.enabled true Разрешает включение или отключение запросов REST для всех сущностей
runtime.rest.request-body-strict true Запрещает лишние поля в тексте запроса, если значение true

Параметры GraphQL

Property Default Description
runtime.graphql.allow-introspection true Позволяет запрашивать базовую схему GraphQL
runtime.graphql.path "/graphql" Базовый путь для конечной точки GraphQL
runtime.graphql.enabled true Разрешает включение или отключение запросов GraphQL для всех сущностей
runtime.graphql.depth-limit null Максимальная допустимая глубина запроса GraphQL
runtime.graphql.multiple-mutations.create.enabled false Позволяет создавать несколько мутаций для всех сущностей

Параметры узла

Property Default Description
runtime.host.max-response-size-mb 158 Максимальный размер ответа базы данных (МБ), разрешенный в одном результате
runtime.host.mode "production" Режим выполнения; "production" или "development"

Параметры CORS

Property Default Description
runtime.host.cors.origins [] Разрешенные источники CORS
runtime.host.cors.allow-credentials false Задает значение заголовка Access-Control-Allow-Credentials

Параметры проверки подлинности

Property Default Description
runtime.host.authentication.provider Unauthenticated Поставщик проверки подлинности
runtime.host.authentication.jwt.audience null Аудитория JWT
runtime.host.authentication.jwt.issuer null Издатель JWT

Параметры кэша

Property Default Description
runtime.cache.enabled false Обеспечивает глобальное кэширование ответов
runtime.cache.ttl-seconds 5 Время жизни (в секундах) для глобального кэша
runtime.cache.level-2.enabled false Включает глобальный кэш распределенного уровня 2
runtime.cache.level-2.provider "redis" Поставщик распределенного кэша для кэша уровня 2
runtime.cache.level-2.connection-string null Строка подключения для поставщика кэша уровня 2
runtime.cache.level-2.partition null Необязательное имя секции для изоляции распределенного пространства кэша

Параметры сжатия

Property Default Description
runtime.compression.level optimal Уровень сжатия http-ответа (optimalилиfastestnone)

Настройки телеметрии

Property Default Description
runtime.telemetry.application-insights.connection-string null Строка подключения Application Insights
runtime.telemetry.application-insights.enabled true Включает или отключает данные телеметрии Application Insights
runtime.telemetry.open-telemetry.endpoint null URL-адрес сборщика OpenTelemetry
runtime.telemetry.open-telemetry.headers {} Заголовки экспорта OpenTelemetry
runtime.telemetry.open-telemetry.service-name "dab" Имя службы OpenTelemetry
runtime.telemetry.open-telemetry.exporter-protocol "grpc" Протокол OpenTelemetry ("grpc" или "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true Включает или отключает OpenTelemetry
runtime.telemetry.open-telemetry.enabled true Включает или отключает OpenTelemetry
runtime.telemetry.azure-log-analytics.enabled false Включает или отключает Azure Log Analytics
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Идентификатор DAB в Azure Log Analytics
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 Интервал между отправками пакета журнала (секунды)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Пользовательское имя таблицы для Azure Log Analytics
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null Неизменяемый идентификатор правила сбора данных
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null URL-адрес конечной точки сбора данных
runtime.telemetry.file.enabled false Включение или отключение ведения журнала приемника файлов
runtime.telemetry.file.path "/logs/dab-log.txt" Путь к файлу для журналов телеметрии
runtime.telemetry.file.rolling-interval "Day" Последовательный интервал для файлов журналов
runtime.telemetry.file.retained-file-count-limit 1 Максимальное количество сохраненных файлов журнала
runtime.telemetry.file.file-size-limit-bytes 1048576 Максимальный размер файла в байтах перед развертыванием
пространство имен runtime.telemetry.log уровня.namespace null Переопределение уровня журнала для конкретного пространства имен
runtime.health.enabled true Включает или отключает конечную точку проверки работоспособности глобально
runtime.health.role null Разрешенные роли для комплексной конечной точки работоспособности
runtime.health.cache-ttl-seconds 5 Время жизни (секунды) для записи кэша отчетов проверки работоспособности
параллелизм runtime.health.max-query-parallelism 4 Максимальное число одновременных запросов проверки работоспособности (диапазон: 1–8)

Параметры MCP

Property Default Description
runtime.mcp.enabled true Включает или отключает конечную точку MCP глобально
runtime.mcp.path "/mcp" Базовый путь для конечной точки MCP
runtime.mcp.description null Описание сервера, отправленное клиентам MCP во время инициализации
runtime.mcp.dml-tools true Включает или отключает все средства DML или объект для элемента управления для каждого средства
runtime.mcp.dml-tools.describe-entities true Включает средство describe_entities
runtime.mcp.dml-tools.create-record true Включает средство create_record
runtime.mcp.dml-tools.read-records true Включает средство read_records
runtime.mcp.dml-tools.update-record true Включает средство update_record
runtime.mcp.dml-tools.delete-record true Включает средство delete_record
runtime.mcp.dml-tools.execute-entity true Включает средство execute_entity
runtime.mcp.dml-tools.aggregate-records true Включает средство aggregate_records (логическое значение или объект с временем ожидания запроса)

Обзор формата

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer|null> (default: `100000`),
      "default-page-size": <integer|null> (default: `100`)
    },
    "rest": {
      "path": <string> (default: "/api"),
      "enabled": <true>|<false>,
      "request-body-strict": <true>|<false> (default: `true`)
    },
    "graphql": {
      "path": <string> (default: "/graphql"),
      "enabled": <true>|<false>,
      "allow-introspection": <true>|<false>,
      "depth-limit": <integer|null> (default: `null`),
      "multiple-mutations": {
        "create": {
          "enabled": <true>|<false> (default: `false`)
        }
      }
    },
    "host": {
      "mode": <"production"> (default) | <"development">,
      "max-response-size-mb": <integer|null> (default: `158`),
      "cors": {
        "origins": [ "<string>" ],
        "allow-credentials": <true>|<false> (default: `false`)
      },
      "authentication": {
        "provider": <string> (default: "Unauthenticated"),
        "jwt": {
          "audience": "<string>",
          "issuer": "<string>"
        }
      }
    }
  },
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    },
    "cache": {
      "enabled": <true>|<false> (default: `false`),
      "ttl-seconds": <integer> (default: `5`),
      "level-2": {
        "enabled": <true>|<false> (default: `false`),
        "provider": <"redis">,
        "connection-string": <string>,
        "partition": <string>
      }
    },
    "telemetry": {
      "application-insights": {
        "connection-string": "<string>",
        "enabled": <true>|<false> (default: `true`)
      },
      "open-telemetry": {
        "endpoint": "<string>",
        "headers": "<string>",
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
        "enabled": <true>|<false> (default: `true`)
      },
      "azure-log-analytics": {
        "enabled": <true>|<false> (default: `false`),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: `5`),
        "auth": {
          "custom-table-name": <string>,
          "dcr-immutable-id": <string>,
          "dce-endpoint": <string>
        }
      },
      "file": {
        "enabled": <true>|<false> (default: `false`),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <string> (default: "Day"),
        "retained-file-count-limit": <integer> (default: `1`),
        "file-size-limit-bytes": <integer> (default: `1048576`)
      },
      "log-level": {
        // namespace keys
        "<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
      }
    },
    "health": {
      "enabled": <true>|<false> (default: `true`),
      "roles": [ "<string>" ],
      "cache-ttl-seconds": <integer> (default: `5`),
      "max-query-parallelism": <integer> (default: `4`)
    },
    "mcp": {
      "enabled": <true>|<false> (default: `true`),
      "path": <string> (default: `"/mcp"`),
      "description": <string>,
      "dml-tools": <true>|<false> | {
        "describe-entities": <true>|<false> (default: `true`),
        "create-record": <true>|<false> (default: `true`),
        "read-records": <true>|<false> (default: `true`),
        "update-record": <true>|<false> (default: `true`),
        "delete-record": <true>|<false> (default: `true`),
        "execute-entity": <true>|<false> (default: `true`),
        "aggregate-records": <true>|<false> | {
          "enabled": <true>|<false> (default: `true`),
          "query-timeout": <integer> (default: `30`)
        }
      }
    }
  }
}

Режим (среда выполнения узла)

Parent Property Type Required Default
runtime host перечисление (production | development) ❌ Нет production

Поведение разработки

  • Включено Nitro (ранее банановый торт pop) для тестирования GraphQL
  • Включенный пользовательский интерфейс Swagger для тестирования REST
  • Включена анонимная проверка работоспособности
  • Повышенная детализация ведения журнала (отладка)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

Максимальный размер ответа (среда выполнения узла)

Parent Property Type Required Default
runtime.host max-response-size-mb integer ❌ Нет 158

Задает максимальный размер (в мегабайтах) для любого заданного результата. Так как большие ответы могут напрягать систему, max-response-size-mb заголовок общего размера (отличается от количества строк), чтобы предотвратить перегрузку, которая особенно с большими столбцами, такими как текст или JSON.

Value Result
не задано Использовать по умолчанию
null Использовать по умолчанию
integer Любое положительное 32-разрядное целое число
<= 0 Не поддерживается

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (среда выполнения)

Parent Property Type Required Default
runtime graphql object ❌ Нет -

Конфигурация Global GraphQL.

Вложенные свойства

Parent Property Type Required Default
runtime.graphql enabled boolean ❌ Нет None
runtime.graphql path string ❌ Нет "/graphql"
runtime.graphql depth-limit integer ❌ Нет Нет (без ограничений)
runtime.graphql allow-introspection boolean ❌ Нет True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Нет False

Заметки о свойствах

  • Подпаты не допускаются для path свойства.
  • Используется depth-limit для ограничения вложенных запросов.
  • Установите для allow-introspectionfalse скрытия схемы GraphQL.
  • Используется multiple-mutations для вставки нескольких сущностей в одну мутацию.

Format

{
  "runtime": {
    "graphql": {
      "enabled": <true> (default) | <false>
      "depth-limit": <integer|null> (default: `null`),
      "path": <string> (default: /graphql),
      "allow-introspection": <true> (default) | <false>,
      "multiple-mutations": {
        "create": {
          "enabled": <true> | <false> (default)
        }
      }
    }
  }
}

Пример: несколько мутаций

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

Мутация GraphQL

mutation {
  createUsers(input: [
    { name: "Alice", age: 30, isAdmin: true },
    { name: "Bob", age: 25, isAdmin: false },
    { name: "Charlie", age: 35, isAdmin: true }
  ]) {
    id
    name
    age
    isAdmin
  }
}

REST (среда выполнения)

Parent Property Type Required Default
runtime rest object ❌ Нет -

Глобальная конфигурация REST.

Вложенные свойства

Parent Property Type Required Default
runtime.rest enabled boolean ❌ Нет None
runtime.rest path string ❌ Нет "/api"
runtime.rest request-body-strict boolean ❌ Нет True

Заметки о свойствах

  • Если глобальный enabledfalse, отдельный уровень enabled сущности не имеет значения.
  • Свойство path не поддерживает такие значения подпаток, как /api/data.
  • request-body-strict был представлен для упрощения объектов POCO .NET.
request-body-strict Behavior
true Дополнительные поля в тексте BadRequest запроса вызывают исключение.
false Дополнительные поля в тексте запроса игнорируются.

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

Пример: request-body-strict

  • Столбцы со default() значением игнорируются только в INSERT том случае, если их значение в полезных данных nullравно. В результате INSERT операции с default() столбцами, когда request-body-strict они есть true, не могут привести к явным null значениям. Для выполнения этого поведения UPDATE требуется операция.
  • Столбцы с ней default() не игнорируются во время UPDATE независимо от значения полезных данных.
  • Вычисляемые столбцы всегда игнорируются.
  • Автоматически созданные столбцы всегда игнорируются.

Пример таблицы

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY, -- auto-generated column
    Name NVARCHAR(50) NOT NULL,
    Age INT DEFAULT 18, -- column with default
    IsAdmin BIT DEFAULT 0, -- column with default
    IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);

Тело запроса

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

Вставка поведения при request-body-strict = false

INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.

Полезная нагрузка ответа

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

Обновление поведения при request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

Полезная нагрузка ответа

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (среда выполнения узла)

Parent Property Type Required Default
runtime.host cors object ❌ Нет -

Глобальная конфигурация CORS.

Tip

CORS обозначает "Общий доступ к ресурсам между источниками". Это функция безопасности браузера, которая определяет, могут ли веб-страницы запрашивать домен, отличный от обслуживаемого.

Вложенные свойства

Parent Property Type Required Default
runtime.host.cors allow-credentials boolean ❌ Нет False
runtime.host.cors origins массив строк ❌ Нет None

Note

Свойство allow-credentials задает Access-Control-Allow-Credentials заголовок CORS.

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> | <false> (default),
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

Подстановочный знак * действителен в качестве значения origins.

Поставщик (среда выполнения узла проверки подлинности)

Parent Property Type Required Default
runtime.host.authentication provider перечисление (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) ❌ Нет Unauthenticated

Выбирает метод проверки подлинности. Каждый поставщик проверяет удостоверение по-разному. Пошаговые инструкции по настройке см. в руководствах в следующей таблице.

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Сводка поставщика

Provider Сценарий использования Источник удостоверений Практическое руководство
Unauthenticated DAB находится за доверенным интерфейсом (по умолчанию) Нет— все запросы выполняются как anonymous Настройка поставщика без проверки подлинности
AppService Размещенные в Azure приложения (EasyAuth) Заголовок X-MS-CLIENT-PRINCIPAL Настройка проверки подлинности службы приложений
EntraID Идентификатор Microsoft Entra (Azure AD) Токен носителя JWT Настройка проверки подлинности идентификатора записи
Custom Сторонние поставщики удостоверений (Okta, Auth0) Токен носителя JWT Настройка пользовательской проверки подлинности JWT
Simulator Только локальное тестирование Симулированный Настройка проверки подлинности симулятора

Note

Поставщик EntraId был ранее назван AzureAd. Старое имя по-прежнему работает для совместимости.

Не прошедший проверку подлинности (по умолчанию)

Если Unauthenticated задано (или не указан поставщик), DAB не проверяет и не проверяет JWT. Все запросы выполняются в качестве anonymous роли. Интерфейсная служба, такая как управление API Azure или шлюз приложений, по-прежнему может обрабатывать проверку подлинности или политику доступа, прежде чем запрашивать DAB, но DAB продолжает авторизовать только как anonymous.

Important

Если Unauthenticated активен, а пользовательские роли, определенные в разрешениях сущностей, authenticated никогда не активируются. Если конфигурация содержит эти роли, DAB выдает предупреждение при запуске.

{
  "host": {
    "authentication": {
      "provider": "Unauthenticated"
    }
  }
}

AppService

Доверяет заголовкам удостоверений, внедренным службой приложений Azure EasyAuth.

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

Проверяет токены JWT, выданные идентификатором Microsoft Entra.

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Custom

Проверяет маркеры JWT от сторонних поставщиков удостоверений.

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

Симулятор

Имитирует проверку подлинности для локальной разработки и тестирования.

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

Поставщик Simulator работает только в том runtime.host.modeслучаеdevelopment. DAB не запускается, если симулятор настроен в рабочем режиме.

Выбор роли

Для всех поставщиков, кроме симулятора, X-MS-API-ROLE заголовок выбирает роль, используемую из утверждений пользователя, прошедших проверку подлинности. Если опущено, запрос использует системную Authenticated роль. Дополнительные сведения об оценке ролей см. в обзоре авторизации.

JWT (среда выполнения узла проверки подлинности)

Parent Property Type Required Default
runtime.host.authentication jwt object ❌ Нет -

Конфигурация глобального веб-маркера JSON (JWT).

поддержка веб-маркеров JSON в построителе API данных.

Вложенные свойства

Parent Property Type Required Default
runtime.host.authentication.jwt audience string ✔️ Да* None
runtime.host.authentication.jwt issuer string ✔️ Да* None

audience* Оба и issuer обязательны, когда jwt объект присутствует. Сам jwt объект требуется, если поставщик имеет EntraIDзначение , AzureADили Custom.

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

Разбиение на страницы (среда выполнения)

Parent Property Type Required Default
runtime pagination object ❌ Нет -

Глобальные ограничения на страницы для конечных точек REST и GraphQL.

Вложенные свойства

Parent Property Type Required Default
runtime.pagination max-page-size int ❌ Нет 100,000
runtime.pagination default-page-size int ❌ Нет 100
runtime.pagination next-link-relative boolean ❌ Нет false

Поддерживаемые значения максимального размера страницы

Value Result
integer Поддерживается любое 32-разрядное целое число.
0 Не поддерживается.
-1 По умолчанию используется максимальное поддерживаемое значение.
< -1 Не поддерживается.

Поддерживаемые значения размера страницы по умолчанию

Value Result
integer Любое положительное целое число меньше текущего max-page-size.
0 Не поддерживается.
-1 По умолчанию используется текущий параметр max-page-size.
< -1 Не поддерживается.

Если next-link-relative это trueтак, значения разбиения nextLink на страницы используют относительные URL-адреса вместо абсолютных URL-адресов.

Value Example
false (по умолчанию) "nextLink": "https://localhost:5001/api/users?$after=..."
true "nextLink": "/api/users?$after=..."

Format

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer; default: 100000>,
      "default-page-size": <integer; default: 100>,
      "next-link-relative": <boolean; default: false>
    }
  }
}

Note

Если значение больше max-page-size, результаты будут ограничены max-page-size.

Пример: разбиение по страницам в REST

Request

GET https://localhost:5001/api/users

Полезная нагрузка ответа

{
  "value": [
    {
      "Id": 1,
      "Name": "Alice",
      "Age": 30,
      "IsAdmin": true,
      "IsMinor": false
    },
    {
      "Id": 2,
      "Name": "Bob",
      "Age": 17,
      "IsAdmin": false,
      "IsMinor": true
    }
  ],
  "nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}

Следующая страница запроса

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

Пример. Разбиение по страницам в GraphQL

Полезные данные запроса (запрос)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Полезная нагрузка ответа

{
  "data": {
    "users": {
      "items": [
        {
          "Id": 1,
          "Name": "Alice",
          "Age": 30,
          "IsAdmin": true,
          "IsMinor": false
        },
        {
          "Id": 2,
          "Name": "Bob",
          "Age": 17,
          "IsAdmin": false,
          "IsMinor": true
        }
      ],
      "hasNextPage": true,
      "endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
    }
  }
}

Следующая страница запроса

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Пример: доступ к запросам max-page-size

Используйте значение, задав max-page-size для параметра $limit REST или first (GraphQL).-1

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

Сжатие (среда выполнения)

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Parent Property Type Required Default
runtime compression object ❌ Нет -

Конфигурация сжатия http-ответа. Если этот параметр включен, DAB сжимает тела ответа, чтобы уменьшить размеры полезных данных и повысить скорость передачи.

Вложенные свойства

Parent Property Type Required Default
runtime.compression level string ❌ Нет "optimal"

Поддерживаемые значения для level

Value Description Экономия сжатия Влияние на производительность
optimal Балансирует соотношение и скорость (по умолчанию) Gzip: 90,5% / Brotli: 92.2% Умеренное использование ЦП, увеличение задержки
fastest Приоритеты скорости по отношению Gzip: 89.8% / Brotli: 91.1% Низкая загрузка ЦП, минимальная задержка
none Без сжатия 0% (базовый план: 12 673 байта) None

Заголовки HTTP клиента

Сжатие вызывается заголовком клиента Accept-Encoding . Поддерживаются алгоритмы Gzip и Brotli. Параметр level настраивает стратегию сжатия, если клиент и сервер поддерживают несколько алгоритмов.

Поддерживаемые заголовки

Заголовок HTTP Используемый алгоритм
Accept-Encoding: gzip Gzip
Accept-Encoding: br Бротли

Format

{
  "runtime": {
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    }
  }
}

Example

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

Кэш (среда выполнения)

Parent Property Type Required Default
runtime cache object ❌ Нет -

Конфигурация глобального кэша.

Вложенные свойства

Parent Property Type Required Default
runtime.cache enabled boolean ❌ Нет False
runtime.cache ttl-seconds integer ❌ Нет 5
runtime.cache level-2 object ❌ Нет -
Parent Property Type Required Default
runtime.cache.level-2 enabled boolean ❌ Нет False
runtime.cache.level-2 provider string ❌ Нет redis
runtime.cache.level-2 connection-string string ❌ Нет None
runtime.cache.level-2 partition string ❌ Нет None

Tip

Свойство уровня cache.ttl-seconds сущности по умолчанию используется для этого глобального значения.

Tip

Примеры комплексной настройки, поведения на уровне кэша и Redis см. в разделе "Реализация кэша уровня 2".

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>,
      "level-2": {
        "enabled": <boolean>,
        "provider": "redis",
        "connection-string": <string>,
        "partition": <string>
      }
    }
  }
}

Important

Если глобальный enabledfalse, отдельный уровень enabled сущности не имеет значения.

Если level-2.enabled это trueтак, DAB использует настроенный поставщик распределенного кэша в дополнение к локальному кэшу в памяти. Сущность, настроенная на уровне L1L2 кэша, сначала проверяет локальный кэш, а затем распределенный кэш перед переходом в базу данных.

Телеметрия (среда выполнения)

Parent Property Type Required Default
runtime telemetry object ❌ Нет -

Глобальная конфигурация телеметрии.

Вложенные свойства

Parent Property Type Required Default
runtime.telemetry log-level dictionary ❌ Нет None
runtime.telemetry application-insights object ❌ Нет -
runtime.telemetry open-telemetry object ❌ Нет -
runtime.telemetry azure-log-analytics object ❌ Нет -
runtime.telemetry file object ❌ Нет -

Настраивает детализацию ведения журнала для каждого пространства имен. Эта конфигурация соответствует стандартным соглашениям по ведению журнала .NET и позволяет детализировать управление, хотя предполагается, что некоторые знания о внутренних компонентах построитель API данных. Построитель API данных — это открытый исходный код: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level можно перезагрузить как в разработке, так и в рабочей среде. В настоящее время это единственное свойство, которое поддерживает горячую перезагрузку в рабочей среде.

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (телеметрия)

Parent Property Type Required Default
runtime.telemetry application-insights object ❌ Нет -

Настраивает ведение журнала в Application Insights.

Вложенные свойства

Parent Property Type Required Default
runtime.telemetry.application-insights enabled boolean ❌ Нет true
runtime.telemetry.application-insights connection-string string ✔️ Да None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetry (телеметрия)

Parent Property Type Required Default
runtime.telemetry open-telemetry object ❌ Нет -

Настраивает ведение журнала для Open Telemetry.

Вложенные свойства

Parent Property Type Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Нет true
runtime.telemetry.open-telemetry endpoint string ✔️ Да None
runtime.telemetry.open-telemetry headers string ❌ Нет None
runtime.telemetry.open-telemetry service-name string ❌ Нет "dab"
runtime.telemetry.open-telemetry exporter-protocol перечисление (grpc | httpprotobuf) ❌ Нет grpc

Несколько заголовков разделены , запятыми.

Format

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": <true> (default) | <false>,
        "endpoint": <string>,
        "headers": <string>,
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc" (default) | "httpprotobuf">
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": true,
        // a gRPC endpoint example
        "endpoint": "http://localhost:4317",
        // an HTTP/protobuf endpoint example
        "endpoint": "http://localhost:4318/v1/metrics",
        "headers": "api-key=key,other-config-value=value",
        "service-name": "dab",
      }
    }
  }
}

Дополнительные сведения о OTEL_EXPORTER_OTLP_HEADERS.

Note

gRPC (4317) быстрее и поддерживает потоковую передачу, но требует дополнительных действий по настройке. HTTP/protobuf (4318) проще и проще отлаживать, но менее эффективно.

Azure Log Analytics (телеметрия)

Parent Property Type Required Default
runtime.telemetry azure-log-analytics object ❌ Нет -

Настраивает ведение журнала в Azure Log Analytics с помощью конечной точки сбора данных. При включении DAB отправляет данные телеметрии в пакетах с настраиваемым интервалом.

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Вложенные свойства

Parent Property Type Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ Нет false
runtime.telemetry.azure-log-analytics dab-identifier string ❌ Нет "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds integer ❌ Нет 5
runtime.telemetry.azure-log-analytics auth object ✔️ Да* -

* auth является обязательным, если enabled имеет значение true.

Parent Property Type Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name string ✔️ Да* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id string ✔️ Да* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint string ✔️ Да* null

* Обязательный, если enabled имеет значение true.

  • dab-identifier— метка, переданная в Log Analytics, чтобы отличить журналы, поступающие из построителя API данных.
  • flush-interval-seconds— интервал времени (в секундах) между отправкой пакетов данных телеметрии.
  • custom-table-name— имя настраиваемой таблицы в Azure Log Analytics, в которой хранятся данные.
  • dcr-immutable-id— неизменяемый идентификатор правила сбора данных, определяющего способ сбора данных.
  • dce-endpoint— URL-адрес конечной точки сбора данных, используемый для отправки данных телеметрии.

Format

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": <true> | <false> (default),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: 5),
        "auth": {
          "custom-table-name": "<string>",
          "dcr-immutable-id": "<string>",
          "dce-endpoint": "<string>"
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "MyDabInstance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabTelemetry_CL",
          "dcr-immutable-id": "dcr-abc123def456",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Файл (телеметрия)

Parent Property Type Required Default
runtime.telemetry file object ❌ Нет -

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

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Вложенные свойства

Parent Property Type Required Default
runtime.telemetry.file enabled boolean ❌ Нет false
runtime.telemetry.file path string ✔️ Да* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval перечисление ❌ Нет "Day"
runtime.telemetry.file retained-file-count-limit integer ❌ Нет 1
runtime.telemetry.file file-size-limit-bytes integer ❌ Нет 1048576

* path является обязательным, если enabled имеет значение true.

Значения скользящего интервала

Value Description
Minute Новый файл журнала каждую минуту
Hour Новый файл журнала каждый час
Day Новый файл журнала каждый день (по умолчанию)
Month Новый файл журнала каждый месяц
Year Новый файл журнала каждый год
Infinite Никогда не развертывать новый файл

Format

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": <true> | <false> (default),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
        "retained-file-count-limit": <integer> (default: 1),
        "file-size-limit-bytes": <integer> (default: 1048576)
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": true,
        "path": "/var/log/dab/dab-telemetry.txt",
        "rolling-interval": "Hour",
        "retained-file-count-limit": 24,
        "file-size-limit-bytes": 5242880
      }
    }
  }
}

MCP (среда выполнения)

Parent Property Type Required Default
runtime mcp object ❌ Нет -

Настраивает сервер протокола контекста модели SQL (MCP), который предоставляет сущности базы данных в качестве средств MCP для агентов ИИ.

Note

Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.

Вложенные свойства

Parent Property Type Required Default
runtime.mcp enabled boolean ❌ Нет true
runtime.mcp path string ❌ Нет "/mcp"
runtime.mcp description string ❌ Нет null
runtime.mcp dml-tools логический или объект ❌ Нет true

Свойство dml-tools принимает логическое значение для включения или отключения всех инструментов или объекта для управления отдельными инструментами:

Parent Property Type Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ Нет true
runtime.mcp.dml-tools create-record boolean ❌ Нет true
runtime.mcp.dml-tools read-records boolean ❌ Нет true
runtime.mcp.dml-tools update-record boolean ❌ Нет true
runtime.mcp.dml-tools delete-record boolean ❌ Нет true
runtime.mcp.dml-tools execute-entity boolean ❌ Нет true
runtime.mcp.dml-tools aggregate-records логический или объект ❌ Нет true

Средство aggregate-records принимает логическое значение или объект с дополнительными параметрами:

Parent Property Type Required Default Диапазон
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ Нет true
runtime.mcp.dml-tools.aggregate-records query-timeout integer ❌ Нет 30 1–600 секунд

Format

{
  "runtime": {
    "mcp": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: "/mcp"),
      "description": <string>,
      "dml-tools": {
        "describe-entities": <true> | <false>,
        "create-record": <true> | <false>,
        "read-records": <true> | <false>,
        "update-record": <true> | <false>,
        "delete-record": <true> | <false>,
        "execute-entity": <true> | <false>,
        "aggregate-records": {
          "enabled": <true> | <false>,
          "query-timeout": <integer; default: 30>
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "mcp": {
      "enabled": true,
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": true,
        "execute-entity": true,
        "aggregate-records": {
          "enabled": true,
          "query-timeout": 30
        }
      }
    }
  }
}

Чтобы включить или отключить все средства DML одновременно, установите "dml-tools"true или falseотключите их.

При отключении средства на уровне среды выполнения средство никогда не отображается в ответе MCP tools/list и не может вызываться независимо от разрешений на уровне сущности. Дополнительные сведения о отдельных средствах DML см. в разделе "Язык обработки данных" (DML).

Использование интерфейса командной строки

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true

Работоспособность (среда выполнения)

Parent Property Type Required Default
runtime health object ❌ Нет -

Конфигурация конечной точки глобальной проверки работоспособности (/health).

Вложенные свойства

Parent Property Type Required Default Диапазон и заметки
runtime.health enabled boolean ❌ Нет true
runtime.health roles массив строк ✔️ Да* null *Обязательный в рабочем режиме
runtime.health cache-ttl-seconds integer ❌ Нет 5 Мин: 0
runtime.health max-query-parallelism integer ❌ Нет 4 Min: One, Max: Восемь (зажато)

Поведение в разработке и рабочей среде

Condition Поведение разработки Поведение рабочей среды
health.enabled = ложь 403 статус 403 статус
health.enabled = верно Зависит от роли Зависит от роли
roles опущен или null Отображается работоспособности 403 статус
текущая роль не в roles 403 статус 403 статус
текущая роль в roles Отображается работоспособности Отображается работоспособности
roles Включает anonymous Отображается работоспособности Отображается работоспособности

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

Если глобальный enabledfalse, отдельный уровень enabled сущности не имеет значения.

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}