MongoDB com Azure Cosmos DB - Introdução
Tags: mongodb, nosql, azure, azurecosmosdb
Published: 2018-04-08 21:45:06

---
title: MongoDB com Azure Cosmos DB - Introdução
published: true
description: Uma introdução sobre a utilização da API MongoDB no Azure Cosmos DB
tags: mongodb, nosql, azure, azurecosmosdb
---

Fala pessoal, blz? Hoje inicio minha série de artigos sobre a utilização do MongoDB no Azure Cosmos DB. E hoje, domingo, escrevo do terminal 2 do Aeroporto do Galeão no Rio de Janeiro, depois de finalizar mais um treinamento de MongoDB aqui na "Cidade Maravilhosa".

Mas vamos ao que interessa!

## Azure Cosmos DB

Numa breve introdução, o Azure Cosmos DB é definido pela Microsoft como um serviço de banco de dados multi-model, globalmente distribuído, para aplicações críticas. Dentre os serviços oferecidos pelo Azure Cosmos DB estão [distribuição global](https://docs.microsoft.com/pt-br/azure/cosmos-db/distribute-data-globally), [escalabilidade elástica para throughput e armazenamento](https://docs.microsoft.com/pt-br/azure/cosmos-db/partition-data), latências de milissegundos e garantia de alta disponibilidade, baseados no suporte de SLAs da Azure. Além disso o Azure Cosmos DB indexa os dados automaticamente (mas isso é assunto pra outro dia...)!

O Azure Cosmos DB pode ser usado para armazenar dados de aplicações originalmente escritas para o [MongoDB](https://docs.mongodb.com/manual/introduction/). Basicamente isso quer dizer que se você utilizar os [drivers](https://docs.mongodb.com/ecosystem/drivers/) existentes, sua aplicação que utiliza o MongoDB pode se comunicar com Azure Cosmos DB (em muitos dos casos) somente trocando a string de conexão, ao mesmo tempo que você continua utilizando as ferramentas e ainda aplicando seus conhecimentos de MongoDB!

**Compatibilidade com o MongoDB**: se você já utiliza o MongoDB, sabe como ele funciona e domina o schema design, poderá continuar aplicando tudo isso, mas cuidado com alguns aspectos (que serão abordados nos próximos posts), porque o Azure Cosmos DB até a data de publicação desse artigo utiliza a versão 3.4.5 do MongoDB e também suporta do [aggregation pipeline do MongoDB](https://docs.microsoft.com/pt-br/azure/cosmos-db/mongodb-feature-support#aggregation-pipeline), sendo que esse último terá um post específico nos próximos dias...

## Mas que vantagem Maria leva em utilizar o Azure Cosmos DB com a API do MongoDB?

**Processamento e Armazenamento elasticamente escaláveis**: a possibilidade de aumentar ou reduzir verticalmente seu banco de dados. Os dados são armazenados em discos SSD, fornecendo a menor latência possível. O Azure Cosmos DB oferece suporte a coleções que podem ser dimensionadas para tamanhos de armazenamento e throughput praticamente ilimitados. E você pode modificar essas configurações à medida em que sua aplicação cresce.

**Replicação entre várias regiões**: De forma transparente, o Azure Cosmos DB pode replicar seus dados entre as regiões de sua conta associada ao MongoDB, isso possibilita que você desenvolva aplicações que exijam distribuição global. Com isso, também é possível configurar um failover regional sem downtime de sua aplicação.

**Serverless**: Como o Azure Cosmos DB se assemelha muito a um DBaaS, você não precisa se preocupar com o gerenciamento das máquinas onde seu banco de dados estará hospedado, ele está disponível em mais de 30 [regiões do Azure](https://azure.microsoft.com/regions/services/).

**Níveis de consistência ajustáveis**: Hoje, o Azure Cosmos DB trabalha com a versão 3.4 do MongoDB, ele oferece somente dois níveis de consistência: forte e eventual. O Azure Cosmos DB oferece vários níveis de consistência, porém, esses níveis são controlados pela API que você escolhe, ou seja, dependendo da API utilizada, esses níveis são reduzidos ao que a API escolhida oferece. Até o lançamento da versão 3.6 do MongoDB, não havia nenhum controle de sessão, por isso se você definir a API do MongoDB para utilizar a consistência de sessão, será feito um downgrade para a consistência eventual. Veja [como utilizar os níveis de consistência para potencializar a disponibilidade e desempenho](https://docs.microsoft.com/pt-br/azure/cosmos-db/consistency-levels)

Níveis de consistência do Azure Cosmos DB | API do MongoDB (3.4)
--- | ---
Eventual | Eventual
Consistent Prefix | Eventual with consistent order
Session | Eventual with consistent order
Bounded staleness | Strong
Strong | Strong

**Indexação automática**: O Azure Cosmos DB indexa automaticamente todas as propriedades dos documentos do seu banco de dados MongoDB, sem necessidade de schema ou criação de índices secundários. Ainda oferece a possibilidade de criar índices do tipo unique em qualquer propriedade já indexada.

## Próximos passos

Nos próximos artigos vou mostrar como criar um banco de dados no Azure Cosmos DB utilizando a API do MongoDB, depois demonstrarei a facilidade de migração dos aplicativos existentes, trocando basicamente a string de conexão. Posteriormente continuaremos juntos nessa jornada em que compartilharei com vocês o que tenho aprendido pelo caminho.

Espero que tenham gostado e fiquem à vontade em compartilhar e deixar seu like!

Abraços!