可插拔存储后端
Pluggable Storage Backend
通过 Repository+Factory 模式抽象存储层,支持按需切换数据库后端
子问题
1.Repository 接口抽象
2.Factory 按 provider 构建
3.向量索引独立抽象
4.Schema 迁移管理
5.Scope Model 动态注入实现多租户字段隔离
6.惰性导入隔离未使用后端的依赖
7.DDL 双模式管理(自动建表 vs 仅校验)
各项目的解法1 solutions
Signals
横向对比
| 维度 | memU |
|---|---|
| 接口抽象 | Python Protocol(runtime_checkable),4 Repo + 1 Database 门面 |
| 后端种类 | inmemory / postgres+pgvector / sqlite,三后端 Factory 分发 |
| 向量索引 | bruteforce(numpy argpartition O(n))与 pgvector 原生 SQL 双轨 |
| Scope 隔离 | merge_scope_model 运行时动态注入用户字段到 Pydantic/SQLModel |
| 迁移管理 | Alembic + DDL 双模式(create 自动建表 / validate 仅校验) |
| 依赖隔离 | 惰性 import,未使用后端无需安装对应依赖(pgvector/sqlmodel) |
| 缓存策略 | 共享 DatabaseState dataclass,写入后同步更新内存 dict 缓存 |
最佳实践
1.将向量索引与元数据存储分离,允许独立选择最优后端
2.用 runtime_checkable Protocol 替代 ABC,实现结构化子类型无需继承
3.DatabaseConfig.model_post_init 自动推导向量后端,减少配置负担
4.共享 DatabaseState 缓存层统一 inmemory/postgres/sqlite 的读取路径