Milvus(3):数据库、Collections说明

news2025/4/25 16:57:10

1 数据库

        Milvus 在集合之上引入了数据库层,为管理和组织数据提供了更有效的方式,同时支持多租户。

1.1 什么是数据库

        在 Milvus 中,数据库是组织和管理数据的逻辑单元。为了提高数据安全性并实现多租户,你可以创建多个数据库,为不同的应用程序或租户从逻辑上隔离数据。例如,创建一个数据库用于存储用户 A 的数据,另一个数据库用于存储用户 B 的数据。

1.2 创建数据库

        可以使用 Milvus RESTful API 或 SDK 以编程方式创建数据。

from pymilvus import MilvusClient

client = MilvusClient(
    uri="http://localhost:19530",
    token="root:Milvus" # 用户名:密码
)

client.create_database(
    db_name="my_database_1"
)

        还可以在创建数据库时为其设置属性。下面的示例设置了数据库的副本数量。

client.create_database(
    db_name="my_database_2",
    properties={
        "database.replica.number": 3
    }
)

1.3 查看数据库

        您可以使用 Milvus RESTful API 或 SDK 列出所有现有数据库并查看其详细信息。

# 列出所有现有数据库
client.list_databases()

# 输出
# ['default', 'my_database_1', 'my_database_2']

# 检查数据库详细信息
client.describe_database(
    db_name="default"
)

# 输出
# {"name": "default"}

1.4 管理数据库属性

        每个数据库都有自己的属性,您可以在创建数据库时设置数据库属性,也可以更改和删除任何现有数据库的属性。下表列出了可能的数据库属性。

属性名称

类型

属性描述

database.replica.number

整数

指定数据库的副本数量。

database.resource_groups

字符串

与指定数据库关联的资源组名称,以通用分隔列表形式显示。

database.diskQuota.mb

整数

指定数据库的最大磁盘空间大小(MB)。

database.max.collections

整数

指定数据库中允许的最大 Collections 数量。

database.force.deny.writing

布尔

是否强制指定的数据库拒绝写操作。

database.force.deny.reading

布尔

是否强制指定的数据库拒绝读取操作。

1.4.1 更改数据库属性

        可以通过以下方式更改现有数据库的属性。下面的示例限制了可以在数据库中创建的 Collections 数量。

client.alter_database_properties(
    db_name: "my_database_1",
    properties: {
        "database.max.collections": 10
    }
)

1.4.2 删除数据库属性

        还可以通过如下方式删除数据库属性来重置该属性。下面的示例删除了可以在数据库中创建的 Collection 数量限制。

client.drop_database_properties(
    db_name: "my_database_1",
    property_keys: [
        "database.max.collections"
    ]
)

1.5 使用数据库

        可以在不断开与 Milvus 连接的情况下从一个数据库切换到另一个数据库。RESTful API 不支持此操作符。

client.use_database(
    db_name="my_database_2"
)

1.6 删除数据库

        一旦不再需要数据库,就可以删除数据库。请注意

  • 不能丢弃默认数据库。
  • 在丢弃数据库之前,需要先丢弃数据库中的所有 Collections。
client.drop_database(
    db_name="my_database_2"
)

        你可以使用 Milvus RESTful API 或 SDK 以编程方式创建数据。

2 Collections 说明

        在 Milvus 中,您可以创建多个 Collections 来管理数据,并将数据作为实体插入到 Collections 中。Collections 和实体类似于关系数据库中的表和记录。本页将帮助你了解集合和相关概念。

        Collection 是一个二维表,具有固定的列和变化的行。每列代表一个字段,每行代表一个实体。下图显示了一个有 8 列和 6 个实体的 Collection。

2.1 Schema 和字段

        在描述一个对象时,我们通常会提到它的属性,如大小、重量和位置。您可以将这些属性用作 Collection 中的字段。每个字段都有各种约束属性,例如向量字段的数据类型和维度。通过创建字段并定义其顺序,可以形成一个 Collections Schema。应在要插入的实体中包含所有 Schema 定义的字段。

2.2 主键和 AutoId

        与关系数据库中的主字段类似,Collection 也有一个主字段,用于将实体与其他实体区分开来。主字段中的每个值都是全局唯一的,并与一个特定实体相对应。

        如上图所示,名为id的字段是主字段,第一个 ID0对应一个名为 "冠状病毒的死亡率并不重要"的实体。不会有其他实体的主字段是 0。

        主字段只接受整数或字符串。插入实体时,默认情况下应包含主字段值。但是,如果在创建 Collections 时启用了AutoId,Milvus 将在插入数据时生成这些值。在这种情况下,请从要插入的实体中排除主字段值。

2.3 索引

        为特定字段创建索引可提高搜索效率。建议您为服务所依赖的所有字段创建索引,其中向量字段的索引是强制性的。

