从 Milvus 迁移 DashVector
本文档演示如何从 Milvus 将 Collection 数据全量导出,并适配迁移至 DashVector。方案的主要流程包括:
首先,升级 Milvus 版本,目前 Milvus 只有在最新版本(v.2.3.x)中支持全量导出
其次,将 Milvus Collection 的 Schema 信息和数据信息导出到具体的文件中
最后,以导出的文件作为输入来构建 DashVector Collection 并数据导入
下面,将详细阐述迁移方案的具体操作细节。
1. Milvus 升级 2.3.x 版本
本文中,我们将借助 Milvus 的query_iterator来全量导出数据(query接口无法导出完整数据),由于该接口目前只在 v2.3.x 版本中支持,所以在导出数据前,需要先将 Milvus 版本升级到该版本。Milvus 版本升级的详细操作参考Milvus用户文档。
注意:在进行 Milvus Upgrade 时需要注意数据的备份安全问题。
2. Milvus 全量数据导出
数据的导出包含 Schema 以及数据记录,Schema 主要用于完备地定义 Collection,数据记录对应于每个 Partition 下的全量数据,这两部分涵盖了需要导出的全部数据。下文展示如何将单个 Milvus Collection 全量导出。
2.1. Schema 导出
DashVector 和 Milvus 在 Schema 的设计上有一些区别,DashVector 向用户透出的接口非常简单,Milvus 则更加详尽。从 Milvus 迁移 DashVector 时会涉及到部分 Schema 参数的删除(例如 Collection 的 index_param 参数),只会保留 DashVector 构建 Collection 的必要参数,以下为一个 Schema 转换的简单示例(其中,Collection 已有的数据参考Milvus示例代码写入)。
python 示例:
JSON 示例:
2.2. Data 导出
DashVector 和 Milvus 在设计上都有 Partition 的概念,所以向量以及其他数据进行导出时,需要注意按照 Partition 粒度进行导出。此外,DashVector 的主键类型为 str,而 Milvus 设计其为自定义类型,所以在导出时需要考虑主键类型的转换。以下为一个基于query_iterator接口导出的简单代码示例:
3. 将数据导入 DashVector
3.1. 创建 Cluster
参考 DashVector 官方用户手册构建 Cluster。
3.2. 创建 Collection
根据 2.1 章节中导出的 Schema 信息以及参考 Dashvector 官方用户手册来创建 Collection。下面的示例代码会根据 2.1 章节中导出的 schema.json 来创建一个 DashVector 的 Collection。
3.3. 导入 Data
根据 2.2 章节中导出的数据以及参考 DashVector 官方用户手册来批量插入 Doc。下面的示例代码会依次解析各个 Partition 导出的数据,然后依次创建 DashVector 下的 Partition 并导入数据。
版权声明: 本文为 InfoQ 作者【DashVector】的原创文章。
原文链接:【http://xie.infoq.cn/article/bc1a9390a52b3ab7edaf4a81a】。文章转载请联系作者。
评论