Compreender o nível de coerência na base de dados de vectores Milvus
Imagem da capa
Este artigo foi escrito por Chenglong Li e transcrito por Angela Ni.
Já alguma vez se interrogou porque é que, por vezes, os dados que eliminou da base de dados vetorial Mlivus continuam a aparecer nos resultados da pesquisa?
Uma razão muito provável é não ter definido o nível de consistência adequado para a sua aplicação. O nível de consistência numa base de dados vetorial distribuída é fundamental, pois determina em que ponto uma determinada escrita de dados pode ser lida pelo sistema.
Por conseguinte, este artigo visa desmistificar o conceito de consistência e aprofundar os níveis de consistência suportados pela base de dados vetorial Milvus.
Saltar para:
O que é a consistência
Antes de começarmos, precisamos de clarificar a conotação de consistência neste artigo, uma vez que a palavra "consistência" é um termo sobrecarregado na indústria informática. A consistência numa base de dados distribuída refere-se especificamente à propriedade que garante que cada nó ou réplica tem a mesma visão dos dados quando escreve ou lê dados num determinado momento. Por conseguinte, estamos a falar de consistência como no teorema CAP.
Para servir grandes empresas em linha no mundo moderno, é comum adotar várias réplicas. Por exemplo, o gigante do comércio eletrónico em linha Amazon replica as suas encomendas ou dados SKU em vários centros de dados, zonas ou mesmo países para garantir uma elevada disponibilidade do sistema em caso de falha ou avaria do mesmo. Isto coloca um desafio ao sistema - a consistência dos dados em várias réplicas. Sem consistência, é muito provável que o item eliminado do seu carrinho de compras da Amazon reapareça, causando uma experiência muito má para o utilizador.
Por isso, precisamos de diferentes níveis de consistência de dados para diferentes aplicações. Felizmente, Milvus, uma base de dados para IA, oferece flexibilidade no nível de consistência e pode definir o nível de consistência que melhor se adequa à sua aplicação.
Consistência na base de dados vetorial Milvus
O conceito de nível de consistência foi introduzido pela primeira vez com o lançamento do Milvus 2.0. A versão 1.0 do Milvus não era uma base de dados vetorial distribuída, pelo que não envolvia níveis de consistência ajustáveis. O Milvus 1.0 descarrega os dados a cada segundo, o que significa que os novos dados são quase imediatamente visíveis após a sua inserção e que o Milvus lê a vista de dados mais actualizada no momento exato em que chega um pedido de pesquisa ou consulta de semelhanças vectoriais.
No entanto, o Milvus foi refacturado na sua versão 2.0 e o Milvus 2.0 é uma base de dados vetorial distribuída baseada num mecanismo pub-sub. O teorema PACELC indica que um sistema distribuído tem de fazer um compromisso entre consistência, disponibilidade e latência. Além disso, diferentes níveis de consistência servem para diferentes cenários. Por isso, o conceito de consistência foi introduzido no Milvus 2.0 e suporta o ajuste de níveis de consistência.
Quatro níveis de consistência na base de dados vetorial Milvus
O Milvus suporta quatro níveis de consistência: forte, estanqueidade limitada, sessão e eventual. E um utilizador do Milvus pode especificar o nível de consistência ao criar uma coleção ou ao efetuar uma pesquisa ou consulta de semelhança de vectores. Esta secção continuará a explicar as diferenças entre estes quatro níveis de consistência e para que cenários são mais adequados.
Forte
Forte é o nível de consistência mais elevado e mais rigoroso. Garante que os utilizadores podem ler a versão mais recente dos dados.
Forte
De acordo com o teorema PACELC, se o nível de consistência for definido como forte, a latência aumentará. Por conseguinte, recomendamos que escolha uma consistência forte durante os testes funcionais para garantir a exatidão dos resultados dos testes. Além disso, a consistência forte também é mais adequada para aplicações que exigem rigorosamente a consistência dos dados à custa da velocidade de pesquisa. Um exemplo pode ser um sistema financeiro em linha que lida com pagamentos de encomendas e faturação.
Estabilidade limitada
A obsolescência limitada, como o próprio nome sugere, permite a inconsistência dos dados durante um determinado período de tempo. No entanto, geralmente, os dados são sempre globalmente consistentes fora desse período de tempo.
Staleness_limitado
A estanquicidade limitada é adequada para cenários que necessitam de controlar a latência da pesquisa e podem aceitar a invisibilidade esporádica dos dados. Por exemplo, nos sistemas de recomendação, como os motores de recomendação de vídeo, a invisibilidade dos dados tem, de vez em quando, um impacto muito pequeno na taxa de recuperação global, mas pode aumentar significativamente o desempenho do sistema de recomendação. Um exemplo pode ser uma aplicação para acompanhar o estado das suas encomendas em linha.
Sessão
A sessão garante que todas as escritas de dados podem ser imediatamente percepcionadas em leituras durante a mesma sessão. Por outras palavras, quando escreve dados através de um cliente, os dados recentemente inseridos tornam-se instantaneamente pesquisáveis.
Sessão
Recomendamos a escolha da sessão como nível de consistência para os cenários em que a exigência de consistência dos dados na mesma sessão é elevada. Um exemplo pode ser a eliminação dos dados de uma entrada de livro do sistema da biblioteca e, após confirmação da eliminação e atualização da página (uma sessão diferente), o livro já não deve estar visível nos resultados da pesquisa.
Eventual
Não existe uma ordem garantida de leituras e escritas, e as réplicas acabam por convergir para o mesmo estado, uma vez que não são efectuadas mais operações de escrita. Sob consistência eventual, as réplicas começam a trabalhar nos pedidos de leitura com os valores actualizados mais recentes. A consistência eventual é o nível mais fraco entre os quatro.
Eventual
No entanto, de acordo com o teorema PACELC, a latência da pesquisa pode ser tremendamente reduzida com o sacrifício da consistência. Portanto, a consistência eventual é mais adequada para cenários que não exigem muito da consistência dos dados, mas requerem um desempenho de pesquisa extremamente rápido. Um exemplo pode ser a recuperação de críticas e classificações de produtos da Amazon com consistência eventual.
Nota final
Assim, voltando à questão levantada no início deste artigo, os dados eliminados ainda são devolvidos como resultados de pesquisa porque o utilizador não escolheu o nível de consistência adequado. O valor predefinido para o nível de consistência é bounded staleness (Bounded
) na base de dados vetorial Milvus. Por conseguinte, a leitura dos dados pode atrasar-se e o Milvus pode ler a vista de dados antes de o utilizador efetuar operações de eliminação durante uma pesquisa ou consulta por semelhança. No entanto, este problema é simples de resolver. Basta ajustar o nível de consistência ao criar uma coleção ou ao efetuar uma pesquisa ou consulta de semelhanças vectoriais. Simples!
Na próxima publicação, vamos revelar o mecanismo subjacente e explicar como a base de dados vetorial Milvus atinge diferentes níveis de consistência. Fique atento!
O que vem a seguir
Com o lançamento oficial do Milvus 2.1, preparámos uma série de blogues que apresentam as novas funcionalidades. Leia mais nesta série de blogues:
- Como utilizar dados de cadeias de caracteres para potenciar as suas aplicações de pesquisa por semelhança
- Usando o Embedded Milvus para instalar e executar instantaneamente o Milvus com Python
- Aumente a taxa de transferência de leitura do seu banco de dados vetorial com réplicas na memória
- Entendendo o nível de consistência no banco de dados vetorial do Milvus
- Entendendo o nível de consistência no banco de dados vetorial do Milvus (Parte II)
- Como o banco de dados vetorial Milvus garante a segurança dos dados?
- O que é a consistência
- Quatro níveis de consistência na base de dados vetorial Milvus
- Nota final
- O que vem a seguir
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