核心发现: 1. Momentry Studio - ✅ SQLite (rusqlite): 搜索历史、书签、用户认证 - ❌ PostgreSQL (sqlx): 遗留依赖,未使用 2. MarkBase Core - ✅ SQLite: 认证数据 - ⚠️ PostgreSQL: 可选,未启用 3. Momentry Core - ✅ PostgreSQL: 核心业务数据 - ✅ Qdrant: 向量搜索 - ✅ MongoDB: 文档存储 数据库文件: - Momentry Studio: data/users/demo.sqlite - MarkBase: ~/markbase/data/auth.sqlite - Momentry Core: postgresql://localhost:5432/momentry 必需服务: - PostgreSQL 12+ (pgvector 扩展) - Qdrant 1.7+ - MongoDB 5+ 建议: - 移除 Momentry Studio 的 sqlx 依赖 - 简化依赖树
16 KiB
16 KiB
数据库依赖关系确认
生成时间: 2026-10-12
状态: ✅ 已确认所有数据库依赖
📊 数据库架构总览
Momentry Studio (前端 + Tauri)
│
├─> SQLite (rusqlite)
│ └─> 本地数据: 搜索历史、书签、用户认证
│ └─> 路径: data/users/demo.sqlite
│
└─> MarkBase Core (依赖)
│
├─> SQLite (rusqlite)
│ └─> 认证数据: 用户凭证、权限
│ └─> 路径: ~/markbase/data/auth.sqlite
│
└─> PostgreSQL (tokio-postgres) [可选]
└─> 文件元数据、共享配置 (如启用)
Momentry Core (后端 API)
│
├─> PostgreSQL (sqlx)
│ └─> 核心数据: 文件、人脸、身份、Trace
│ └─> 数据库: momentry
│ └─> 连接: postgres://accusys@localhost:5432/momentry
│
├─> Qdrant (向量数据库)
│ └─> 向量搜索: 语义搜索、人脸嵌入
│ └─> 连接: http://127.0.0.1:6333
│ └─> 集合: momentry_rule1
│
└─> MongoDB (文档数据库)
└─> 文档存储: 分析结果、大对象
└─> 连接: mongodb://localhost:27017
└─> 数据库: momentry
📝 详细说明
1. Momentry Studio
SQLite (rusqlite)
依赖:
rusqlite = { version = "0.32", features = ["bundled"] }
用途:
- ✅ 搜索历史 (
search_history表) - ✅ 书签 (
bookmarks表) - ✅ 视频标记 (
video_marks表) - ✅ 用户认证 (
app_users表)
数据库文件:
/Users/accusys/momentry_studio/data/users/demo.sqlite
表结构:
CREATE TABLE search_history (
id TEXT PRIMARY KEY,
query TEXT NOT NULL,
title TEXT NOT NULL,
chat_state TEXT,
mode TEXT DEFAULT 'keyword',
pinned INTEGER DEFAULT 0,
created_at TEXT,
updated_at TEXT
);
CREATE TABLE bookmarks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
label TEXT NOT NULL,
history_id TEXT,
created_at TEXT
);
CREATE TABLE video_marks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_uuid TEXT NOT NULL,
tag TEXT NOT NULL,
start_frame INTEGER NOT NULL,
end_frame INTEGER,
note TEXT,
created_at TEXT
);
CREATE TABLE app_users (
id TEXT PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
password_hash TEXT,
display_name TEXT,
role TEXT DEFAULT 'user',
created_at TEXT,
updated_at TEXT
);
代码位置: src-tauri/src/db.rs
PostgreSQL (sqlx) - ⚠️ 遗留依赖
依赖:
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "json"] }
状态:
- ❌ 未使用 - 通过 MarkBase Core 间接引入
- ⚠️ 建议移除 - 减少编译时间和二进制大小
原因: Momentry Studio 依赖 markbase-core,而 MarkBase Core 支持 PostgreSQL,但 Studio 本身不使用。
2. MarkBase Core
SQLite (rusqlite)
依赖:
rusqlite = { version = "0.32", features = ["bundled"] }
用途:
- ✅ 用户认证 (
auth.sqlite) - ✅ 文件凭证 (可选,每个用户独立数据库)
数据库文件:
/Users/accusys/markbase/data/auth.sqlite # 认证数据库
/Users/accusys/markbase/data/users/accusys.sqlite # 用户数据 (可选)
/Users/accusys/markbase/data/users/demo.sqlite # 用户数据 (可选)
/Users/accusys/markbase/data/users/credentials.sqlite # 凭证 (可选)
PostgreSQL (tokio-postgres) - 可选
依赖:
tokio-postgres = "0.7"
postgres = "0.19"
用途:
- ⚠️ 可选功能 - 文件共享、高级权限管理
- ❌ 当前未启用 - 使用 SQLite 替代
代码位置:
/Users/accusys/markbase/markbase-core/src/pg_client.rs/Users/accusys/markbase/markbase-core/src/provider/pg.rs
状态: 已实现但未激活,可配置启用
3. Momentry Core
PostgreSQL (sqlx)
依赖:
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "sqlite", "json", "chrono", "uuid"] }
pgvector = { version = "0.3", features = ["sqlx"] }
用途:
- ✅ 核心业务数据
- 文件信息 (
files表) - 人脸数据 (
faces表) - 身份信息 (
identities表) - Trace 数据 (
traces表) - 视频标记 (
video_marks表) - 向量搜索 (
pgvector扩展)
- 文件信息 (
数据库配置:
DATABASE_URL=postgres://accusys@localhost:5432/momentry
必需服务:
- PostgreSQL 12+ (支持 pgvector 扩展)
- 运行在
localhost:5432
Qdrant (向量数据库)
依赖:
qdrant-client = "1.7"
用途:
- ✅ 向量搜索
- 语义搜索
- 人脸嵌入向量
- 相似度匹配
配置:
QDRANT_URL=http://127.0.0.1:6333
QDRANT_API_KEY=Test3200Test3200Test3200
QDRANT_COLLECTION=momentry_rule1
必需服务:
- Qdrant 1.7+
- 运行在
http://127.0.0.1:6333
MongoDB (文档数据库)
依赖:
mongodb = { version = "2", features = ["tokio-runtime"] }
bson = { version = "2", features = ["chrono-0_4"] }
用途:
- ✅ 文档存储
- 大型分析结果
- 原始数据
- 缓存数据
配置:
MONGODB_URL=mongodb://localhost:27017
MONGODB_DATABASE=momentry
MONGODB_CACHE_ENABLED=true
必需服务:
- MongoDB 5+
- 运行在
mongodb://localhost:27017
📊 依赖关系图
┌─────────────────────────────────────────────────────────────┐
│ Momentry Studio (Tauri) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ SQLite (rusqlite) │ │
│ │ ├─ 搜索历史 │ │
│ │ ├─ 书签 │ │
│ │ ├─ 视频标记 │ │
│ │ └─ 用户认证 │ │
│ │ └─ data/users/demo.sqlite │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ PostgreSQL (sqlx) [⚠️ 遗留依赖 - 未使用] │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
│ 依赖
▼
┌─────────────────────────────────────────────────────────────┐
│ MarkBase Core │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ SQLite (rusqlite) │ │
│ │ ├─ 用户认证 │ │
│ │ └─ 文件凭证 │ │
│ │ └─ ~/markbase/data/auth.sqlite │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ PostgreSQL (tokio-postgres) [可选] │ │
│ │ └─ 文件共享、高级权限 (未启用) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Momentry Core (API) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ PostgreSQL (sqlx) │ │
│ │ ├─ 文件信息 │ │
│ │ ├─ 人脸数据 │ │
│ │ ├─ 身份信息 │ │
│ │ ├─ Trace 数据 │ │
│ │ └─ 向量搜索 (pgvector) │ │
│ │ └─ postgres://localhost:5432/momentry │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Qdrant (向量数据库) │ │
│ │ ├─ 语义搜索 │ │
│ │ └─ 人脸嵌入向量 │ │
│ │ └─ http://127.0.0.1:6333 │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ MongoDB (文档数据库) │ │
│ │ ├─ 分析结果 │ │
│ │ └─ 缓存数据 │ │
│ │ └─ mongodb://localhost:27017/momentry │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
✅ 实际使用的数据库
Momentry Studio
| 数据库 | 状态 | 用途 | 文件位置 |
|---|---|---|---|
| SQLite | ✅ 使用中 | 本地数据 | data/users/demo.sqlite |
| PostgreSQL | ❌ 未使用 | 遗留依赖 | - |
MarkBase Core
| 数据库 | 状态 | 用途 | 文件位置 |
|---|---|---|---|
| SQLite | ✅ 使用中 | 认证 | ~/markbase/data/auth.sqlite |
| PostgreSQL | ⚠️ 可选 | 高级功能 | 未启用 |
Momentry Core
| 数据库 | 状态 | 用途 | 连接 |
|---|---|---|---|
| PostgreSQL | ✅ 使用中 | 核心数据 | localhost:5432/momentry |
| Qdrant | ✅ 使用中 | 向量搜索 | localhost:6333 |
| MongoDB | ✅ 使用中 | 文档存储 | localhost:27017/momentry |
🔧 部署要求
必需服务
Momentry Studio (前端):
- ✅ SQLite (已内置,无需额外服务)
Momentry Core (后端):
- ✅ PostgreSQL 12+ (必需)
- 需要
pgvector扩展
- 需要
- ✅ Qdrant 1.7+ (必需)
- ✅ MongoDB 5+ (必需)
MarkBase Core (文件管理):
- ✅ SQLite (已内置,无需额外服务)
- ⚠️ PostgreSQL (可选,未启用)
服务启动顺序
# 1. PostgreSQL
pg_ctl start -D /usr/local/var/postgres
# 2. MongoDB
mongod --config /usr/local/etc/mongod.conf
# 3. Qdrant
qdrant
# 4. Momentry Core API
cd ~/momentry_core
./start.sh
# 5. MarkBase API
cd ~/markbase/markbase-core
./start.sh
# 6. Momentry Studio
cd ~/momentry_studio
./start.sh
📋 检查清单
开发环境
- PostgreSQL 运行中 (
localhost:5432) - Qdrant 运行中 (
localhost:6333) - MongoDB 运行中 (
localhost:27017) - SQLite 数据库文件存在
data/users/demo.sqlite~/markbase/data/auth.sqlite
生产环境
-
PostgreSQL 配置
- 创建数据库
momentry - 安装
pgvector扩展 - 配置连接池
- 设置备份策略
- 创建数据库
-
Qdrant 配置
- 创建集合
momentry_rule1 - 配置持久化存储
- 设置 API Key
- 创建集合
-
MongoDB 配置
- 创建数据库
momentry - 配置副本集 (可选)
- 设置认证 (可选)
- 创建数据库
-
SQLite 配置
- 创建数据目录
- 设置文件权限
- 配置 WAL 模式 (已默认启用)
⚠️ 注意事项
1. PostgreSQL 连接
Momentry Studio 不直接连接 PostgreSQL,但通过 markbase-core 间接依赖。
建议: 移除 Momentry Studio 的 sqlx 依赖,减少编译时间。
2. 数据库迁移
SQLite:
- 无需迁移,文件自动创建
- WAL 模式已启用,性能更好
PostgreSQL:
- 需要运行迁移脚本
- 需要
pgvector扩展
Qdrant:
- 首次启动自动创建集合
- 需要配置向量维度
3. 备份策略
SQLite:
# 备份
cp data/users/demo.sqlite data/users/demo.sqlite.backup
# 或使用 SQLite 命令
sqlite3 data/users/demo.sqlite ".backup 'demo.sqlite.backup'"
PostgreSQL:
# 备份
pg_dump -U accusys momentry > momentry_backup.sql
# 恢复
psql -U accusys momentry < momentry_backup.sql
🎯 总结
实际使用的数据库
- Momentry Studio: SQLite (本地数据)
- MarkBase Core: SQLite (认证)
- Momentry Core: PostgreSQL + Qdrant + MongoDB
遗留依赖
- Momentry Studio 的
sqlx(PostgreSQL) - 建议移除
部署复杂度
- 前端: 低 - 只需 SQLite (内置)
- 后端: 高 - 需要 PostgreSQL + Qdrant + MongoDB
文档位置: docs/DATABASE_DEPENDENCIES.md
状态: ✅ 已确认所有数据库依赖