跳到主要内容

从 PostgreSQL 迁移至 Zilliz Cloud

PostgreSQL 是一个功能强大且开源的对象关系数据库管理系统,以其卓越的可扩展性、数据完整性和高性能而受到广泛认可。通过使用 pgvector 插件,PostgreSQL 增强了其存储和管理向量数据的能力。

如果您拥有安装了 pgvector 的 PostgreSQL 数据库,无论是本地部署还是云托管,均可将其无缝迁移至 Zilliz Cloud 集群。迁移过程包括与现有源数据库建立连接,并将数据从源表复制到 Zilliz Cloud 上相应的目标 collection。

注意事项

  • 当前支持迁移的 PostgreSQL 数据类型包括:vector, text/varchar/date/time/json, bigint, integer, smallint, double precision, real, boolean, array。如果您的表中存在不支持的数据类型字段,可以选择不迁移这些字段或提交工单。有关 PostgreSQL 数据类型如何映射到 Zilliz Cloud 的详细信息,请参阅字段映射

  • 为确保兼容性,目标 Collection 中的 Auto ID 将被禁用,且无法修改。

  • 每次迁移仅允许从每个源表中选择一个向量字段。

  • 每次迁移仅支持选择单个源 PostgreSQL 数据库。如果您有多个源数据库中,可以创建多个迁移任务。

开始前

  • 源 PostgreSQL 数据库必须能够通过公网访问。

  • 您需要拥有组织管理员或项目管理员的角色。如果您没有相应的权限,请联系您的 Zilliz Cloud 管理员。

从 PostgreSQL 迁移至 Zilliz Cloud

zh_migrate_from_pgvector

您可以将源数据迁移到任何版本类型的 Zilliz Cloud 集群,只要其计算单元(CU)大小能够满足源数据的存储需求。

  1. 登录 Zilliz Cloud 控制台

  2. 进入目标项目,选择数据迁移 > PostgreSQL

  3. 连接至数据源步骤中,填入源 PostgreSQL 数据库的 endpoint,提供与数据库关联的用户名和密码,然后点击下一步

    📘说明

    有关连接信息的详细信息,请参阅 Connecting to the Database

  4. 选择迁移来源和目标步骤中,配置源数据库和目标 Zilliz Cloud 集群的设置,然后点击下一步

    📘说明

    从 PostgreSQL 选择的待迁移的表中必须包含一个向量字段。

  5. 配置 Schema 步骤中:

    1. 验证 PostgreSQL 数据与 Zilliz Cloud 数据类型之间的映射。Zilliz Cloud 默认映射数据,您可以查看相关映射并进行必要的调整。目前,您可以重命名字段,但不支持更改字段数据类型。

    2. 高级设置中配置动态列Partition Key。更多信息请参考开启动态字段使用 Partition Key

    3. 目标 Collection 名称和描述中,自定义目标 Collection 的名称和描述。Collection 名称在每个集群中必须唯一。如果名称与现有 Collection 重复,请重命名 Collection。

  6. 点击迁移

查看迁移进度

生成迁移任务后,您可前往任务中心查看任务状态和进度。如果迁移任务的状态从进行中变更为成功,则代表迁移成功。

📘说明

迁移完成后,请验证目标集群中的 collection 和 entity 数量是否与数据源一致。如果发现不一致,请删除缺失 entity 的 collection 并重新进行迁移。

view_migration_progress_cn

取消迁移任务

如果迁移过程遇到任何问题,您可以采取以下步骤进行故障排除并恢复迁移:

  1. 任务中心页面,取消失败的迁移任务。

  2. 操作列点击查看详情以访问日志信息。

字段映射

下表详细说明了 PostgreSQL 中的字段如何映射到 Zilliz Cloud 的 Collection 中。

PostgreSQL 字段

Zilliz Cloud 字段

描述

vector

FloatVector

向量维度与源索引中的向量字段维度相同。您可以在 L2IP 之间指定一个度量类型。

text/varchar/date/time/json

VarChar

通过 Max Length 指定最大数据长度,有效值为 1 到 65535 之间。如果任何字符串超过了最大长度限制,迁移过程将会报错。

bigint

Int64

-

integer

Int32

-

smallint

int16

-

double precision

Double

-

real

Float

-

boolean

Bool

-

array

array

-