如何使用内存中副本提高矢量数据库的读取吞吐量

译者 | 李睿

审校 | 孙淑娟

在正式发布之后,Milvus 2.1增加了许多新功能,例如内存副本、支持字符串数据类型、嵌入式Milvus、可调一致性、用户身份验证和传输中的加密,以提供便利和更好的用户体验。虽然内存中副本的概念对于分布式数据库来说并不新鲜,但它是一个关键功能,可以帮助用户轻松提高系统性能、提高数据库读取吞吐量,并提高硬件资源的利用率。

因此,本文首先解释了内存中的副本是什么以及为什么它很重要的原因,然后介绍了如何在人工智能的矢量数据库Milvus中启用这一新功能。  

与内存中副本相关的概念  

在了解内存中副本是什么以及为什么这么重要之前,需要先了解一些相关概念,其中包括副本组、分片副本、流副本、历史副本和分片领导者。下图是这些概念的说明。  

副本概念  

(1)副本组  

副本组由负责处理历史数据和副本的多个查询节点组成。更具体地说,Milvus向量数据库中的查询节点检索增量日志数据,并通过订阅日志代理、从对象存储中加载历史数据以及在向量和标量数据之间运行混合搜索,将其转变成为不断增长的片段。

(2)分片副本  

一个分片副本由一个流副本和一个历史副本组成,它们都属于同一个分片(即数据操作语言通道,在Milvus中缩写为DML通道)。多个分片副本组成一个副本组。并且副本组中的分片副本的确切数量由指定集合中的分片数量决定。  

(3)流副本  

流副本包含来自同一DML通道的所有不断增长的段。不断增长的段不断接收新插入的数据,直到它被密封。从技术上讲,一个流副本应该由一个副本中的一个查询节点提供服务。  

(4)历史副本 

历史副本包含来自同一DML通道的所有密封段。密封段不再接收任何新数据,并将被刷新到对象存储中,将新数据插入到新创建的增长段中。一个历史副本的密封段可以分布在同一副本组内的多个查询节点上。  

(5)分片领导者  

分片领导者是为分片副本中的流式副本提供服务的查询节点。  

什么是内存副本?  

启用内存中副本允许用户将数据加载到多个查询节点上的集合中,以便可以利用额外的CPU和内存资源。换句话说,当在集合中加载数据并指定要将其作为两个副本加载时,最终将在两个查询节点上拥有两个数据副本。如果有一个相对较小的数据集,但希望增加读取吞吐量,并提高硬件资源的利用率,则内存中副本的功能非常有用。  

在默认情况下,Milvus矢量数据库目前在内存中为每个段保存一个副本。但是,使用内存中的副本,用户可以在不同的查询节点上对一个段进行多次复制。这意味着如果一个查询节点正在对某个段进行搜索,则可以将传入的新搜索请求分配给另一个空闲查询节点,因为该查询节点具有完全相同的段的复制。其好处是不必再次重新加载数据。用户无需执行任何操作,空闲查询节点会自动进行搜索或查询,因为该查询节点已经复制并接收了数据。  

此外,如果有多个内存中的副本,可以更好地应对查询节点崩溃的情况。如果没有内存中的副本,则必须等待段重新加载才能继续并在另一个查询节点上搜索。但是,通过内存复制,可以立即将搜索请求重新发送到新的查询节点,而无需再次重新加载数据,如下图所示: 

内存中的副本  

为什么内存中的副本很重要?  

启用内存中副本的最显著好处之一是整体QPS(每秒查询数)和吞吐量的增加。如果在使用Milvus矢量数据库时启用了内存中的副本,将能够看到系统性能的巨大飞跃。此外,使用内存中的副本,可以维护多个段副本,并且系统在面对故障转移时更具弹性,就像上面的示例一样。  

在Milvus矢量数据库中启用内存中的副本  

在Milvus矢量数据库中启用内存中副本的新功能很容易。需要做的只是在加载集合时指定所需的副本数量(即调用collection.load( ))。  

在下面的教程中,将使用包含书籍信息的集合的示例。假设已经创建了一个名为“book”的集合,并将数据插入其中。然后,可以指定在加载集合数据时要创建的副本数。下面的示例代码将集合加载为两个副本。  

frompymilvusimportCollection
collection=Collection("book") # Getanexistingcollection.
collection.load(replica_number=2) # loadcollectionas2replicas

用户可以灵活修改上述示例代码中的副本数,以最适合应用场景。然后可以直接对多个副本进行向量相似性搜索或查询,而无需运行任何额外的命令。但是,应该注意,允许的最大副本数受到运行查询节点的可用内存总量的限制。如果指定的副本数量超过可用内存的限制,则在数据加载期间将返回错误。

用户还可以通过运行collection.get_replicas()检查其创建的内存中副本的信息。将返回副本组的信息以及相应的查询节点和分片。以下是输出示例:  

Replicagroups:
-Group: <group_id:435309823872729305>, <group_nodes:(21, 20)>, <shards:[Shard: <channel_name:milvus-zong-rootcoord-dml_27_435367661874184193v0>, <shard_leader:21>, <shard_nodes:[21]>, Shard: <channel_name:milvus-zong-rootcoord-dml_28_435367661874184193v1>, <shard_leader:20>, <shard_nodes:[20, 21]>]>
-Group: <group_id:435309823872729304>, <group_nodes:(25,)>, <shards:[Shard: <channel_name:milvus-zong-rootcoord-dml_28_435367661874184193v1>, <shard_leader:25>, <shard_nodes:[25]>, Shard: <channel_name:milvus-zong-rootcoord-dml_27_435367661874184193v0>, <shard_leader:25>, <shard_nodes:[25]>]>

原文标题:​​Increase Your Vector Database Read Throughput with In-Memory Replicas​​​,作者:Angela Ni​

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/236407.html<

(0)
管理的头像管理
上一篇2025-04-22 00:15
下一篇 2025-04-22 00:16

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注