Com CosmosDB, “entender” os dados da sua aplicação é a chave para obter resultados

Thiago Candido

O CosmosDB é um banco NoSQL oferecido no Azure destinado a aplicações que necessitam de alta disponibilidade, performance e baixa latência, independentemente da localização da sua aplicação. Para alcançar esses requisitos e trabalhar de maneira performática, otimizando custos, é necessário entender e trabalhar em torno das particularidades do seu modelo de particionamento de dados, além de estruturar como suas funcionalidades são integradas e potencializadas por outros recursos do Azure.

A terminologia NoSQL, ou Not Only SQL, é utilizada para representar bancos de dados não-relacionais que armazenam dados em estruturas como chave-valor, grafos, documentos e colunares. Isso torna possível representar os dados de aplicações mais fielmente, entregando mais velocidade nas operações. Outra característica de bancos NoSQL é a escalabilidade horizontal, podendo atender requisitos de disponibilidade de forma simples.

CosmosDB

 Originalmente chamado de DocumentDb, o CosmosDB é uma base nosql schema-agnostic, organizada internamente com items containers e databases. Containers são análogos a coleções ou tabelas, e Items, análogos a documentos ou registros.

Um dos diferenciais do CosmosDB é dispor de diferentes APIs para acesso de dados: SQL, MongoDB, Gremlin, Cassandra, Azure Table Storage e etcd. Isso facilita muito a portabilidade de aplicações existentes que possuem outra base de dados e desejam migrar para o serviço da Azure.

Para alcançar requisitos de escalabilidade e disponibilidade, o CosmosDB pode ser utilizado em qualquer região disponível pelo Azure, diminuindo a latência entre sua aplicação e o dado, além de disponibilizar replicação de dados “transparente” entre regiões, sem causar impacto na performance ou downtime. Seu modelo de precificação é baseado em throughput, por meio da atribuição e do uso de RU’s (request units), com cada container podendo ser dimensionado manualmente, ou de maneira automática, baseado na necessidade da aplicação, assim otimizando custos. Cada operação realizada no CosmosDB resulta em um custo operacional representado por uma quantia de RU’s, assim sendo, é de grande importância o trabalho de otimização do uso de Request Units.

Para realizar a otimização de RUs é necessário entender e trabalhar com o particionamento do CosmosDB. Os containers são definidos por padrão com uma chave de particionamento que não pode ser alterada após sua criação. Essa chave de particionamento é utilizada para a organização lógica dos dados e, com isso, no processo de escrita, dados armazenados em uma mesma partição ficam armazenados em uma mesma unidade lógica. Porém, se armazenarmos todos os dados de uma base em apenas uma partição, podemos ter problemas de armazenamento, pois partições são limitadas em 20Gbs de espaço. 

Outro fator importante para levar em consideração em relação às operações de escrita é sobre a distribuição de dados nas diferentes partições. É importante que a chave de partição escolhida seja eficiente em manter uma proporção semelhante entre todas as partições do banco de dados. 

Já para operações de leitura, é importante que o dado buscado esteja em uma única partição, assim evitando consultas Cross Partition, que buscam em todas as partições disponíveis os dados, utilizando RU’s de maneira excessiva. 

Com isso, à primeira vista, temos um paradoxo evidente: se o dado for otimizado para escrita, a leitura pode ser penalizada, e vice-versa. 

Para utilizar o CosmosDB de maneira eficiente, é preciso entender seu conceito de particionamento, seus  mecanismos como o ChangeFeed e a interação dele com Azure Functions. Um fato mais importante é que se faz necessário compreender a distribuição dos dados da sua aplicação para modelar seus containers, itens e partições de maneira a extrair todos benefícios de performance, disponibilidade e escalabilidade que esse serviço do Azure oferece.

Compartilhe este insight:

Comentários

Participe deixando seu comentário sobre este artigo a seguir:

Subscribe
Notify of
guest
0 Comentários
Inline Feedbacks
View all comments

AUTOR

Thiago Candido
Especialista em inteligência artificial e engenharia de dados com experiência profissional na indústria e setor financeiro

SOLUÇÕES EXIMIACO

Desenvolvimento de Software

Gestão de times para acelerar entregas e atuar na resolução de problemas complexos.

NOVOS HORIZONTES PARA O SEU NEGÓCIO

Nosso time está preparado para superar junto com você grandes desafios tecnológicos.

Entre em contato e vamos juntos utilizar a tecnologia do jeito certo para gerar mais resultados.

Insights EximiaCo

Confira os conteúdos de negócios e tecnologia desenvolvidos pelos nossos consultores:

Engenharia de Software

Três vantagens reais de utilizar orquestradores BPM para serviços

Arquiteto de software e solução com larga experiência corporativa
Desenvolvimento de Software

Os principais desafios ao adotar testes

Especialista em Testes e Arquitetura de Software
Arquitetura de Dados

Insights de um DBA na análise de um plano de execução

Especialista em performance de Bancos de Dados de larga escala

Acesse nossos canais

Simplificamos, potencializamos e aceleramos resultados usando a tecnologia do jeito certo

EximiaCo 2022 – Todos os direitos reservados

0
Queremos saber a sua opinião, deixe seu comentáriox
()
x

Com CosmosDB, “entender” os dados da sua aplicação é a chave para obter resultados

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Condição especial de pré-venda: R$ 14.000,00 - contratando a mentoria até até 31/01/2023 e R$ 15.000,00 - contratando a mentoria a partir de 01/02/2023, em até 12x com taxas.

Tenho interesse nessa capacitação

Para solicitar mais informações sobre essa capacitação para a sua empresa, preencha o formulário a seguir:

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

O seu insight foi excluído com sucesso!

O seu insight foi excluído e não está mais disponível.

O seu insight foi salvo com sucesso!

Ele está na fila de espera, aguardando ser revisado para ter sua publicação programada.

Tenho interesse em conversar

Se você está querendo gerar resultados através da tecnologia, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse nessa solução

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

Tenho interesse neste serviço

Se você está procurando este tipo de solução para o seu negócio, preencha este formulário que um de nossos consultores entrará em contato com você:

× Precisa de ajuda?