了解 Milvus 向量数据库中的一致性水平
封面图片
您是否想过,为什么有时从 Mlivus 向量数据库中删除的数据仍然会出现在搜索结果中?
一个很可能的原因是,您没有为自己的应用程序设置适当的一致性级别。分布式向量数据库中的一致性级别至关重要,因为它决定了系统在哪一点上可以读取特定的数据写入。
因此,本文旨在揭开一致性概念的神秘面纱,并深入探讨 Milvus 向量数据库支持的一致性级别。
跳转到
什么是一致性
在开始讨论之前,我们首先需要澄清本文中一致性的内涵,因为 "一致性 "一词在计算机行业中是一个过载的术语。分布式数据库中的一致性特指确保每个节点或副本在给定时间写入或读取数据时对数据有相同看法的属性。因此,我们在这里讨论的是CAP 定理中的一致性。
在现代世界中,为了服务于大规模的在线业务,通常会采用多个副本。例如,在线电子商务巨头亚马逊在多个数据中心、地区甚至国家复制其订单或 SKU 数据,以确保在系统崩溃或故障时系统的高可用性。这就给系统带来了一个挑战--多个副本之间的数据一致性。如果没有一致性,亚马逊购物车中被删除的商品很可能会重新出现,造成非常糟糕的用户体验。
因此,我们需要为不同的应用提供不同的数据一致性级别。幸运的是,Milvus 作为一款人工智能数据库,提供了灵活的一致性级别,您可以设置最适合自己应用的一致性级别。
Milvus 向量数据库中的一致性
一致性级别的概念是在 Milvus 2.0 发布时首次提出的。Milvus 1.0 版本不是分布式向量数据库,因此我们当时没有涉及可调整的一致性级别。Milvus 1.0 每秒刷新一次数据,这意味着新数据插入后几乎立即可见,而且当向量相似性搜索或查询请求到来时,Milvus 会在准确的时间点读取最新的数据视图。
不过,Milvus 在 2.0 版本中进行了重构,Milvus 2.0 是基于 pub-sub 机制的分布式向量数据库。PACELC定理指出,分布式系统必须在一致性、可用性和延迟之间进行权衡。此外,不同级别的一致性适用于不同的应用场景。因此,Milvus 2.0引入了一致性的概念,并支持一致性级别的调整。
Milvus 向量数据库的四级一致性
Milvus 支持四种级别的一致性:强一致性、有界滞后性、会话一致性和最终一致性。而 Milvus 用户可以在创建 Collections或进行向量相似性搜索或查询时指定一致性级别。本节将继续解释这四种一致性级别有何不同,以及它们最适合哪种情况。
强
强是最高、最严格的一致性级别。它确保用户可以读取最新版本的数据。
强
根据 PACELC 定理,如果将一致性级别设置为强,延迟会增加。因此,我们建议在功能测试时选择强一致性,以确保测试结果的准确性。强一致性也最适合那些以牺牲搜索速度为代价、对数据一致性有严格要求的应用。处理订单付款和账单的在线财务系统就是一个例子。
有界滞后
有界僵化,顾名思义,允许数据在一定时间内不一致。不过,一般来说,在这段时间之外,数据始终是全局一致的。
有界滞后
有界滞后性适用于需要控制搜索延迟并能接受零星数据不可见的场景。例如,在视频推荐引擎等推荐系统中,偶尔的数据不可见对总体召回率的影响确实很小,但却能显著提升推荐系统的性能。一个例子是用于跟踪在线订单状态的应用程序。
会话
会话确保所有数据写入都能在同一会话中立即被读取。换句话说,当你通过一个客户端写入数据时,新插入的数据会立即成为可搜索的数据。
会话
我们建议在对同一会话中数据一致性要求较高的情况下选择会话作为一致性级别。例如,从图书馆系统中删除图书条目的数据,在确认删除并刷新页面(不同的会话)后,该图书在搜索结果中应该不再可见。
最终
读取和写入的顺序没有保证,在不再进行写操作的情况下,副本最终会收敛到相同的状态。在最终一致性下,副本会使用最新更新的值开始处理读取请求。最终一致性是四种一致性中最弱的一种。
最终 一致性
然而,根据 PACELC 定理,牺牲一致性可以大大缩短搜索延迟。因此,最终一致性最适用于对数据一致性要求不高但需要极快搜索性能的场景。使用最终一致性检索亚马逊产品的评论和评级就是一个例子。
尾注
回到本文开头提出的问题,由于用户没有选择适当的一致性级别,删除的数据仍会作为搜索结果返回。在 milvus 向量数据库中,一致性级别的默认值是有界滞后(Bounded
)。因此,数据读取可能会滞后,Milvus 可能会碰巧在您进行相似性搜索或查询时进行删除操作之前读取数据视图。不过,这个问题很容易解决。您只需在创建 Collections 或进行向量相似性搜索或查询时调整一致性级别即可。很简单!
在下一篇文章中,我们将揭开其背后的机制,并解释 Milvus 向量数据库如何实现不同级别的一致性。敬请期待!
下一步
随着 Milvus 2.1 的正式发布,我们准备了一系列介绍新功能的博客。请阅读本系列博客中的更多内容:
- 什么是一致性
- Milvus 向量数据库的四级一致性
- 尾注
- 下一步
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word