Files
taiji-AI-PAD/Docs/database-usage.md
T
2025-12-24 12:33:54 +00:00

3.2 KiB
Raw Blame History

数据库使用梳理

数据服务概览

  • PostgreSQL:docker-compose 中提供主关系型数据库(服务名 postgres,端口 5432),mcp-server 默认使用;model-gateway 通过 LiteLLM 也指向同一实例。
  • SQLite(回退):仅 mcp-server 支持的开发/测试回退存储,默认路径 services/mcp-server/data/mcp_fallback.db。
  • Redis:docker-compose 中提供缓存/队列状态存储(服务名 redis,端口 6379),mcp-server 与 data-ingestion 广泛用作缓存、注册表和短期状态。

各服务与数据库对应

mcp-server(核心业务)

  • 关系型数据库(PostgreSQL/SQLite 回退):
    • ORM 模型定义:用户、Agent、工具、会话、执行记录、计费、审计等实体位于 services/mcp-server/models.py。
    • 初始化/种子:启动时创建表并插入默认管理员与示例工具,见 services/mcp-server/database.py 中 init_db/create_initial_data。
    • 运维辅助:定期清理过期执行与会话、健康检查、备份(pg_dump 或 SQLite 文件复制)、简单迁移与优化逻辑,同样在 services/mcp-server/database.py。
    • 业务写入:Agent CRUD 等接口通过依赖注入的 AsyncSession 写入关系库,例如 services/mcp-server/app/routes/agents.py 的创建/查询。
  • Redis:
    • Agent 缓存:agents 路由把 Agent 卡片写入/读取 redis setex,减少数据库读取。
    • MCP 协议状态:mcp_protocol.py 用 Redis 保存工具定义(tool:)、资源定义(resource:)、Agent 元数据(agent:*)及 Agent 授权工具/资源集合(agent:{id}:tools/resources),并在工具/资源列表与调用时读取校验。
    • 会话与工具执行:执行事件、工具注册等短期状态通过 Redis/NATS 协同,metrics 路由也用 Redis 连接状态指标。

data-ingestion(数据接入)

  • 关系型数据库:配置项提供 database_url,但当前代码未使用 ORM 或 SQL 读写。
  • Redis:
    • OpenAPI 解析缓存:openapi_parser.py 按 URL md5 key(openapi:spec:*)缓存解析结果 7 天。
    • RapidAPI 调用缓存:rapidapi_client.py 缓存搜索结果、端点同步数据(rapidapi:endpoint:*、rapidapi:endpoints 集合、分类集合)。
    • 工具注册表:tool_generator.py 将生成的工具定义持久在 Redis(tool:{name},tools:registry、tools:category:* 集合),并被 app/tasks/tool_generation.py 统计。
    • 运行时:服务启动时建立 Redis 连接并用于工具数量指标、APILLAMA 处理缓存等,见 app/lifecycle.py。

model-gateway(LiteLLM 网关)

  • PostgreSQL:config/litellm.yaml 的 general_settings.database_url 指向 postgres,用于 LiteLLM 的内部持久化(请求记录/鉴权等)。
  • Redis:同配置文件中 redis_host/port,供 LiteLLM 缓存与限流。

其他/可选服务

  • docker-compose 中注释掉的 agent-registry、billing-engine 也配置了 PostgreSQL 与 Redis(启用后共用同一实例)。

部署与运行要点

  • docker-compose.yml 将数据库凭据注入各 Python/Go 服务;mcp-server 仍可通过环境变量切换到 SQLite 回退。
  • 目前除 mcp-server 与 LiteLLM 外,无其他服务写入关系库;Redis 是跨服务共享的缓存与注册表中心。