Compartilhar via


Multilocatário para busca em vetor no Azure Cosmos DB

"O OpenAI depende do Cosmos DB para dimensionar dinamicamente seu serviço ChatGPT – um dos aplicativos de consumidores que mais crescem –, permitindo alta confiabilidade e baixa manutenção." – Satya Nadella.

O Azure Cosmos DB se destaca como o primeiro banco de dados operacional sem servidor completo do mundo com busca em vetor, oferecendo escalabilidade e desempenho incomparáveis. Ao usar o Azure Cosmos DB, os usuários podem aprimorar seus recursos de busca em vetor, garantindo alta confiabilidade e baixa manutenção para aplicativos multilocatários.

A multilocação permite que uma única instância de um banco de dados atenda a vários clientes ou locatários simultaneamente. Essa abordagem compartilha com eficiência a infraestrutura e a sobrecarga operacional, resultando em economia de custos e gerenciamento simplificado. É uma consideração de design crucial para aplicativos SaaS e algumas soluções corporativas internas.

A multilocação traz complexidade. Seu sistema deve ser dimensionado com eficiência para manter o alto desempenho em todos os locatários, que podem ter cargas de trabalho, requisitos e contratos de nível de serviço (SLAs) exclusivos.

Imagine uma plataforma de pesquisa fictícia assistida por IA chamada ResearchHub. Atendendo milhares de empresas e pesquisadores individuais, o ResearchHub gerencia diferentes bases de usuários, escalas de dados e SLAs. Garantir baixa latência de consulta e alto desempenho é essencial para sustentar uma excelente experiência do usuário.

O Azure Cosmos DB, com sua funcionalidade de índice de vetor DiskANN, simplifica o design multilocatário fornecendo mecanismos eficientes de armazenamento e acesso de dados para aplicativos de alto desempenho.

Modelos de multilocação no Azure Cosmos DB

No Azure Cosmos DB, recomendamos duas abordagens primárias para gerenciar a multilocação: partição chave por locatário ou conta por locatário, cada uma com seu próprio conjunto de benefícios e compensações.

1. Chave de partição por locatário

Para uma densidade maior de locatários e isolamento inferior, o modelo de chave de partição por locatário é eficaz. Cada locatário recebe uma chave de partição exclusiva em um determinado contêiner, permitindo a separação lógica de dados. Essa estratégia funciona melhor quando cada locatário tem aproximadamente o mesmo volume de carga de trabalho. Se houver uma distorção significativa, os clientes devem considerar isolar esses locatários em sua própria conta. Além disso, se um único locatário tiver mais de 20 GB de dados, chaves de partição hierárquicas (HPK) deverão ser usadas. Para a busca em vetor em particular, o índice quantizedFlat poderá ter um desempenho muito bom se as consultas de busca em vetor puderem ser focadas em uma partição ou conjuntos específicos de partições.

Benefícios:

  • Eficiência de Custo: compartilhar uma única conta do Cosmos DB entre vários locatários reduz a sobrecarga.
  • Escalabilidade: pode gerenciar um grande número de locatários, cada um isolado dentro de sua chave de partição.
  • Gerenciamento simplificado: menos contas do Cosmos DB a serem gerenciadas.
  • HPK (Chaves de Partição Hierárquica): otimiza o desempenho da organização e da consulta de dados em aplicativos multilocatários com um alto número de locatários.

Desvantagens:

  • Contenção de Recursos: os recursos compartilhados podem levar à contenção durante o pico de uso.
  • Isolamento limitado: isolamento lógico, mas não físico, que pode não atender aos requisitos estritos de isolamento.
  • Menos flexibilidade: flexibilidade reduzida por locatário para habilitar recursos de nível de conta, como replicação geográfica, restauração pontual (PITR) e chaves gerenciadas pelo cliente (CMK).

Particionamento hierárquico: organização de dados aprimorada

