Files
momentry_studio/docs/DATABASE_DEPENDENCIES.md
Momentry Studio 1bd4b9215f 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 依赖
- 简化依赖树
2026-10-12 14:41:57 +08:00

16 KiB
Raw Blame History

数据库依赖关系确认

生成时间: 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

🎯 总结

实际使用的数据库

  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
状态: ✅ 已确认所有数据库依赖