2.4 实体

        实体是指在 Collections 中共享同一组字段的数据记录。同一行中所有字段的值构成一个实体。您可以根据需要在 Collections 中插入任意数量的实体。但是,随着实体数量的增加,所占用的内存大小也会增加,从而影响搜索性能。

2.5 加载和释放

        加载集合是在集合中进行相似性搜索和查询的前提。加载 Collections 时,Milvus 会将所有索引文件和每个字段中的原始数据加载到内存中,以便快速响应搜索和查询。搜索和查询是内存密集型操作。为节约成本,建议您释放当前不使用的 Collections。

2.6 搜索和查询

        创建索引并加载 Collections 后,就可以通过输入一个或多个查询向量开始相似性搜索。例如,当接收到搜索请求中携带的查询向量表示时,Milvus 会使用指定的度量类型来衡量查询向量与目标 Collections 中的向量之间的相似性,然后再返回与查询语义相似的向量。

        还可以在搜索和查询中加入元数据过滤功能,以提高搜索结果的相关性。请注意,元数据过滤条件在查询中是必须的,但在搜索中是可选的。

  • 基本 ANN 搜索
  • 过滤搜索
  • 范围搜索
  • 分组搜索
  • 混合搜索
  • 搜索迭代器
  • 查询
  • 全文搜索
  • 文本匹配

        此外,Milvus 还提供了提高搜索性能和效率的增强功能。这些增强功能默认为禁用,您可以根据自己的服务要求启用和使用它们。它们是

  • 使用 Partition Key
  • 使用 mmap
  • 集群压缩

2.7 分区

        分区是集合的子集,与其父集合共享相同的字段集,每个分区包含一个实体子集。通过将实体分配到不同的分区,可以创建实体组。你可以在特定分区中进行搜索和查询,让 Milvus 忽略其他分区中的实体,提高搜索效率。

2.8 分片

分片是 Collections 的水平切片。每个分片对应一个数据输入通道。每个 Collections 默认都有一个分片。创建 Collections 时,可以根据预期吞吐量和要插入 Collections 的数据量设置适当的分片数量。

2.9 别名

        可以为您的集合创建别名。一个集合可以有多个别名,但集合不能共享一个别名。收到针对某个 Collection 的请求后,Milvus 会根据所提供的名称定位该 Collection。如果所提供名称的 Collection 不存在,Milvus 会继续定位所提供名称的别名。你可以使用 Collections 别名来调整代码以适应不同的情况。

2.10 函数

        您可以为 Milvus 设置函数,以便在创建 Collections 时派生字段。例如,全文搜索功能使用用户定义函数从特定 varchar 字段推导出稀疏向量字段。

2.11 一致性级别

        分布式数据库系统通常使用一致性级别来定义跨数据节点和副本的数据相同性。在创建 Collections 或在 Collections 中进行相似性搜索时,可以分别设置不同的一致性级别。适用的一致性级别有强有限制的不稳定性会话最终

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342572.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Hive入门】Hive数据模型与存储格式深度解析:从理论到实践的最佳选择

目录 1 Hive数据模型全景图 2 Hive存储架构解析 3 存储格式对比矩阵 4 存储格式选择决策树 5 ORC文件结构剖析 6 Parquet与ORC技术对比 7 最佳实践指南 7.1 建表示例模板 7.2 性能优化 8 总结 1 Hive数据模型全景图 模型核心组件解析: Database&#xff1…

2025能源网络安全大赛CTF --- Crypto wp