O particionamento hierárquico baseia-se no modelo chave-por-locatário de partição, adicionando níveis mais profundos de organização de dados. Esse método envolve a criação de vários níveis de chaves de partição para um gerenciamento de dados mais granular. O nível mais baixo de particionamento hierárquico deve ter alta cardinalidade. Normalmente, é recomendável usar uma ID/guid para esse nível para garantir a escalabilidade contínua além de 20 GB por locatário.

Vantagens:

  • Consultas Otimizadas: o direcionamento mais preciso de subpartições no nível de partição pai reduz a latência da consulta.
  • Escalabilidade Aprimorada: facilita a segmentação de dados mais profunda para facilitar o dimensionamento.
  • Melhor Alocação de Recursos: distribui uniformemente cargas de trabalho, minimizando gargalos para altas contagens de locatários.

Considerações:

  • Se os aplicativos tiverem muito poucos locatários e usarem particionamento hierárquico, isso poderá levar a gargalos, pois todos os documentos com a mesma chave de primeiro nível serão gravados nas mesmas partições físicas.

Exemplo: o ResearchHub pode estratificar dados dentro da partição de cada locatário organizando-os em vários níveis, como "DepartmentId" e "ResearcherId", facilitando o gerenciamento e as consultas eficientes.

Estratificação de Dados de IA do ResearchHub

2. Conta por locatário

Para isolamento máximo, o modelo de conta por locatário é preferível. Cada locatário obtém uma conta dedicada do Cosmos DB, garantindo a separação completa dos recursos.

Benefícios:

  • Isolamento Alto: nenhuma contenção ou interferência devido a recursos dedicados.
  • SLAs Personalizados: recursos e SLAs podem ser adaptados às necessidades individuais do locatário.
  • Segurança aprimorada: o isolamento de dados físicos garante uma segurança robusta.
  • Flexibilidade: os locatários podem habilitar recursos de nível de conta, como replicação geográfica, restauração pontual (PITR) e chaves gerenciadas pelo cliente (CMK), conforme necessário.

Desvantagens:

  • Gerenciamento aumentado: maior complexidade no gerenciamento de várias contas do Cosmos DB.
  • Custos Mais Altos: mais contas significam custos de infraestrutura mais altos.

Isolamento de segurança com chaves gerenciadas pelo cliente

O Azure Cosmos DB habilita chaves gerenciadas pelo cliente para criptografia de dados, adicionando uma camada extra de segurança para ambientes multilocatários.

Etapas para implementar

  • Configurar o Azure Key Vault: armazene com segurança suas chaves de criptografia.
  • Link para o Cosmos DB: associe seu Key Vault à sua conta do Cosmos DB.
  • Girar Chaves Regularmente: aprimore a segurança atualizando rotineiramente suas chaves.

O uso de chaves gerenciadas pelo cliente garante que os dados de cada locatário sejam criptografados exclusivamente, fornecendo segurança e conformidade robustas.

Conta por locatário da IA do ResearchHub

Outros modelos de isolamento

Isolamento de contêiner e banco de dados

Além dos modelos chave por locatário e conta por locatário de partição, o Azure Cosmos DB fornece outros métodos de isolamento, como isolamento de contêiner e isolamento de banco de dados. Essas abordagens oferecem diferentes graus de isolamento de desempenho, embora não forneçam o mesmo nível de isolamento de segurança que o modelo de conta por locatário.

Isolamento de contêiner

No modelo de isolamento de contêiner, cada locatário recebe um contêiner separado em uma conta compartilhada do Cosmos DB. Esse modelo permite algum nível de isolamento em termos de desempenho e alocação de recursos.

Benefícios:

  • Isolamento de Melhor Desempenho: recursos de desempenho específicos podem ser alocados aos contêineres, minimizando o impacto da carga de trabalho de um locatário em outro.
  • Gerenciamento Mais Fácil: gerenciar vários contêineres em uma única conta geralmente é mais fácil do que gerenciar várias contas.
  • Eficiência de Custo: semelhante ao modelo de chave de partição por locatário, esse método reduz a sobrecarga de várias contas.

