可插拔存储架构
Pluggable Storage Architecture
通过 Protocol 接口和 Factory 模式实现存储后端热切换,支持多租户作用域隔离
子问题
1.存储接口抽象(Protocol)
2.Factory 按配置实例化
3.动态类型组合实现作用域
4.向量索引与元数据存储分离
5.ORM 模型按作用域缓存避免重复构建
6.DDL 双模式(create/validate)适配开发与生产
7.共享 DatabaseState 缓存层统一后端数据访问接口
各项目的解法1 solutions
Signals
横向对比
| 维度 | memU |
|---|---|
| 接口定义 | 四个 @runtime_checkable Protocol(Database + 4 Repo),结构化子类型 |
| 后端数量 | 三后端:InMemory / PostgreSQL+pgvector / SQLite |
| 作用域机制 | merge_scope_model 运行时 type() 动态合并 Pydantic 模型,自动注入作用域字段 |
| 向量索引分离 | metadata_store 与 vector_index 独立配置,支持 bruteforce/pgvector 切换 |
| 懒导入策略 | 非默认后端在 Factory elif 分支内 import,避免依赖污染 |
| 缓存层 | DatabaseState dataclass 统一内存缓存,所有后端共享 dict 接口 |
| DDL管理 | 双模式 create/validate + Alembic 增量迁移 |
| ORM模型缓存 | _MODEL_CACHE 按 scope_model 类型缓存 SQLAlchemy 模型,避免重复构建 |
最佳实践
1.用 Protocol 而非 ABC 定义接口
2.懒导入非默认后端依赖
3.build_table_model 自动为作用域字段创建数据库索引
4.merge_scope_model 前置字段冲突检测防止运行时错误
5.model_post_init 自动推导向量索引配置减少用户配置负担