Azure Cosmos DB Global Secondary Indexes já disponível: o fim das queries cross-partition caras e da duplicação manual de dados
TL;DR: Neste artigo, analisamos a disponibilidade geral dos Global Secondary Indexes (GSIs) no Azure Cosmos DB. A funcionalidade elimina a necessidade de duplicar dados manualmente para consultas por chaves alternativas, transformando queries cross-partition caras em consultas eficientes de partição única. Para empresas brasileiras que lidam com múltiplos padrões de acesso, os GSIs reduzem custos de RU e complexidade operacional, sem exigir código de sincronização personalizado.
Se você já precisou evoluir seus padrões de leitura sem perder eficiência, sabe o drama: sua aplicação começa com um padrão de acesso — consultas por email de usuário, por exemplo — mas logo você precisa buscar pelo mesmo registro usando telefone, ID de pedido ou outro campo. Consultas que não incluem a partition key disparam um scan em todas as partições. O resultado? Mais latência, mais RUs consumidas e custos que podem ser 10x maiores que uma leitura direcionada.
O Azure Cosmos DB acaba de disponibilizar em disponibilidade geral os Global Secondary Indexes (GSIs). Trata-se de uma funcionalidade que mantém uma cópia sincronizada automaticamente dos seus dados com uma partition key diferente. Na prática, você ganha um novo container de índice — gerenciado pelo próprio serviço — que permite executar consultas por chaves alternativas como se fossem operações em partição única: rápidas, baratas e consistentes.
Antes dos GSIs, a saída era replicar manualmente os dados em um segundo container usando o change feed, escrever lógica de sincronização, tratar retentativas e provisionar compute para manter tudo funcionando. Era engenharia cara e propensa a falhas. Um cliente citado — a Woven — migrou sua arquitetura de replicação manual para os GSIs e simplificou drasticamente a aplicação.
O problema que o GSI resolve
O Cosmos DB escala distribuindo dados por partições físicas. Quando sua query inclui a partition key, o SDK roteia diretamente para a partição correta: rápido, barato e consistente. Mas aplicações reais raramente ficam simples. Um e-commerce pode particionar pedidos por customer ID, mas depois precisa consultar por order ID para logística. Um app de mensageria, como o da Woven, busca mensagens por localização ou time.
Cada query sem partition key varre todas as partições. Quanto mais dados, mais partições, mais varredura, mais RUs e mais lentidão. Em escala, o custo pode disparar. Com GSIs, essas queries cross-partition se tornam lookups de partição única, e o Azure Cosmos DB cuida da sincronização.
Quando usar GSI
- Lookups alternativos: seu container fonte está otimizado para um padrão, mas você precisa de vários. Cada GSI dá a cada padrão sua própria partition key.
- Aplicações de IA e agentes: agentes precisam consultar dados de sessão, histórico de conversas e usuários de formas flexíveis. GSIs permitem adicionar novos padrões sem refatorar o modelo de dados.
- Isolamento de workload: containers GSI têm throughput e política de indexação próprios. Você pode adicionar índices vetoriais ou full-text sem impactar o workload transacional.
- Padrões de acesso em evolução: conforme sua aplicação cresce, novos padrões surgem. GSIs permitem adicioná-los sem remodelar containers existentes.
Veja na prática
A Microsoft disponibilizou um app demo no GitHub que carrega 200.000 registros de pedidos e compara queries no container fonte versus no GSI, mostrando a diferença de RU e latência. Clone o repositório e teste você mesmo.
Como começar
Para ativar os GSIs, siga os passos na documentação: habilite backup contínuo na conta, ative a feature, e crie seu primeiro container GSI pelo Portal ou CLI. A recomendação é usar throughput em autoscale nos containers GSI para absorver picos de tráfego de sincronização sem sustos.
O que você vai construir?
GSIs tornam workloads com múltiplos padrões de acesso mais simples e baratos: sem código de sincronização customizado, sem infraestrutura extra, sem comprometer performance de query. Para empresas brasileiras que operam em cenários de alta variabilidade — marketplaces, fintechs, logística —, a redução de custos com RUs e a eliminação de engenharia de replicação são ganhos diretos.
Explore a documentação oficial, o guia de configuração e o app demo. Teste em seus ambientes de desenvolvimento e avalie o impacto real.
Perguntas Frequentes
-
O que são Global Secondary Indexes no Azure Cosmos DB?
São cópias sincronizadas automaticamente dos dados com uma partition key diferente, permitindo consultas eficientes por padrões de acesso alternativos sem a necessidade de replicação manual via change feed. -
Quando devo usar GSI em vez de duplicar dados em um segundo container?
Sempre que sua aplicação precisar consultar por mais de uma chave (ex.: email e telefone do usuário). GSIs eliminam o overhead de manter código de sincronização, retentativas e infraestrutura dedicada. -
GSIs afetam a performance das operações de escrita no container de origem?
Não de forma significativa para a maioria dos workloads. O Azure Cosmos DB gerencia a sincronização de forma transparente. Além disso, containers GSI podem ter throughput e política de indexação independentes, isolando cargas de busca sem impactar as escritas transacionais. -
Como configurar GSIs no Azure Cosmos DB?
É necessário habilitar o backup contínuo na conta, ativar a funcionalidade GSI e criar um container GSI pelo Portal do Azure ou CLI. A Microsoft recomenda throughput em autoscale para lidar com picos de tráfego de sincronização.
Artigo originalmente publicado por Justine Cocchi em Azure Updates - Latest from Azure Charts.