Desvantagens:

  • Isolamento de Segurança Limitado: ao contrário de contas separadas, os contêineres na mesma conta não fornecem isolamento de dados físicos. Portanto, esse modelo pode não atender a requisitos de segurança rigorosos.
  • Contenção de Recursos: cargas de trabalho pesadas em um contêiner ainda poderão afetar outras se os limites de recursos forem violados.

Isolamento do Banco de Dados

O modelo de isolamento do banco de dados atribui a cada locatário um banco de dados separado em uma conta compartilhada do Cosmos DB. Isso fornece isolamento aprimorado em termos de alocação e gerenciamento de recursos.

Benefícios:

  • Desempenho Aprimorado: bancos de dados separados reduzem o risco de contenção de recursos, oferecendo melhor isolamento de desempenho.
  • Alocação Flexível de Recursos: os recursos podem ser alocados e gerenciados no nível do banco de dados, fornecendo recursos de desempenho personalizados.
  • Gerenciamento Centralizado: mais fácil de gerenciar em comparação com várias contas, mas oferecendo mais isolamento do que a separação no nível do contêiner.

Desvantagens:

  • Isolamento de Segurança Limitado: semelhante ao isolamento de contêiner, ter bancos de dados separados em uma única conta não fornece isolamento de dados físicos.
  • Complexidade: o gerenciamento de vários bancos de dados pode ser mais complexo do que o gerenciamento de contêineres, especialmente à medida que o número de locatários aumenta.

Embora os modelos de isolamento de contêiner e banco de dados não ofereçam o mesmo nível de isolamento de segurança que o modelo de conta por locatário, eles ainda podem ser úteis para obter isolamento de desempenho e gerenciamento flexível de recursos. Esses métodos são benéficos para cenários em que a eficiência de custos e o gerenciamento simplificado são prioridades, e o isolamento de segurança rigoroso não é um requisito crítico.

Ao avaliar cuidadosamente as necessidades e restrições específicas de seu aplicativo multilocatário, você pode escolher o modelo de isolamento mais adequado no Azure Cosmos DB, balanceando considerações de desempenho, segurança e custo para obter os melhores resultados para seus locatários.

Considerações de implementação do mundo real

Ao projetar um sistema multilocatário com o Cosmos DB, considere estes fatores:

  • Carga de Trabalho do Locatário: avalie o tamanho dos dados e a atividade para selecionar o modelo de isolamento apropriado.
  • Requisitos de Desempenho: alinhe sua arquitetura com SLAs e métricas de desempenho definidas.
  • Gerenciamento de Custos: balancee os custos de infraestrutura em relação à necessidade de isolamento e desempenho.
  • Escalabilidade: planeje o crescimento escolhendo modelos escalonáveis.

Implementação no Azure Cosmos DB

Chave de uma Partição por Locatário.

  • Atribuir Chaves de Partição: chaves exclusivas para cada locatário garantem a separação lógica.
  • Armazenar Dados: os dados do locatário estão confinados às respectivas chaves de partição.
  • Otimizar Consultas: use chaves de partição para consultas eficientes e direcionadas.

Particionamento Hierárquico:

  • Criar Chaves de Vários Níveis: organize ainda mais os dados em partições de locatário.
  • Consultas Direcionadas: aprimore o desempenho com direcionamento preciso de subpartição.
  • Gerenciar Recursos: distribua cargas de trabalho uniformemente para evitar gargalos.

Conta por Locatário:

  • Fornecer Contas Separadas: cada locatário obtém uma conta dedicada do Cosmos DB.
  • Personalizar Recursos: personalizar o desempenho e os SLAs para os requisitos de locatário.
  • Garantir a Segurança: o isolamento de dados físicos oferece segurança e conformidade robustas.

