Atualmente, o MongoDB vem se tornando um dos grandes players do mercado de banco de dados. Ele se enquadra na categoria de databases NoSQL do tipo document, sendo designado para lidar com enorme volume de dados que envolvem escrita como consulta, resultando em absurda rapidez e simplicidade na resolução de queries que envolvem aplicações distribuídas. O nome Mongo deriva da palavra inglesa “Humongous” e significa imenso.

Um dos pontos chaves do MongoDB é a eliminação de “joins” complexos e a capacidade de escala horizontal. Os relacionamentos no MongoDB podem ser via referências ou “embedded documents”, porém excessos de relacionamentos resultam em complexas queries para desenvolvimento e perda de desempenho pelo excesso de junções e volume de dados exigido.

A ideia no MongoDB é reduzir ao mínimo os relacionamentos, de forma que a consulta final esteja disponível com o melhor “ratio” possível. O segundo ponto é a escala horizontal. Enquanto no mundo relacional estamos condenados a escalas verticais, ou seja, escalas com alto custo financeiro, adicionando recursos como memória, storage, novas classes de cloud e cpu, no modelo não relacional podemos facilmente escalar nosso poder computacional apenas adicionando “máquinas” de forma horizontal e global, permitindo a escalabilidade de aplicações distribuídas juntamente com o poder e facilidade da massiva adoção de cloud computing.

MongoDB

Outro importante aspecto é o suporte para auto failover e auto sharding. Dessa forma, além de alta disponibilidade, podemos utilizar nós exclusivos para leituras, nós com atraso de sincronização conhecido como “delayed nodes”, sendo utilizado como “hot backpus” em uma eventual perda de dados e nós exclusivos para conectores de BI. Essa característica de alta disponibilidade aliada a possibilidade de distribuição da aplicação entre os nós é realizada em sua forma horizontal e global além de ser distribuída em regiões através de qualquer fornecedor de cloud.

MongoDB não possui schema, ou seja, ele é um database schemaless. Seu “registro” para armazenamento consiste em qualquer número de campos. Permite adição dinâmica de campos para registros existentes em qualquer momento exatamente por não possuir comando como “alter table”. Apenas objetos JSONS que tornam muito mais simples a comunicação entre o MongoDB e linguagens como php, pyhon, java, c# além de soluções de back end como node.js , javascript e scala.

MongoDB

No Ecossistema MongoDB existem diversos produtos como MongoDBCharts, MongoDB Atlas, MongoDB Data Lake, MongoDB Stitch, Ops Manager, MongoDB BI, MongoDB Compass, MongoDB connector for Spark, MongoDB connector for Kafka e o serviço de elastic search MongoDB Full-text Search conversando diretamente com o Apache Lucene.

No próximo artigo falarei das novas tecnologias anunciadas no evento anual MongoDB World 2019, realizado no último mês de junho, a serem lançadas no segundo semestre.