服务运行机制
数据墙DBW 是一个配置驱动的运行时引擎。它读取 JSON 配置文件,连接数据源,将数据库对象映射为实体,然后根据配置启用 REST、GraphQL 和 MCP 能力。整个过程不产生代码文件,不修改数据库结构。
启动流程
当执行 dab start 或容器启动时,引擎按以下顺序完成初始化:
- 加载配置:读取 JSON 配置文件,解析
$schema、data-source、runtime、entities等顶层字段。 - 连接数据库:根据
data-source中的连接信息建立数据库连接池。 - 构建实体模型:根据
entities和autoentities配置,将数据库对象映射为内部实体模型。 - 启用能力:根据
runtime配置启动 REST 端点、GraphQL 端点、MCP 服务、缓存、健康检查等模块。 - 进入监听:服务就绪,开始接收流量。
请求处理生命周期
请求进入运行时后,无论来自 REST、GraphQL 还是 MCP,都经过统一的处理链:
- 协议解析:识别请求的协议类型和目标实体。
- 身份识别:从请求头(JWT Token、
X-MS-API-ROLE等)提取身份信息,确定当前请求的角色。 - 权限检查:验证该角色在目标实体上是否有执行当前操作的权限。
- 字段与策略应用:根据权限配置,过滤不可见字段,追加行级数据策略。
- 查询生成:将 API 请求参数(筛选、排序、分页)转换为数据库查询语句。
- 数据库执行:执行查询或存储过程调用。
- 响应格式化:按协议格式(JSON、GraphQL 响应体)返回结果。
REST、GraphQL、MCP 共享步骤 2-5 的权限和策略引擎,确保多协议间安全规则一致。
运行时配置
runtime 配置块控制服务的全局行为:
| 配置区域 | 控制内容 |
|---|---|
pagination | 默认和最大分页大小 |
rest | REST 端点启用、路径前缀、请求体校验 |
graphql | GraphQL 启用、路径、内省、查询深度限制 |
host | 运行模式(开发/生产)、CORS、响应大小限制 |
cache | 全局缓存开关和默认 TTL |
mcp | MCP 服务启用和工具开关 |
telemetry | 日志级别和遥测配置 |
health | 全局健康检查配置 |
大多数设置都有合理的默认值,最小配置只需要 data-source 和 entities,不写 runtime 也能正常运行。
