Azure

Azure Cosmos DB veio para ficar

O Cosmos DB fornece um serviço de banco de dados/armazenamento/consulta/análise de baixa latência global e altamente disponível para empresas exigentes de “pesos pesados”. O serviço é usado de forma onipresente em sistemas/serviços da Microsoft e também é um dos serviços de crescimento mais rápido usados pelos desenvolvedores do Azure externamente. Ele gerencia centenas de petabytes de dados indexados e atende centenas de trilhões de solicitações todos os dias de milhares de clientes em todo o mundo, e permite que os clientes construam aplicativos de missão crítica altamente responsivos.

Como se parece um banco de dados distribuído na nuvem?

Na busca de obter uma operação econômica, confiável e segura, de uso geral e flexível, um banco de dados em nuvem globalmente distribuído enfrenta muitos desafios e metas mutuamente conflitantes em diferentes dimensões. Por exemplo, o desafio de escala se torna muito mais difícil quando o banco de dados precisa fornecer desempenho garantido em qualquer ponto da curva de escala; além disso, fornecer armazenamento virtualmente ilimitado torna-se mais desafiador quando o banco de dados também precisa atender a SLAs de desempenho rigorosos em qualquer ponto; e alcançar estes desafios fornecendo e controlando recursos para impedir que um cliente impacte o desempenho de outro é um desafio extra, mas é exigido para fornecer e o banco de dados de nuvem cost-efficient.

Tentar adicionar suporte e realizar melhorias substanciais para todas essas dimensões de maneira simultânea não funciona como um afterthought. Entretanto, apesar de difícil, o Cosmos DB é capaz de fazê-lo. Isso porque ele é projetado a partir do zero para atender a todos esses desafios juntos e fornece um serviço de banco de dados distribuído nativo da nuvem sem atrito via:

  • Distribuição global (com consistência garantida e latência) em virtude da replicação multimaster transparente;
  • Escalabilidade elástica de throughput e armazenamento em todo o mundo (com SLAs garantidos) em virtude do particionamento horizontal;
  • Multi-locação de granularidade em virtude da pilha de sistema altamente controlada pelo recurso, desde o mecanismo de banco de dados até o protocolo de replicação.

Escalabilidade, distribuição global e governança de recursos

https://2.bp.blogspot.com/-iDf2iLZEnzA/XLEI-9NHp9I/AAAAAAAAHyE/GQot8uPgNOgLGJ5YaJtx0flfBFxJcd1VACK4BGAYYCw/s400/partitions.png

Para obter alta escalabilidade e disponibilidade, o Cosmos DB usa um novo protocolo para replicar dados entre nós e os datacenters com despesas gerais de latência mínima e throughput máximo. Para escalabilidade, os dados são automaticamente fragmentados guiados por gatilhos de armazenamento e throughput, e os estilhaços são atribuídos a partições diferentes. Cada partição é servida por um conjunto de réplicas de vários nós em cada região, com um nó atuando como uma réplica primária para manipular todas as operações de gravação e replicação dentro do REPLICASET.

A leitura dos dados é realizada a partir de um quórum de réplicas secundárias pelos clientes. (As implementações de armazenamento e computação em escala flexível fornecem dimensionamento independente para cargas de trabalho pesadas e de computação pesada). Como o conjunto de réplicas mantém várias cópias dos dados, ele pode mascarar algumas falhas de réplica em uma região sem sacrificar a disponibilidade, mesmo no modo de consistência forte. (Enquanto duas falhas de réplica simultânea podem ser raras, é mais comum observar uma falha de réplica enquanto outra réplica não está disponível devido a atualizações de rolagem e mascarar duas falhas de réplica pode ajudar a operação ininterrupta suave para o banco de dados de nuvem.)

Cada região contém um Gerenciador de configuração independente para manter a configuração do sistema e executar a eleição de líder para as partições. Com base nas alterações de associação, o protocolo de replicação também reconfigura o tamanho de quorums de leitura e gravação. Além da replicação local dentro de um conjunto de réplicas, há também a replicação geográfica que implementa a distribuição em qualquer número de regiões do Azure 50 + deles.

https://1.bp.blogspot.com/-SGAruQKVxGU/XLEJIuMjLyI/AAAAAAAAHyM/w7bOY_VhWO0zqgq4WCPhI6ccTG8wpyYhwCK4BGAYYCw/s400/distribution.png

A replicação geográfica é alcançada por um protocolo de distribuição de consenso aninhado entre os conjuntos de réplicas em diferentes regiões. O Cosmos DB fornece a replicação ativa-ativa MultiMaster a fim permitir leituras e gravações de toda a região. Para a maioria dos modelos de consistência, quando uma gravação se origina em alguma região, ela se torna imediatamente disponível nessa região enquanto está sendo enviada para um árbitro (ARB) para ordenação e resolução de conflitos.

O ARB é um processo virtual que pode colocalizar em qualquer uma das regiões. Ele usa o protocolo de distribuição para copiar os dados para primárias em cada região, que, em seguida, replicar os dados em suas respectivas regiões. Os protocolos de distribuição e replicação do Cosmos DB são verificados no nível de design com o verificador de modelo TLA + e as implementações são testadas mais para problemas de consistência usando (uma porta do MS Windows de) testes de Jepsen.

O Cosmos DB é projetado a partir do zero com mecanismos de governança de recursos para fornecer uma experiência de throughput provisionada isolada (apoiada por SLAs), ao mesmo tempo que consegue uma embalagem de alta densidade (onde 100s de locatários compartilham a mesma máquina e 1000s compartilham o mesmo cluster).

