From 1bd4b9215f2dd5befea635f7ed299dd10c086560 Mon Sep 17 00:00:00 2001 From: Momentry Studio Date: Mon, 12 Oct 2026 14:41:57 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=A1=AE=E8=AE=A4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E4=BE=9D=E8=B5=96=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 核心发现: 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 依赖 - 简化依赖树 --- docs/DATABASE_DEPENDENCIES.md | 505 ++++++++++++++++++++++++++++++++++ 1 file changed, 505 insertions(+) create mode 100644 docs/DATABASE_DEPENDENCIES.md diff --git a/docs/DATABASE_DEPENDENCIES.md b/docs/DATABASE_DEPENDENCIES.md new file mode 100644 index 0000000..3e672d8 --- /dev/null +++ b/docs/DATABASE_DEPENDENCIES.md @@ -0,0 +1,505 @@ +# 数据库依赖关系确认 + +**生成时间**: 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) + +**依赖**: +```toml +rusqlite = { version = "0.32", features = ["bundled"] } +``` + +**用途**: +- ✅ **搜索历史** (`search_history` 表) +- ✅ **书签** (`bookmarks` 表) +- ✅ **视频标记** (`video_marks` 表) +- ✅ **用户认证** (`app_users` 表) + +**数据库文件**: +``` +/Users/accusys/momentry_studio/data/users/demo.sqlite +``` + +**表结构**: +```sql +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) - ⚠️ 遗留依赖 + +**依赖**: +```toml +sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "json"] } +``` + +**状态**: +- ❌ **未使用** - 通过 MarkBase Core 间接引入 +- ⚠️ **建议移除** - 减少编译时间和二进制大小 + +**原因**: Momentry Studio 依赖 `markbase-core`,而 MarkBase Core 支持 PostgreSQL,但 Studio 本身不使用。 + +--- + +### 2. MarkBase Core + +#### SQLite (rusqlite) + +**依赖**: +```toml +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) - 可选 + +**依赖**: +```toml +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) + +**依赖**: +```toml +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` 扩展) + +**数据库配置**: +```bash +DATABASE_URL=postgres://accusys@localhost:5432/momentry +``` + +**必需服务**: +- PostgreSQL 12+ (支持 pgvector 扩展) +- 运行在 `localhost:5432` + +--- + +#### Qdrant (向量数据库) + +**依赖**: +```toml +qdrant-client = "1.7" +``` + +**用途**: +- ✅ **向量搜索** + - 语义搜索 + - 人脸嵌入向量 + - 相似度匹配 + +**配置**: +```bash +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 (文档数据库) + +**依赖**: +```toml +mongodb = { version = "2", features = ["tokio-runtime"] } +bson = { version = "2", features = ["chrono-0_4"] } +``` + +**用途**: +- ✅ **文档存储** + - 大型分析结果 + - 原始数据 + - 缓存数据 + +**配置**: +```bash +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 (可选,未启用) + +--- + +### 服务启动顺序 + +```bash +# 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 +``` + +--- + +## 📋 检查清单 + +### 开发环境 + +- [x] PostgreSQL 运行中 (`localhost:5432`) +- [x] Qdrant 运行中 (`localhost:6333`) +- [x] MongoDB 运行中 (`localhost:27017`) +- [x] SQLite 数据库文件存在 + - [x] `data/users/demo.sqlite` + - [x] `~/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**: +```bash +# 备份 +cp data/users/demo.sqlite data/users/demo.sqlite.backup + +# 或使用 SQLite 命令 +sqlite3 data/users/demo.sqlite ".backup 'demo.sqlite.backup'" +``` + +**PostgreSQL**: +```bash +# 备份 +pg_dump -U accusys momentry > momentry_backup.sql + +# 恢复 +psql -U accusys momentry < momentry_backup.sql +``` + +--- + +## 🎯 总结 + +### 实际使用的数据库 + +1. **Momentry Studio**: SQLite (本地数据) +2. **MarkBase Core**: SQLite (认证) +3. **Momentry Core**: PostgreSQL + Qdrant + MongoDB + +### 遗留依赖 + +- Momentry Studio 的 `sqlx` (PostgreSQL) - 建议移除 + +### 部署复杂度 + +- **前端**: 低 - 只需 SQLite (内置) +- **后端**: 高 - 需要 PostgreSQL + Qdrant + MongoDB + +--- + +**文档位置**: `docs/DATABASE_DEPENDENCIES.md` +**状态**: ✅ 已确认所有数据库依赖 \ No newline at end of file