【向量检索引擎】Collection · Partition · Segment · Channel:Growing 到 Sealed 的状态机
内容提要
本文介绍了Milvus的四层坐标系,包括Collection、Partition、Segment和Channel。Collection是用户可见的向量表,Partition用于数据隔离。Channel与Streaming Node绑定,支持水平扩展写入。Segment分为Growing和Sealed,Growing可变且支持实时查询,Sealed不可变用于历史检索。Growing转为Sealed的过程称为flush,数据通过handoff转移至Query Node。整体架构强调实时性与历史数据管理。
关键要点
-
Collection是用户可见的向量表,包含schema,是insert和search的默认作用域。
-
Partition用于按业务键隔离数据,影响数据在channel和segment上的组织方式。
-
Channel与Streaming Node绑定,支持水平扩展写入,确保操作顺序不变。
-
Segment分为Growing和Sealed,Growing是可变的,支持实时查询,Sealed是不可变的,用于历史检索。
-
Growing转为Sealed的过程称为flush,数据通过handoff转移至Query Node。
-
一次写入的流程包括客户端insert、Proxy校验、写入WAL、异步追加到Growing Segment等步骤。
-
一次查询的流程涉及多个Growing和Sealed的候选归并,而不是单次调用。
-
Growing/Sealed的二分结构支持动态更新与历史数据管理,适应不同的查询需求。
延伸解读
四层坐标系的意义
Milvus的四层坐标系(Collection、Partition、Segment、Channel)为向量数据管理提供了清晰的逻辑结构。Collection作为用户可见的向量表,确保了数据的组织和检索效率。Partition则通过数据隔离提升了系统的灵活性,适应不同业务需求。理解这些层次有助于开发者更好地设计和优化数据存储方案。
Growing与Sealed的动态管理
Growing和Sealed的二分结构使得Milvus能够高效处理实时数据和历史数据。Growing支持实时查询,而Sealed则用于历史检索。Flush过程的管理对于确保数据一致性和查询性能至关重要。开发者需关注Growing转为Sealed的时机,以优化系统性能和资源利用。
Channel的扩展性与一致性
Channel与Streaming Node的绑定关系确保了Milvus在写入时的顺序与一致性。通过增加shard和Streaming Node,系统能够实现水平扩展,提升写入性能。理解这一机制对于处理高并发写入场景至关重要,尤其是在数据量快速增长的情况下。
延伸问答
什么是Collection在Milvus中的作用?
Collection是用户可见的向量表,包含schema,是insert和search的默认作用域。
Partition在数据管理中有什么重要性?
Partition用于按业务键隔离数据,影响数据在channel和segment上的组织方式。
Growing和Sealed的Segment有什么区别?
Growing是可变的,支持实时查询;Sealed是不可变的,用于历史检索。
如何将Growing状态的Segment转变为Sealed?
Growing转为Sealed的过程称为flush,数据通过handoff转移至Query Node。
Channel在Milvus中是如何工作的?
Channel与Streaming Node绑定,支持水平扩展写入,确保操作顺序不变。
一次写入的流程是怎样的?
一次写入包括客户端insert、Proxy校验、写入WAL、异步追加到Growing Segment等步骤。