Estratégias multi-tenancy
Em muitos casos de utilização, os programadores pretendem executar um cluster Milvus e servir vários inquilinos, tais como um par de equipas de produtos ou milhões de utilizadores finais. Este guia explica algumas estratégias diferentes para alcançar o multi-tenancy no Milvus.
O Milvus foi concebido para suportar o multi-tenancy ao nível da base de dados, coleção ou partição. O objetivo do multi-tenancy é separar os dados e os recursos uns dos outros. A implementação de multi-tenancy a diferentes níveis pode atingir diferentes graus de isolamento, mas também envolve diferentes despesas. Explicamos de seguida as suas vantagens e desvantagens.
Multitenancy orientado para a base de dados
Desde a versão 2.2.9 do Milvus, é possível criar múltiplas bases de dados num único cluster Milvus. Esta funcionalidade permite obter um multi-tenancy orientado para a base de dados, atribuindo uma base de dados a cada inquilino, para que estes possam criar as suas próprias colecções. Esta abordagem proporciona o melhor isolamento de dados e recursos para os inquilinos, mas está limitada a 64 bases de dados num cluster, no máximo.
Multitenancy orientado para colecções
Existem duas formas possíveis de conseguir um multi-tenancy orientado para colecções.
Uma coleção para todos os inquilinos
A utilização de uma única coleção para implementar o multilocatário, adicionando um campo de inquilino para distinguir entre inquilinos, é uma opção simples. Ao efetuar pesquisas ANN para um locatário específico, adicione uma expressão de filtro para filtrar todas as entidades que pertencem a outros locatários. Esta é a forma mais simples de alcançar o multi-tenancy. No entanto, tenha em atenção que o desempenho do filtro pode tornar-se o ponto de estrangulamento das pesquisas ANN. Para melhorar o desempenho da pesquisa, pode otimizar com o multi-tenancy orientado para a partição abaixo.
Uma coleção por inquilino
Outra abordagem consiste em criar uma coleção para cada inquilino para armazenar os seus próprios dados, em vez de armazenar os dados de todos os inquilinos numa única coleção. Isso proporciona melhor isolamento de dados e desempenho de consulta. No entanto, não se esqueça de que esta abordagem requer mais recursos na programação e está limitada a 10.000 colecções num cluster, no máximo.
Multilocação orientada para partições
Há duas maneiras de obter multilocação orientada por partição:
Uma partição por inquilino
Gerir uma única coleção é muito mais fácil do que gerir várias colecções. Em vez de criar várias colecções, considere atribuir uma partição a cada locatário para obter um isolamento de dados e uma gestão de memória flexíveis. O desempenho de pesquisa do multilocatário orientado para a partição é muito melhor do que o multilocatário orientado para a coleção. No entanto, tenha em atenção que o número de inquilinos da coleção não deve exceder o número máximo de partições que uma coleção pode conter.
Multilocação baseada em chaves de partição
O Milvus 2.2.9 introduz uma nova funcionalidade chamada chave de partição. Aquando da criação de uma coleção, nomeie um campo de inquilino e torne-o no campo de chave de partição. Milvus irá armazenar entidades numa partição de acordo com o valor hash do campo chave da partição. Ao efetuar pesquisas ANN, o Milvus apenas pesquisa a partição que contém a chave de partição. Isto reduzirá largamente o âmbito da pesquisa, obtendo assim um melhor desempenho do que sem a chave de partição.