docs: 确认数据库依赖关系
核心发现: 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 依赖 - 简化依赖树
This commit is contained in:
505
docs/DATABASE_DEPENDENCIES.md
Normal file
505
docs/DATABASE_DEPENDENCIES.md
Normal file
@@ -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`
|
||||
**状态**: ✅ 已确认所有数据库依赖
|
||||
Reference in New Issue
Block a user