问题域/PD-474

可插拔存储后端

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 的读取路径