文章目录 前言simpleSigninNumberTheory 前言 大半年以来写的第一篇文章!!! simpleSignin 题目: from Crypto.Util.number import * from gmpy2 import * import osflag bxxx p next_prime(bytes_to_long(os.urandom(128))…

Godot开发2D冒险游戏——第二节:主角光环整起来!

变量的作用域 全局变量,局部变量,导出变量(可以在检查器当中快速查看) 为玩家添加移动动画 现在游戏的玩家还只是在滑行,我们需要再添加玩家每个方向上的移动效果 删除原先的Item节点,创建一个动画精灵…

.NETCore部署流程

资料下载:https://download.csdn.net/download/ly1h1/90684992 1.下载托管包托管捆绑包 | Microsoft Learn,下载后点击安装即可。 2.安装IIS 3.打开VS2022,新建项目,选择ASP.NET Core Web API 5.Program修改启动项,取…

数据结构——二叉树,堆

目录 1.树 1.1树的概念 1.2树的结构 2.二叉树 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 2.4.1顺序结构 2.4.2链式结构 3.堆 3.1堆的概念 3.2堆的分类 3.3堆的实现 3.3.1初始化 3.3.2堆的构建 3.3.3堆的销毁 3.3.4堆的插入 3.3.5…

龙虎榜——20250424

指数依然是震荡走势,接下来两天调整的概率较大 2025年4月24日龙虎榜行业方向分析 一、核心主线方向 化工(新能源材料产能集中) • 代表标的:红宝丽(环氧丙烷/锂电材料)、中欣氟材(氟化工&…

CentOS 7 安装教程

准备: 软件:VMware Workstation 镜像文件:CentOS-7-x86_64-bin-DVD1.iso (附:教程较为详细,注释较多,故将操作的选项进行了加粗字体显示。) 1、文件–新建虚拟机–自定义 2、硬盘…

Python+AI提示词出租车出行轨迹预测:梯度提升GBR、KNN、LR回归、随机森林融合及贝叶斯概率异常检测研究

原文链接:tecdat.cn/?p41693 在当今数字化浪潮席卷全球的时代,城市交通领域的海量数据如同蕴藏着无限价值的宝藏等待挖掘。作为数据科学家,我们肩负着从复杂数据中提取关键信息、构建有效模型以助力决策的使命(点击文末“阅读原文…

直接偏好优化(Direct Preference Optimization,DPO):论文与源码解析

简介 虽然大规模无监督语言模型(LMs)学习了广泛的世界知识和一些推理技能,但由于它们是基于完全无监督训练,仍很难控制其行为。 微调无监督LM使其对齐偏好,尽管大规模无监督的语言模型(LMs)能…

UE5.2+VarjoXR3,Lumen、GI、Nanite无效的两种解决方案

一、问题描述 最近在做一个基于VarjoXR3的VR项目开发,UE版本使用的是5.2,效果采用Lumen。首先在PC版本中调整了一个效果,但是当切换到VR运行后,就发现Lumen效果就丢失了。但是测试的其他的头显就没有问题,比如Quest。…

PH热榜 | 2025-04-24

1. Peek 标语:AI个人财务教练,帮你做出明智的财务决策。 介绍:Peek的人工智能助手能够主动进行财务检查,分析你的消费模式,并以一种细腻而积极的方式帮助你改善习惯。完全没有评判,也没有负罪感。就像为你…

相机雷达外参标定算法调研

0. 简介 相机与激光雷达的外参标定是自动驾驶、机器人等领域的基础工作。精准的标定不仅有助于提高数据融合的效果,还能提升算法的整体性能。随着技术的发展,许多研究者和公司致力于开发高效的标定工具和算法,本文将对无目标标定和有目标标定…

网络原理 - 7(TCP - 4)

目录 6. 拥塞控制 7. 延时应答 8. 捎带应答 9. 面向字节流 10. 异常情况 总结: 6. 拥塞控制 虽然 TCP 有了滑动窗口这个大杀器,就能够高效可靠的发送大量的数据,但是如果在刚开始阶段就发送大量的数据,仍然可能引起大量的…

idea连接远程服务器kafka

一、idea插件安装 首先idea插件市场搜索“kafka”进行插件安装 二、kafka链接配置 1、检查服务器kafka配置 配置链接前需要保证远程服务器的kafka配置里边有配置好服务器IP,以及开放好kafka端口9092(如果有修改 过端口的开放对应端口就好) …

Linux操作系统--基础I/O(上)

目录 1.回顾C文件接口 stdin、stdout、stderr 2.系统文件I/O 3.接口介绍 4.open函数返回值 5.文件描述符fd 5.1 0&1&2 1.回顾C文件接口 hello.c写文件 #include<stdio.h> #include<string.h>int main() {FILE *fp fopen("myfile","…

weibo_har鸿蒙微博分享,单例二次封装,鸿蒙微博,微博登录

weibo_har鸿蒙微博分享&#xff0c;单例二次封装&#xff0c;鸿蒙微博 HarmonyOS 5.0.3 Beta2 SDK&#xff0c;原样包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) &#x1f3c6;简介 zyl/weibo_har是微博封装使用&#xff0c;支持原生core使用 &a…

【MySQL数据库入门到精通-06 DCL操作】

一、DCL DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访 问权限。 二、管理用户 1.查询与创建用户 代码如下&#xff08;示例&#xff09;&#xff1a; -- DCL 管理用户 -- 1.查询用户 use mysql; select *from user;-…

无感字符编码原址转换术——系统内存(Mermaid文本图表版/DeepSeek)

安全便捷无依赖&#xff0c;不学就会无感觉。 笔记模板由python脚本于2025-04-24 20:00:05创建&#xff0c;本篇笔记适合正在研究字符串编码制式的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 P…

第七部分:向量数据库和索引策略

什么是矢量数据库&#xff1f; 简单来说&#xff0c;向量数据库是一种专门化的数据库&#xff0c;旨在优化存储和检索以高维向量形式表示的文本。 为什么这些数据库对RAG至关重要&#xff1f;因为向量表示能够在大规模文档库中进行高效的基于相似性的搜索&#xff0c;根据用户…

查看MAC 地址以及简单了解

MAC地址 简介 MAC 地址&#xff08;Media Access Control Address&#xff09;&#xff0c;直译为媒体访问控制地址&#xff0c;又称局域网地址&#xff08;LAN Address&#xff09;、MAC 地址、以太网地址&#xff08;Ethernet Address&#xff09;、硬件地址&#xff08;Ha…