Recentemente em um treinamento realizado pela Microsoft pude conhecer um pouco mais sobre o Cosmos DB, e resolvi trazer um resumo do conteúdo para os entusiastas de banco não relacional.
O Azure Cosmos DB é um banco de dados relacional e NoSQL gerenciado para o desenvolvimento de aplicativos modernos, e oferece diversas vantagens para aplicações que precisam de alto desempenho e disponibilidade.
O Azure Cosmos DB oferece várias APIs de banco de dados, que incluem NoSQL, MongoDB, Cassandra, PostgreSQL, Gremlin e Tabela. Neste artigo em específico, vou apresentar três: NoSQL, MongoDB e Cassandra. Com os APIs você pode modelar dados usando modelos de colunas, documentos, chave-valor e grafo. Essas APIs permitem que seus aplicativos tratem o Azure Cosmos DB como se ele fosse várias outras tecnologias de bancos de dados, sem a sobrecarga do gerenciamento e das abordagens de escala (Microsoft, 2023).
Independente da API escolhida para trabalhar com seu negócio, todos oferecem escala automática de garantia de desempenho entre outras vantagens, como:
Velocidade garantida em Escalabilidade Global, permitindo dimensionar horizontalmente seu banco de dados com facilidade.
Desenvolvimento de aplicativos rápido e flexível com SDKs (Software Development Kits) para linguagens populares. Esses SDKs fornecem bibliotecas e ferramentas que simplificam a interação com o Cosmos DB.
Pronta para aplicativos críticos com continuidade de negócios garantida, disponibilidade de 99,999% e segurança de nível empresarial.
Banco de dados sem servidor totalmente gerenciado e econômico com dimensionamento automático instantâneo que responde às necessidades do aplicativo, assim, não há preocupação com configuração e gerenciamento de servidores ou de infraestrutura.
A API para NoSQL é nativa do Azure Cosmos DB. E este trabalha somente com o modelo de dados do documento. De acordo com o treinamento da Microsoft “O Azure Cosmos DB for NoSQL é um serviço rápido de banco de dados NoSQL que oferece consultas avançadas sobre diversos dados. Ele ajuda a fornecer desempenho configurável e confiável, é distribuído globalmente e permite o desenvolvimento rápido.”.
A API para MongoDB, Cassandra e dentre os ouros, implementam o protocolo de transmissão de mecanismos de banco de dados de código aberto, e serão adequadas se as condições abaixo forem verdadeiras:
Se já tem aplicativos do MongoDB ou Cassandra;
Quer utilizar os principais recursos do Azure Cosmos DB,
Está desenvolvendo aplicativos modernizados em um ambiente multinuvem.
Assim, podendo criar aplicativos com essas APIs ou migrar seus dados existentes.
A API do Azure Cosmos DB para MongoDB armazena dados em uma estrutura de documentos, por meio do formato BSON. E esta API oferece compatibilidade com protocolo de comunicação e a maioria dos recursos do MongoDB, assim, o Azure Cosmos DB se torna uma camada de abstração sobre o MongoDB. Dessa forma, você pode continuar utilizando os recursos e sintaxes do Mongo, e aproveitar os recursos adicionais do Azure Cosmos DB.
A API do Azure Cosmos DB para Cassandra armazena dados em um esquema orientado por colunas. Segundo a Microsoft (2023) “considere a API para Cassandra quando você deseja se beneficiar da elasticidade e da natureza totalmente gerenciada do Azure Cosmos DB e ainda usar a maioria dos recursos, as ferramentas e o ecossistema nativos do Apache Cassandra.”.
No momento de escolher a API para seu negócio depende das necessidades do aplicativo e do tipo de modelo de dados com o qual está trabalhando. Uma diferença fundamental entre o MongoDB e o Cassandra é que o MongoDB banco orientado a documentos, enquanto Cassandra é orientado por colunas.
Além disso, eles têm diferentes abordagens quanto se trata de escalabilidade. O MongoDB possui um modelo de escalabilidade horizontal flexível, onde pode adicionar nós ao cluster e aumentar a capacidade de armazenamento e desempenho. Enquanto o Cassandra é projetado para dimensionamento linear distribuindo dados em vários nós em vários datacenters.
Essas diferenças devem influenciar no momento de escolher a API, sendo importante considerar fatores como número de acessos simultâneos, disponibilidade necessária e quantidade de dados a serem armazenados.
Compreendendo as vantagens, diferenças de aplicações com as APIs, e do Azure Cosmos DB, para quais aplicativos o seu uso seria mais adequado?
Para aplicativos globais e distribuídos: Justamente pela sua vantagem de escalabilidade global, gera uma baixa latência, então, ideal para aplicativos que precisam fornecer acesso rápido e consistente em todo o globo.
Aplicativos com requisitos de alta disponibilidade: Aplicativos que exigem alta disponibilidade, como aplicativos financeiros e comércio eletrônico.
Aplicativos com cargas de trabalho variáveis: Isto é, para aplicativos com trabalho sazonal. Por exemplo, um aplicativo de reserva de viagens, em algumas épocas do ano são mais acessadas, como nas férias de final do ano, por exemplo.
Aplicativos com consultas complexas: Isso porque o Cosmos DB oferece suporte a consultas SQL e recursos de consultas, permitindo consultas mais complexas.
Essas são algumas das vantagens e áreas de aplicação do Azure Cosmos DB. Agora que conhecemos um pouco mais sobre essa ferramenta, podemos pensar em um exemplo prático de uso?
Vamos considerar uma empresa varejista, com lojas físicas espalhadas em todo o Brasil, e lojas online, precisa lidar com um grande volume de dados. Utilizando o Azure Cosmos DB tal varejista poderá aproveitar dessa alta escalabilidade e disponibilidade do banco para lidar com esse grande volume. Além disso, empresas varejistas tendem a receber muitos acessos em épocas especiais como: dia das mães, dia dos pais, natal, dia das crianças, dentre outros.
Outro detalhe importante é que empresas varejistas recebem avaliações dos clientes que adquiriram produtos, alguns até mesmo com imagens. E como o Azure Cosmos DB oferece APIs orientado a documentos, consegue armazenar e receber esses dados.
E quanto as desvantagens? Se tem, quais seriam? Abaixo, alguns cenários em que o Azure Cosmos DB pode não ser a melhor escola:
Baixo volume de dados: Caso o seu negócio esteja lidando com um volume de dados relativamente pequeno e não prevê necessidade de escalabilidade ou alta disponibilidade, pode ser mais adequado utilizar uma outra ferramenta.
Estrutura de dados altamente relacionada: Embora o Azure Cosmos DB possa lidar com relacionamentos entre documentos, pode ser mais desafiador e menos eficiente de trabalhar com estruturas de dados altamente normalizadas.
Restrições orçamentárias: Por ser uma solução de banco de dados gerenciada e escalável, significa que pode ter um custo associado. Se tem restrições orçamentárias e não precisar de recursos avançados de dimensionamento automático e alta disponibilidade, pode ser mais viável considerar outras ferramentas.
Por fim, o Azure Cosmos DB se torna uma solução adequada para negócios que precisam lidar com grande volume de dados, e diferentes tipos de informações, promovendo alto desempenho devido sua alta escalabilidade.
REFERÊNCIAS
Microsoft. Introdução ao Azure Cosmos DB. Disponível em < https://learn.microsoft.com/pt-br/azure/cosmos-db/introduction>.
Microsoft. Introdução ao Azure Cosmos DB for NoSQL. Disponível em < Introdução ao Azure Cosmos DB for NoSQL - Training | Microsoft Learn>.