Estratégias de multilocação
À medida que o ChatGPT ganha popularidade, mais programadores estão a criar os seus próprios serviços SaaS utilizando a pilha CVP (ChatGPT, Vetor Database, Prompt). Este guia explica como obter multilocação no Milvus, um dos bancos de dados vetoriais mais usados no mundo, para acompanhar essa tendência.
O multilocatário é uma arquitetura em que uma única instância do Milvus serve vários locatários. A forma mais simples de distinguir os utilizadores é separando os seus dados e recursos dos dos outros. Cada locatário tem os seus próprios recursos dedicados ou partilha recursos com outros para gerir objectos Milvus como bases de dados, colecções e partições. Com base nestes objectos, existem métodos correspondentes para conseguir o multi-tenancy Milvus.
Multitenancy orientado para a base de dados
Desde a versão 2.2.9 do Milvus, a base de dados de objectos está agora disponível. É possível criar várias bases de dados num único cluster Milvus. Esta nova funcionalidade permite obter um multi-tenancy orientado para a base de dados, atribuindo uma base de dados a cada inquilino, de modo a que estes possam criar as suas próprias colecções e partições para tirar o máximo partido dos seus dados. No entanto, esta estratégia garante o isolamento dos dados e o desempenho da pesquisa para os inquilinos, mas os recursos podem ser desperdiçados em inquilinos inactivos.
Multitenancy orientado para colecções
Existem duas formas possíveis de conseguir um multilocatário 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 locatário para distinguir entre locatários, é 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 estrangulamento das pesquisas ANN.
Uma coleção por locatário
Outra abordagem consiste em criar uma coleção para cada locatário para armazenar os seus próprios dados, em vez de armazenar os dados de todos os locatários numa única coleção. Isto permite um melhor isolamento dos dados e um melhor desempenho das consultas. No entanto, tenha em atenção que esta abordagem requer um maior investimento na programação de recursos, na capacidade operacional e nos custos e pode não ser aplicável se o número de inquilinos exceder o número máximo de colecções que um único cluster Milvus suporta.
Multilocação orientada para a partição
Existem também duas formas possíveis de conseguir um multi-tenancy orientado por partições:
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 a possibilidade de 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
Milvus 2.2.9 introduz uma nova caraterística 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 os valores no campo chave da partição. Ao efetuar pesquisas ANN, o Milvus muda para uma partição com base na chave de partição especificada, filtra as entidades de acordo com a chave de partição e pesquisa entre as entidades filtradas.