0Pricing
Azure Fundamentals · Aula

Azure Cosmos DB: NoSQL Global

Explore a arquitetura multimodelo e multirregional do Cosmos DB, compreenda as chaves de partição e escolha o nível de consistência adequado às necessidades da sua aplicação.

Azure Cosmos DB: NoSQL Global é uma aula grátis de Azure Fundamentals no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Azure Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Azure Fundamentals inclui 4 aulas no total.

O que é o Azure Cosmos DB?

O Azure Cosmos DB é o serviço de banco de dados NoSQL multimodelo e distribuído globalmente da Microsoft. Ele foi projetado para oferecer latência de leitura e gravação de milissegundos de um único dígito em qualquer escala e em qualquer lugar do mundo. Diferentemente dos bancos de dados tradicionais, limitados a uma única região, o Cosmos DB pode replicar dados de forma transparente para dezenas de regiões do Azure simultaneamente.

Suporte a APIs multimodelo

O Cosmos DB oferece suporte a várias APIs de banco de dados por meio de um único serviço. Você pode usar a API NoSQL nativa (documentos JSON), a API MongoDB para aplicações criadas com drivers do MongoDB, a API Apache Cassandra para cargas de trabalho de colunas largas, a API Gremlin para dados de grafos e a API Table para dados de chave-valor. Cada API expõe o mecanismo subjacente do Cosmos DB por meio de uma interface familiar.

Contas, bancos de dados e containers

A hierarquia de recursos do Cosmos DB consiste em três níveis. Uma conta é o recurso de nível superior que define a lista de regiões de replicação e o nível de consistência. Dentro de uma conta, você cria bancos de dados como namespaces lógicos. Dentro de cada banco de dados, você cria containers — a unidade que contém Items (documentos) e na qual a taxa de transferência é provisionada.

# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
  --name mycosmosaccount \
  --resource-group myRG \
  --kind GlobalDocumentDB \
  --locations regionName=eastus failoverPriority=0 isZoneRedundant=true

# Create a database
az cosmosdb sql database create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --name myDatabase

Chaves de partição: a base do dimensionamento

Uma chave de partição é uma propriedade de cada item que o Cosmos DB usa para distribuir os dados entre partições físicas. Escolher a chave de partição correta é essencial: ela deve ter alta cardinalidade (muitos valores distintos), distribuir o tráfego de gravação de maneira uniforme e aparecer na maioria das suas consultas. Escolhas inadequadas de chaves de partição levam a partições quentes, que limitam a taxa de transferência e degradam o desempenho.

// Example container with /userId as partition key
// Items in the container:
{
  'id': 'order-001',
  'userId': 'user-42',
  'product': 'Widget',
  'total': 29.99
}
// userId distributes orders across partitions

Taxa de transferência: modelo RU/s

O Cosmos DB cobra pela taxa de transferência em Unidades de Solicitação por segundo (RU/s). Uma RU corresponde aproximadamente ao custo de ler um documento de 1 KB pelo seu ID. Gravações, consultas e exclusões custam mais RUs, dependendo do tamanho do item e da complexidade do índice. Você pode provisionar RU/s no nível do container ou compartilhar um pool entre todos os containers de um banco de dados, além de alternar para o modo autoscale para permitir que o Cosmos DB dimensione a taxa de transferência automaticamente.

# Create a container with 400 RU/s
az cosmosdb sql container create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name orders \
  --partition-key-path '/userId' \
  --throughput 400

Distribuição global

O recurso mais poderoso do Cosmos DB é a capacidade de replicar dados globalmente com apenas alguns cliques. Você adiciona regiões à sua conta, e o Cosmos DB sincroniza automaticamente todas as gravações entre cada região. Cada região pode atender leituras e gravações simultaneamente em uma configuração de várias gravações (vários mestres), minimizando a latência para usuários geograficamente dispersos.

# Add a second region to the Cosmos DB account
az cosmosdb update \
  --name mycosmosaccount \
  --resource-group myRG \
  --locations regionName=eastus failoverPriority=0 \
                regionName=westeurope failoverPriority=1

Cinco níveis de consistência

