2024年七大最佳免费货币转换API
Milvus Python SDK 和 API 全面介绍:利用 ORM 风格提升管理效率
背景介绍
下图展示了 SDK 与 Milvus 之间通过 gRPC 的交互流程。在这个场景中,可以将 Milvus 视为一个黑匣子,协议缓冲区则用于定义服务器接口及其携带信息的结构。因此,Milvus 黑匣子内的所有操作均由 Protocol API 进行定义。
Milvus 协议 API
Milvus Protocol API 由 milvus.proto
、common.proto
和 schema.proto
组成,这些都是后缀为 .proto
的 Protocol Buffers 文件。SDK 需要使用这些 Protocol Buffers 文件与 Milvus 进行交互,以确保其正常运行。
milvus.proto
milvus.proto
是 Milvus Protocol API 的核心,定义了所有的 RPC 接口。以下代码示例展示了 CreatePartitionRequest
接口,它包含两个字符串类型的参数:collection_name
和 partition_name
,通过这两个参数可以发起分区创建请求。
CreatePartitionRequest interface
有关详细示例,请参见 PyMilvus GitHub 存储库中第 19 行的协议示例。
通用原型
common.proto
定义了一些常见的信息类型,包括 Status
。
模式原型
schema.proto
则定义了参数中的模式,以下是 CollectionSchema
的示例。
schema.proto
milvus.proto
、common.proto
和 schema.proto
共同构成了 Milvus 的 API,涵盖所有可以通过 RPC 调用的操作。深入源码可以发现,调用像 create_index
这样的接口时,实际上涉及多个 RPC 接口,例如 describe_collection
和 describe_index
。许多对外接口是多个 RPC 接口的组合。
了解了 RPC 的行为后,可以通过组合它们为 Milvus 开发新功能。非常欢迎各位贡献者发挥想象力与创造力,为 Milvus 社区做出贡献。
PyMilvus 2.0:对象关系映射 (ORM)
对象关系映射(ORM)是指在操作本地对象时,这些操作会影响服务器上对应的对象。PyMilvus 的 ORM 风格 API 具有以下特点:
- 直接作用于对象:操作简便,直接针对对象进行。
- 隔离服务逻辑和数据访问:实现了服务逻辑与数据访问细节的分离。
- 隐藏复杂性:可以在不同的 Milvus 实例上运行相同的脚本,无需关注其部署或实现细节。
ORM 风格的 API
ORM 风格的 API 允许对 Milvus 连接进行控制。例如,可以为多个 Milvus 服务器指定别名,方便地通过别名连接或断开连接,甚至可以精确控制某些对象的连接。
ORM 风格 API 还使所有操作都可以直接对对象进行,包括集合、分区和索引。用户可以通过获取现有集合对象或创建新集合对象来操作集合。使用连接别名,可以为特定对象分配 Milvus 连接,便于在本地操作。
创建分区对象时,可以使用其父集合对象来生成分区,也可以像创建集合对象那样进行操作。这种方法同样适用于索引对象。如果分区或索引对象已存在,则可以通过其父集合对象获取它们。
总结
本文介绍了 PyMilvus 2.0 的对象关系映射(ORM)风格 API,强调了其在与 Milvus 交互时的优势。ORM 允许用户通过直接操作本地对象,简化了服务逻辑与数据访问的复杂性。通过控制 Milvus 连接,用户可以方便地管理多个服务器和对象。
通过使用集合、分区和索引的对象化操作,用户可以高效地与 Milvus 进行交互,提升了开发效率。总之,PyMilvus 的 ORM 风格 API 为开发者提供了一个灵活、直观的方式来利用 Milvus 的强大功能。