O suporte do Azure Cosmos DB para a funcionalidade de índice de vetor DiskANN o torna uma excelente opção para aplicativos que exigem pesquisas rápidas e de alta dimensão, como plataformas de pesquisa assistidas por IA, como o ResearchHub. Veja como você pode aproveitar esses recursos:

Armazenamento e Recuperação Eficientes:

  • Indexação Vetorial: use o índice de vetor DiskANN para armazenar e recuperar vetores de alta dimensão com eficiência. Isso é útil para aplicativos que envolvem pesquisas de similaridade em grandes conjuntos de dados, como reconhecimento de imagem ou similaridade de documento.
  • Otimização de Desempenho: os recursos de busca em vetor do DiskANN permitem pesquisas rápidas e precisas, garantindo baixa latência e alto desempenho, o que é fundamental para manter uma boa experiência do usuário.

Dimensionamento Entre Locatários:

  • Chave de Partição por Locatário: utilize chaves de partição para isolar logicamente os dados do locatário, beneficiando-se da infraestrutura escalonável do Cosmos DB.
  • Particionamento Hierárquico: implemente o particionamento hierárquico para mais dados de segmento dentro da partição de cada locatário, melhorando o desempenho da consulta e a distribuição de recursos.

Segurança e Conformidade

  • Chaves Gerenciadas pelo Cliente: implemente chaves gerenciadas pelo cliente para criptografia de dados em repouso, garantindo que os dados de cada locatário sejam isolados com segurança.
  • Rotação Regular de Chaves: aprimore a segurança girando regularmente as chaves de criptografia armazenadas no Azure Key Vault.

Exemplo do mundo real: implementando o ResearchHub

Chave de uma Partição por Locatário.

  • Atribuir Chaves de Partição: cada organização (locatário) recebe uma chave de partição exclusiva.
  • Armazenamento de Dados: todos os dados de pesquisadores para um locatário são armazenados em sua partição, garantindo a separação lógica.
  • Otimização de Consulta: as consultas são executadas usando a chave de partição do locatário, melhorando o desempenho isolando o acesso a dados.

Particionamento Hierárquico:

  • Chaves de Partição de Vários Níveis: os dados dentro da partição de um locatário são segmentados por "DepartmentId" e "ResearcherId" ou outros atributos relevantes.
  • Gerenciamento de Dados Granulares: essa abordagem hierárquica permite que o ResearchHub gerencie e consulte dados com mais eficiência, reduzindo a latência e melhorando os tempos de resposta.

Conta por Locatário:

  • Contas do Cosmos DB Separadas: clientes de alto perfil ou aqueles com dados confidenciais recebem contas individuais do Cosmos DB.
  • Configurações Personalizadas: recursos e SLAs são personalizados para atender às necessidades específicas de cada locatário, garantindo o desempenho e a segurança ideais.
  • Segurança de Dados Aprimorada: a separação física de dados com chaves de criptografia gerenciadas pelo cliente garante uma conformidade de segurança robusta.

Conclusão

A multilocação no Azure Cosmos DB, especialmente com sua funcionalidade de índice de vetor DiskANN, oferece uma solução poderosa para criar aplicativos de IA escalonáveis e de alto desempenho. Se você escolher modelos de particionamento chave por locatário, particionamento hierárquico ou conta por locatário, poderá balancear efetivamente o custo, a segurança e o desempenho. Usando esses modelos e práticas recomendadas, você pode garantir que seu aplicativo multilocatário atenda às diversas necessidades de seus clientes, proporcionando uma experiência excepcional do usuário.

O Azure Cosmos DB fornece as ferramentas necessárias para criar um ambiente multilocatário robusto, seguro e escalonável. Com o poder da indexação de vetor DiskANN, você pode fornecer pesquisas rápidas e de alta dimensão que conduzem seus aplicativos de IA.

Soluções de banco de dados vetor

Extensão pgvector do Servidor PostgreSQL do Azure

Diagrama dos serviços de indexação vetor para o PostgreSQL do Azure.

Próxima etapa