🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Aumente a taxa de transferência de leitura do banco de dados vetorial com réplicas na memória

Aumente a taxa de transferência de leitura do banco de dados vetorial com réplicas na memória

  • Engineering
August 22, 2022
Congqi Xia

Cover_image Imagem da capa

Este artigo tem a coautoria de Congqi Xia e Angela Ni.

Com o seu lançamento oficial, o Milvus 2.1 vem com muitas novas funcionalidades para proporcionar conveniência e uma melhor experiência de utilizador. Embora o conceito de réplica na memória não seja novidade no mundo das bases de dados distribuídas, é uma caraterística crítica que pode ajudá-lo a aumentar o desempenho do sistema e melhorar a disponibilidade do sistema de uma forma fácil. Portanto, esta postagem se propõe a explicar o que é a réplica na memória e por que ela é importante e, em seguida, apresenta como habilitar esse novo recurso no Milvus, um banco de dados vetorial para IA.

Ir para:

Antes de saber o que é a réplica na memória e por que ela é importante, precisamos primeiro entender alguns conceitos relevantes, incluindo grupo de réplicas, réplica de fragmento, réplica de fluxo contínuo, réplica histórica e líder de fragmento. A imagem abaixo é uma ilustração desses conceitos.

Replica_concepts Conceitos de réplica

Grupo de réplicas

Um grupo de réplicas consiste em vários nós de consulta que são responsáveis pelo tratamento de dados históricos e réplicas.

Réplica de fragmento

Uma réplica de fragmento é constituída por uma réplica de fluxo contínuo e uma réplica histórica, ambas pertencentes ao mesmo fragmento (ou seja, canal DML). Várias réplicas de fragmentos constituem um grupo de réplicas. E o número exato de réplicas de fragmentos num grupo de réplicas é determinado pelo número de fragmentos numa coleção especificada.

Réplica de fluxo contínuo

Uma réplica de fluxo contínuo contém todos os segmentos crescentes do mesmo canal DML. Tecnicamente falando, uma réplica de streaming deve ser servida por apenas um nó de consulta numa réplica.

Réplica histórica

Uma réplica histórica contém todos os segmentos encerrados do mesmo canal DML. Os segmentos fechados de uma réplica histórica podem ser distribuídos em vários nós de consulta dentro do mesmo grupo de réplicas.

Líder de fragmento

Um líder de fragmento é o nó de consulta que serve a réplica de fluxo numa réplica de fragmento.

O que é a réplica na memória?

A ativação de réplicas na memória permite-lhe carregar dados numa coleção em vários nós de consulta para que possa tirar partido de recursos extra de CPU e memória. Esta funcionalidade é muito útil se tiver um conjunto de dados relativamente pequeno mas pretender aumentar o débito de leitura e melhorar a utilização dos recursos de hardware.

Por enquanto, o banco de dados vetorial Milvus mantém uma réplica para cada segmento na memória. No entanto, com réplicas na memória, é possível ter várias réplicas de um segmento em diferentes nós de consulta. Isto significa que se um nó de consulta estiver a efetuar uma pesquisa num segmento, um novo pedido de pesquisa que chegue pode ser atribuído a outro nó de consulta inativo, uma vez que este nó de consulta tem uma réplica exatamente do mesmo segmento.

Além disso, se tivermos várias réplicas na memória, podemos lidar melhor com a situação em que um nó de consulta falha. Antes, era preciso esperar que o segmento fosse recarregado para continuar a pesquisa em outro nó de consulta. No entanto, com a replicação em memória, o pedido de pesquisa pode ser reenviado para um novo nó de consulta imediatamente, sem ter de recarregar os dados novamente.

Replication Replicação

Porque é que as réplicas na memória são importantes?

Uma das vantagens mais significativas da ativação de réplicas na memória é o aumento do QPS (consulta por segundo) e da taxa de transferência globais. Além disso, podem ser mantidas várias réplicas de segmentos e o sistema é mais resiliente face a uma falha.

Ativar as réplicas na memória na base de dados vetorial Milvus

A ativação da nova funcionalidade de réplicas na memória é simples na base de dados vetorial Milvus. Basta especificar o número de réplicas que pretende ao carregar uma coleção (ou seja, ao chamar collection.load()).

No exemplo de tutorial que se segue, supomos que já criou uma coleção com o nome "book" e inseriu dados na mesma. Em seguida, pode executar o seguinte comando para criar duas réplicas ao carregar uma coleção de livros.

from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.load(replica_number=2) # load collection as 2 replicas

Pode modificar de forma flexível o número de réplicas no código de exemplo acima para melhor se adequar ao cenário da sua aplicação. Em seguida, pode efetuar diretamente uma pesquisa ou consulta de semelhança de vectores em várias réplicas sem executar quaisquer comandos adicionais. No entanto, deve ser observado que o número máximo de réplicas permitido é limitado pela quantidade total de memória utilizável para executar os nós de consulta. Se o número de réplicas que especificar exceder os limites da memória utilizável, será devolvido um erro durante o carregamento de dados.

Também pode verificar as informações das réplicas na memória que criou, executando collection.get_replicas(). Serão devolvidas as informações dos grupos de réplicas e os nós de consulta e fragmentos correspondentes. A seguir, um exemplo da saída.

Replica groups:
- 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]>]>

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:

Like the article? Spread the word

Continue Lendo