Schema 驱动数据模型
Schema-Driven Data Model
以 Schema 为核心驱动数据定义、校验和运行时 DDL 操作
子问题
1.标量与向量字段统一管理
2.运行时 Schema 变更
3.跨语言 Schema 映射
4.Schema 对象的跨进程序列化(pickle/protobuf)
5.DDL 操作的并发控制与原子性保障
6.索引参数与字段类型的多态匹配约束
各项目的解法1 solutions
Signals
横向对比
| 维度 | zvec |
|---|---|
| Schema 定义方式 | Python 双类 FieldSchema/VectorSchema + C++ 统一 FieldSchema |
| 类型系统 | 22 种 DataType 枚举,标量 16 种 + 向量 6 种,编译时白名单校验 |
| 索引参数模型 | 多态 IndexParams 基类,4 种子类(HNSW/IVF/Flat/Invert) |
| 跨语言映射 | pybind11 双向协议 _from_core/_get_object + pickle 序列化 |
| DDL 能力 | add/drop/alter column,表达式填充 + 自动 Schema 刷新 |
| 校验策略 | 构造时全量校验:名称唯一性(跨标量向量)+ 类型白名单 |
最佳实践
1.Schema 作为单一事实来源驱动所有数据操作
2._from_core 跳过 __init__ 校验避免跨语言重复验证
3.DDL 操作后自动刷新 Schema 快照保证两层一致性
4.C++ 层用 list+map 双索引兼顾有序遍历和 O(1) 查找