Milvus的数据处理流程

前言

本文详细介绍一下milvus的数据插入,索引构建和数据查询的实现细节

数据插入

在milvus里面,我们可以对每个集合设置多个分片(shard),每个分片都有对应的虚拟通道(vchannel).从下面的图中我们可以看到,milvus给日志代理的每个vchannel都分配了一个物理channel(pchannel)。每个进来的插入/删除请求通过主键的哈希值被路由到对应的分片。

因为milvus没有复杂的事务能力,所以DML请求的有效性验证被前移到了代理。代理需要为每个插入/删除请求从TSO(timestamp oracle)获取一个时间戳,它是与根协调器共存的定时模块.时间戳将会决定数据请求的有序处理,旧的时间戳数据会被新的重写。代理从数据协调者批量检索信息,包括实体的分段和主键,以提高整体吞吐量并避免中心节点负担过重。

DML操作和DDL操作都会被写入日志序列,只是因为DDL操作是低频发生的,所以它仅仅被分配到一个channel里面。

Vchannel维护在底层日志代理节点中。每个channel都是物理隔离的,并且只能被一个节点使用。当数据摄入速率达到瓶颈时,考虑两个事情:日志代理节点是否过载了并需要扩容,是否有足够的分片来为每个节点做负载均衡。

### 将Milvus数据库中的数据导出为JSON文件 对于希望将Milvus数据库的数据导出为JSON格式的需求,具体方法取决于所使用的Milvus版本。 #### 使用命令行工具进行数据导出 针对较新版本的Milvus Lite,提供了一种简便的方法来实现这一目标。通过内置的命令行工具可以直接将所需数据转换并保存成JSON文件形式,这不仅简化了操作流程还提高了跨不同部署环境间传输数据的可能性[^1]。 ```bash milvus_cli export --collection my_collection --output /path/to/output.json ``` 此命令会把名为`my_collection`集合内的全部记录提取出来,并按照指定路径存储为`.json`结尾的文件。 #### 利用query_iterator接口完成全面数据获取 然而,在某些特定情况下,比如面对更大规模的数据集或是更复杂的应用场景时,则可能需要用到更加专业的手段——即采用`query_iterator`迭代器来进行逐条读取直至遍历整个库表的内容为止。值得注意的是这种方法仅适用于2.3.x系列以上的发行版;因此在此之前或许有必要先行确认当前系统的兼容情况,并考虑适时更新至最新稳定版本以便获得最佳体验和支持[^2]。 一旦完成了上述准备工作之后,就可以编写一段简单的Python脚本来调用API从而逐步检索每一条目最终汇总形成完整的JSON结构: ```python from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection connections.connect() # Define schema and load collection fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) ] schema = CollectionSchema(fields) collection_name = "example_collection" collection = Collection(name=collection_name, schema=schema) data_list = [] for result in collection.query_iterator(): data_list.append(result) with open('/path/to/exported_data.json', 'w') as f: json.dump(data_list, f) ``` 这段代码展示了如何连接到本地或远程服务器上的Milvus实例,定义好待处理的目标表格后利用循环机制不断拉取新的批次直到结束条件满足位置,最后再统一写入外部磁盘之中成为可供后续分析使用的标准化文本资源。 #### 对于Zilliz Cloud用户而言 如果正在使用由官方提供的托管服务解决方案-Zilliz Cloud的话,那么一切将会变得更加简单快捷。只需登录管理后台界面找到对应项目下的“迁移”选项卡就能看到清晰明了的操作指引帮助顺利完成整个过程而无需额外安装任何软件组件或者担心底层架构层面的技术细节问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值