Aumente a taxa de transferência de leitura do banco de dados vetorial com réplicas na memória
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:
Conceitos relacionados com a réplica na memória
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.
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.
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:
- 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 do Milvus garante a segurança dos dados?
- Conceitos relacionados com a réplica na memória
- O que é a réplica na memória?
- Porque é que as réplicas na memória são importantes?
- Ativar as réplicas na memória na base de dados vetorial Milvus
- 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