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

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

Codificação de Software

ESTRATÉGIA & EXECUÇÃO EM TI

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

INSIGHTS EXIMIACO

Confira outros insights de nossos consultores relacionados a esta solução de negócio:

21/05/2021
Douglas Picolotto
Engenheiro de nuvem, arquiteto de software e especialista em AWS e Devops
21/05
2021
05/05/2021
16/04/2021
Douglas Picolotto
Engenheiro de nuvem, arquiteto de software e especialista em AWS e Devops
16/04
2021

COMO PODEMOS LHE AJUDAR?

Vamos marcar uma conversa para que possamos entender melhor sua situação e juntos avaliar de que forma a tecnologia pode trazer mais resultados para o seu negócio.

COMO PODEMOS LHE AJUDAR?

Vamos marcar uma conversa para que possamos entender melhor sua situação e juntos avaliar de que forma a tecnologia pode trazer mais resultados para o seu negócio.

+55 51 3049-7890 |  contato@eximia.co

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

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.