配置数据源
data-source 是配置文件的核心块之一,它告诉引擎连接哪个数据库、用哪种方式连接。每个配置文件必须有一个 data-source(使用 data-source-files 时每个子文件也都需要)。
基本配置
json
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONNECTION_STRING')"
}
}| 字段 | 必需 | 说明 |
|---|---|---|
database-type | 是 | 数据库类型:mssql、postgresql、mysql |
connection-string | 是 | 数据库连接字符串,支持 @env() 引用环境变量 |
options | 否 | 数据库特定选项 |
连接字符串
SQL Server
text
Server=<host>,<port>;Database=<db>;User Id=<user>;Password=<pwd>;TrustServerCertificate=true;Encrypt=true;关键参数:
TrustServerCertificate=true:开发环境跳过证书验证。生产环境应使用正式证书。Encrypt=true:启用传输加密。SQL Server 默认要求加密连接。MultipleActiveResultSets=true:启用多活动结果集(MARS),GraphQL 多重变更和并发查询需要此选项。
PostgreSQL
text
Host=<host>;Port=5432;Database=<db>;User ID=<user>;Password=<pwd>;MySQL
text
Server=<host>;Port=3306;Database=<db>;User=<user>;Password=<pwd>;连接字符串可以使用 @env('VAR_NAME') 语法引用环境变量,避免在配置文件中写入明文密码。
options 选项
options 字段用于数据库特有的行为配置。不同数据库类型支持的选项不同:
SQL Server 选项
json
{
"data-source": {
"database-type": "mssql",
"connection-string": "@env('SQL_CONN_STR')",
"options": {
"set-session-context": true
}
}
}| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
set-session-context | boolean | false | 将 JWT 令牌中的声明注入数据库会话上下文,行级安全策略中可通过 SESSION_CONTEXT 读取 |
PostgreSQL 选项
json
{
"data-source": {
"database-type": "postgresql",
"connection-string": "@env('PG_CONN_STR')",
"options": {
"set-session-context": false
}
}
}| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
set-session-context | boolean | false | 是否启用会话上下文(PostgreSQL 使用 pg_settings 实现) |
MySQL 选项
MySQL 数据源当前无特有 options 配置项,options 字段可省略。
读取配置文件
dab init 创建初始配置,dab configure 可以在已有配置基础上修改字段:
bash
# 修改数据库类型
dab configure --data-source.database-type "postgresql"
# 修改连接字符串
dab configure --data-source.connection-string "@env('PROD_CONN_STR')"也可以直接编辑 JSON 文件,两种方式等效。
数据源健康检查
可以为数据源配置独立的健康检查:
json
{
"data-source": {
"health": {
"enabled": true,
"name": "main-db",
"threshold-ms": 1000
}
}
}| 字段 | 说明 | 默认值 |
|---|---|---|
enabled | 是否启用健康检查 | true |
name | 在 /health 响应中的标识符 | 使用 database-type 值(如 mssql) |
threshold-ms | 查询超时阈值(毫秒) | 1000 |