Para esse fim, o Cosmos DB define uma moeda abstrata baseada em taxa para taxa de transferência, chamada unidade de solicitação ou RU (plural, RUs) que fornecem um modelo normalizado para a contabilização dos recursos consumidos por uma solicitação e cobram os clientes pela taxa de transferência em vários bancos de dados operações de forma consistente e de maneira independente de hardware. Cada RU combina uma pequena parte da CPU, memória e IOPS de armazenamento. Os locatários no Cosmos DB controlam o desempenho desejado que eles precisam de seus contêineres especificando o RUs de throughput máximo para um determinado contêiner. Visto a partir da lente da governança de recursos, o Cosmos DB é um sistema de enfileiramento massivamente distribuído com estágios em cascata de componentes, cada um cuidadosamente calibrado para fornecer throughput previsível enquanto opera dentro do orçamento alocado de recursos do sistema, guiados pelos princípios da lei de Little e da lei de escalabilidade universal. A implementação da governança de recursos aproveita o gerenciamento de capacidade de nível de partição de backend e o balanceamento de carga entre máquinas.

https://2.bp.blogspot.com/-bXQbtk0221Q/XLEJPUBFoDI/AAAAAAAAHyY/FKkzPKgD2BUDcDt3RkYDrm-C2-StelBJQCK4BGAYYCw/s640/topology.png

Contribuições do Cosmos DB

Aproveitando as fundações de datastore nativas da nuvem acima, o Cosmos DB fornece um banco de dados quase “um tamanho”. Ele fornece acesso local a dados com baixa latência e alta taxa de transferência, oferece garantias de consistência sintonáveis dentro e entre datacenters e fornece uma ampla variedade de modelos de dados e APIs que aproveitam o poderoso suporte de indexação e consulta. Como o Cosmos DB suporta um espectro de garantias de consistência e funciona com um conjunto diversificado de backends, ele resolve as empresas de problemas de integração enfrentam quando várias equipes usam bancos de dados diferentes para atender a diferentes casos de uso. A grande maioria dos outros armazenamentos de dados fornece uma consistência eventual, forte ou ambas. Por outro lado, o espectro de consistência garante que o Cosmos DB atende às necessidades de consistência e disponibilidade de todos os aplicativos corporativos, aplicativos da Web e aplicativos móveis. 


O Cosmos DB permite que os aplicativos decidam o que é melhor para eles e façam compensações de disponibilidade de consistência diferentes. Uma loja eventualmente consistente permite o estado divergente por um período de tempo em troca de mais disponibilidade e menor latência e talvez adequado para aplicativos de consistência relaxada, como sistemas de recomendação ou mecanismos de pesquisa.

Por outro lado, um aplicativo de carrinho de compras pode exigir um “ler o seu próprio ” propriedade para a operação correta. Isso é servido pela garantia de consistência de sessão no Cosmos DB. Estender isso em muitos clientes requer fornece “ler mais recentes gravações” semântica e requer consistência. Isso garante a coordenação entre muitos clientes do mesmo aplicativo e facilita o trabalho do desenvolvedor do aplicativo. A consistência é preservada em uma única região, bem como em todas as regiões associadas. O modelo dessa consistência de staleness limitado garante qualquer solicitação de leitura retorna um valor dentro das versões k mais recentes ou t tempo. Oferece a ordem total global exceto dentro da janela do staleness, consequentemente é uma garantia ligeiramente mais fraca.

Outra maneira que o Cosmos DB consegue se tornar um banco de dados All-in-One é fornecendo várias APIs e servindo diferentes modelos de dados. Aplicativos Web e móveis precisam de um espectro de opções/alternativas para seus modelos de dados: alguns aplicativos aproveitam modelos mais simples, como chave-valor ou coluna-família, e ainda alguns outros aplicativos exigem modelos de dados mais especializados, como lojas de documentos e gráficos.

O Cosmos DB foi projetado para oferecer suporte a APIs e modelos de dados projetando o armazenamento interno de documentos em representações diferentes, dependendo do modelo selecionado. Os clientes podem escolher entre APIs de gráfico do documento, SQL, tabela do Azure, Cassandra e Gremlin para interagir com seu datastore. Isso não só oferece grande flexibilidade para nossos clientes, mas também permite migrar facilmente seus aplicativos para o Cosmos DB.

Por fim, o Cosmos DB fornece os SLAs mais apertados no setor. Em contraste com muitos outros bancos de dados que fornecem apenas SLAs de disponibilidade, também fornece SLAs de consistência, SLAs de latência e SLAs de throughput. O Cosmos DB garante que as operações de leitura e gravação tenham menos de 10 ms no percentil 99 para um objeto típico de 1KB.

https://1.bp.blogspot.com/-Srf1ht-LNUw/XLEJj6Nq8mI/AAAAAAAAHyo/GXyJ1P9DQooWJAZEEGokaUaYebU6VSwwACK4BGAYYCw/s640/cosmoslayers.png

 Os SLAs para throughput garantem que os clientes recebam a taxa de transferência equivalente aos recursos provisionados para a conta via RUs.

Post anterior
[Webinar] Automatizando análise de dados qualitativos com Inteligência Artificial
Próximo post
[Webinar] Boas práticas para aumentar o desempenho e a performance dos relatórios no Power BI

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Preencha esse campo
Preencha esse campo
Digite um endereço de e-mail válido.

Menu