Quando eu comecei a trabalhar com banco de dados existiam 3 universos diferentes e distantes. O mainframe com o DB2, o Windows Server com o SQL Server e Unix/ Linux com o Oracle.
Até existiam umas variações, mas realmente eram poucas. Existiam (é sério gente, eu tenho fé de que estas discussões tenham acabado e por isso vou usar o passado!) inclusive algumas rixas bem toscas entre os DBAs Oracle e SQL server (principalmente este dois, porque raramente eu via DBAs DB2 – desculpa galera!), cada um tentando provar que um ou outro BD era melhor.
O mundo evoluiu e hoje temos muitos outros bancos de dados e algumas verdades absolutas morreram! SQL Server, por exemplo, roda em servidores Linux, Windows e na nuvem.
Começo este post com o “cantinho da memória” porque o assunto principal deste post é o MongoDB na nuvem, incluindo o Azure da Microsoft. Chega do momento infantil de dizer que odeia uma tecnologia só porque trabalha com outra, nem as empresas são tão radicais assim.
Sobre o MongoDB
Já escrevi um conjunto de posts sobre MongoDB, mas para relembrar quem já leu todos e ajudar quem chegou agora, vale a pena dizer que ele é o banco de dados NoSQL mais utilizado no mundo, maduro, escalável, executa em um cluster de servidores comodities, armazena dados semi-estruturados, permite particionamento dos dados, é tolerante a falhas além de possuir vários aplicativos secundários com o objetivo de simplificar tarefas administrativas, como backup, restore, importação e exportação de dados.
É um banco de dado de código aberto, criado e mantido pela MongoDB Inc.
Acho legal colocar neste post uma consideração feita pelo Leandro Del Busso Domingues , que é a referência máxima em MongoDB no Brasil, no dia 13/12/2017 durante o DevWeek.
Ele disse que o fato da Mongo Inc. ter aberto o capital mostra como o BD é maduro! E eu parei para pensar no quanto ele tem razão. Um produto open source poderia trazer uma certa insegurança para as organizações, mas isso não ocorre com o MongoDB.
** DevWeek é um evento anual feito pela comunidade Canal .Net. Este ano o evento aconteceu na primeira e na segunda semana do mês de dezembro. No último dia do DevWeek (13/12/2017), o Leandro falou sobre MongoDB e eu sobre DataOps. Quem quiser ver as apresentações, elas estão disponíveis no Canal do DevWeek.
Database as a Service (DaaS)
A tradução já é bem significativa, Banco de Dados como Serviço deixa claro que essa modalidade é direcionada ao fornecimento de serviços para armazenamento e acesso de volumes de dados. A vantagem aqui é que o detentor da aplicação conta com maior flexibilidade para expandir o banco de dados, compartilhar as informações com outros sistemas, facilitar o acesso remoto por usuários autorizados. Outra vantagem deste tipo de serviço é permitir que a organização se preocupe com os dados e não com toda a complexidade envolvida na administração do banco de dados. A ideia é que a empresa pague por aquilo que ela precisa em um dado momento, e que a solicitação de ativação e desativação seja feita de forma muito simples.
MongoDB Atlas
É o DaaS do MongoDB, disponível sob demanda através de um modelo de pagamento por hora, permitindo que você se concentre no que você faz melhor. Ele incorpora as melhores práticas operacionais utilizando o inovador recurso Cross-platform, ou seja, você pode utilizar Azure ou AWS ou Google Cloud “de baixo” dos clusters do Atlas. Resumindo, você utiliza o MongoDB Atlas, porém a infra fica na sua nuvem favorita.
O problema do MongoDB Atlas é que ele é cobrado em dólares, o que pode tornar o serviço caro no Brasil.
Para quem é desenvolvedor e quer avaliar mais esta possibilidade, existe uma versão gratuita que nós usaremos a seguir…
Microsoft Azure
Olha só gente… A Microsoft também ama o MongoDB! E a prova disso é que ele pode ser usado com o Azure Cosmos DB.
O Azure Cosmos DB é o banco de dados multi-modelo globalmente distribuído da Microsoft. Que permite escalar horizontalmente e de forma independente o throughput e o armazenamento em qualquer uma das regiões geográficas do Azure. Ele oferece throughput, latência, disponibilidade, garantias de consistência com acordos abrangentes de nível de serviço (SLAs), algo que segundo a Microdoft nenhum outro serviço de banco de dados pode oferecer. Ele contém uma engine baseada em recursos e otimizada para escrita que suporta nativamente vários modelos de dados: valor-chave, documentos, grafos e família de colunas.
Ele também suporta muitas APIs para acessar dados incluindo MongoDB.
Cosmos DB + MongoDB = Amor
Imagine que você tem uma aplicação que recebe e manipula dados armazenados no MongoDB. Se você resolver utilizar o Cosmos DB a única coisa que precisará alterar na sua aplicação é a string de conexão com o BD.
Qual é a vantagem de usar o Azure Cosmos DB para aplicativos do MongoDB?
* Produtividade e armazenamento elasticamente escalonáveis: aumente ou reduza verticalmente seu banco de dados MongoDB para atender às necessidades de o aplicativo. Os dados são armazenados em discos SSD (discos de estado sólido, muito rápidos) para fornecer latências baixas. O Cosmos DB dá suporte a coleções do MongoDB que podem ser dimensionadas para tamanhos de armazenamento e produtividade provisionada praticamente ilimitados..
* Replicação de várias regiões: o Cosmos DB replica os dados de forma transparente para todas as regiões associadas à sua conta do MongoDB, permitindo que você desenvolva aplicativos com acesso global aos dados e fornecendo compensações entre consistência, disponibilidade e desempenho.
* Compatibilidade com o MongoDB: use os conhecimentos, o código do aplicativo e as ferramentas do MongoDB que você já tem. Ao migrar seus dados para o Cosmos DB a única coisa que você precisa alterar na sua aplicação é a string de conexão
* Sem gerenciamento de servidor: você não precisa gerenciar nem dimensionar os bancos de dados do MongoDB. O Cosmos DB é um serviço totalmente gerenciado, o que significa que você não precisa gerenciar infraestruturas ou Máquinas Virtuais por conta própria.
* Níveis de consistência ajustáveis: escolha entre cinco níveis de consistência bem-definidos para chegar ao equilíbrio ideal entre consistência e desempenho. Níveis de consistência granulares e bem-definidos permitem que você faça compensações seguras entre consistência, disponibilidade e latência.
* Indexação automática: por padrão, o Cosmos DB indexa automaticamente todas as propriedades em documentos do banco de dados do MongoDB e não espera nem exige nenhum esquema ou a criação de índices secundários.
Treino
Os posts ficam gigantes e com muitas imagens quando coloco passo a passo. Por isso hoje resolvi inovar e junto com este post fiz 2 vídeos curtinhos mostrando como usar o MongoDB Atlas e o Azure Cosmos DB. ,
Vejam os vídeos, ignorem os latidos do meu cachorro, e façam seus testes! Utilizem os planos gratuitos e testem, testem e testem de novo!
Conclusão
MongoDB é amor em todos os sentidos! Seja usando o MongoDB Atlas que é o DaaS da MongoDB e que permite que você escolha a sua infraesturura de nuvem, seja usando o CosmosDB que é o banco de dados multi model da Microsoft, seja instalando o MongoDB no seu servidor comodity, ou no seu Raspberry… Não nos faltam possibilidades!!!
O que eu tenho para te dizer é use o MongoDB! Como eu já disse em outros momentos há situações onde ele é fenomenal!!!!
Se você tem alguma dúvida, é só me procurar no Twitter, ou no facebook, ou comentando este post, ou no formulário de contato. Não se preocupe… Eu sempre respondo (mesmo que seja para avisar que estou pesquisando).
Referências
- https://codigosimples.net/2017/08/03/consumindo-api-e-automatizando-comandos-do-mongodb-atlas/
- https://docs.atlas.mongodb.com/
- https://docs.microsoft.com/en-us/azure/cosmos-db/introduction