O Cosmos DB oferece cinco níveis de consistência ajustáveis, organizados em um espectro do mais forte ao mais fraco: Strong (leituras linearizáveis, maior latência), Bounded Staleness (as leituras ficam atrás das gravações por uma janela limitada), Session (padrão — leituras consistentes para suas próprias gravações dentro de uma sessão), Consistent Prefix (as leituras nunca veem gravações fora de ordem) e Eventual (leituras mais rápidas, garantias mais fracas). Escolha com base na tolerância da sua aplicação a dados desatualizados.

Indexação automática

Por padrão, o Cosmos DB indexa automaticamente todas as propriedades de cada item inserido, sem exigir que você defina um esquema antecipadamente. Isso permite consultas ad hoc flexíveis sem manutenção de índices. Você pode personalizar a política de indexação para excluir caminhos que nunca são consultados (reduzindo o custo de armazenamento) ou adicionar índices compostos para consultas ORDER BY em várias propriedades.

// Custom indexing policy example
{
  'indexingMode': 'consistent',
  'includedPaths': [{ 'path': '/*' }],
  'excludedPaths': [
    { 'path': '/largeTextBlob/?' },
    { 'path': '/_etag/?' }
  ]
}

Feed de alterações para aplicações orientadas a eventos

O feed de alterações é um log ordenado de todas as operações de criação e atualização em um container do Cosmos DB. As aplicações assinam o feed de alterações para acionar o processamento posterior — por exemplo, atualizar um índice de pesquisa, enviar notificações ou gravar em uma exibição materializada. O feed de alterações é a base dos padrões orientados a eventos e CQRS nas arquiteturas do Cosmos DB.

Time-to-Live (TTL) para dados expirados

O Cosmos DB oferece suporte a Time-to-Live (TTL), uma propriedade que você define em um container ou em itens individuais para excluí-los automaticamente após um número especificado de segundos. Isso é ideal para dados de sessão, entradas de cache, logs de auditoria com períodos de retenção regulatórios ou quaisquer dados com expiração conhecida. As exclusões por TTL são realizadas como tarefas em segundo plano e não consomem RU/s provisionadas.

// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name sessions \
  --ttl 3600

Preços e camada Serverless

O Cosmos DB oferece dois modos de cobrança. A taxa de transferência provisionada cobra por hora de RU/s independentemente do uso real, sendo adequada para cargas de trabalho estáveis e previsíveis. O modo Serverless cobra por RU consumida e GB armazenado, sem custo mínimo, tornando-se econômico para desenvolvimento, prototipagem e picos de tráfego. O Cosmos DB Serverless está atualmente limitado a uma única região.

Verificação rápida

Teste a sua compreensão dos conceitos do Microsoft Azure Fundamentals (AZ-900) abordados nesta lição.

Resumo da lição

Nesta lição, você aprendeu que: Cosmos DB é um serviço NoSQL distribuído globalmente e com vários modelos, as chaves de partição determinam como os dados são fragmentados e devem ser escolhidas com cuidado e cinco níveis de consistência permitem equilibrar latência e atualização dos dados. A seguir, exploraremos os serviços gerenciados do Azure para mecanismos de banco de dados de código aberto.

Perguntas Frequentes

A aula “Azure Cosmos DB: NoSQL Global” é grátis?

Sim — o texto completo de “Azure Cosmos DB: NoSQL Global” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Azure Fundamentals, atualize para CoddyKit PRO. O curso de Azure Fundamentals inclui 4 aulas no total.

O que vou aprender em “Azure Cosmos DB: NoSQL Global”?

Explore a arquitetura multimodelo e multirregional do Cosmos DB, compreenda as chaves de partição e escolha o nível de consistência adequado às necessidades da sua aplicação. Você pratica Azure Fundamentals com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Azure Fundamentals?

Nenhuma experiência prévia é necessária. Azure Fundamentals no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Azure Cosmos DB: NoSQL Global”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Azure Fundamentals?

Sim. Cada aula de Azure Fundamentals inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Banco de Dados SQL do Azure
  2. Azure Cosmos DB: NoSQL Global
  3. Bancos de Dados do Azure para Mecanismos de Código Aberto
  4. Migração de Banco de Dados para o Azure
← Voltar para Azure Fundamentals