Uma visão geral do Cosmos DB

Concluído

Se você tiver um banco de dados local funcional, por que deve considerar movê-lo para um serviço de nuvem, como o Azure? Da mesma forma, por que considerar a implementação de um novo sistema de banco de dados no Azure? Muitas empresas realizam essa migração porque é fácil e barato criar um serviço altamente disponível e escalável na nuvem.

Em sua empresa de tecnologia IoT, você está gastando muito tempo administrativo executando bancos de dados NoSQL em vários sistemas locais, incluindo Cassandra e MongoDB. Você acha que pode reduzir esse trabalho migrando os bancos de dados para o Azure, mas deseja saber mais sobre o suporte que o Azure tem para dados semiestruturados e quanto trabalho seria necessário para concluir a migração. Você não deseja modificar o software dos dispositivos IoT para dar suporte a essa migração, além de uma simples reconfiguração.

Aqui, você aprenderá sobre os recursos e tecnologias no Azure que você pode usar para hospedar bancos de dados NoSQL.

Disponibilidade

A disponibilidade garantida pelos SLAs (contratos de nível de serviço) do Azure depende dos detalhes precisos da sua implementação, mas eles são sempre altos. Por exemplo, para o Azure Cosmos DB em uma única região, a Microsoft garante 99,99% de disponibilidade sem custo adicional. Se implantado em várias regiões, a Microsoft aumenta essa garantia para 99,999% para disponibilidade de leitura e gravação.

Se você quisesse obter essa disponibilidade em uma rede local, teria que arquitetar um sistema resiliente a falhas de hardware. Você precisaria de:

  • Vários servidores físicos.
  • Um balanceador de carga que pode redirecionar consultas se houver uma falha do servidor.
  • Uma rede de área de armazenamento que compartilha dados entre servidores ou uma maneira de replicar dados entre servidores.
  • Hardware de rede resiliente.
  • Um datacenter controlado ambientalmente.
  • Fontes de alimentação ininterruptas e geradores de backup.

Todos esses componentes são caros e exigem habilidade para implementar e executar. Consumiriam também recursos administrativos significativos. Com o Azure, esses requisitos já estão resolvidos; basta criar o banco de dados e a alta disponibilidade é incorporada.

Escalabilidade

Se sua base de usuários cresce, a demanda do sistema cresce com ela. Cada sistema local tem uma capacidade máxima — se você se aproximar desse limite, deverá aumentá-lo adicionando mais hardware. Não é possível adicionar capacidade instantaneamente. Em vez disso, você deve comprar o hardware, instalar o sistema operacional e o software necessários, aplicar atualizações e adicionar os dados à nova instância do banco de dados. Todas estas coisas levam tempo.

Lembre-se também que a alta demanda é muitas vezes temporária. Por exemplo, se você executar uma campanha de marketing bem-sucedida, poderá ver um pico no tráfego, seguido por um retorno à demanda menor. Em uma configuração local, você precisa projetar o sistema para esses picos. Ao projetar para picos de carga, isso significa que o sistema é subutilizado na maioria das vezes, mas ainda fatura e requer manutenção.

Esses desafios são muito mais fáceis de superar na nuvem. Se o seu sistema atingir sua capacidade, você poderá responder rapidamente — por exemplo, movendo-se para uma camada maior ou adicionando máquinas virtuais. Se a demanda cair, você economizará dinheiro rapidamente removendo a capacidade. No Azure, você paga apenas pela capacidade usada.

O que é o Cosmos DB?

O Azure Cosmos DB é um sistema de banco de dados multimodelo e distribuído globalmente baseado em nuvem da Microsoft. Como o banco de dados está hospedado no Azure Cosmos DB, ele está sempre disponível e online e pode ser hospedado em um datacenter próximo aos usuários para fornecer baixa latência. Além disso, o Azure permite que o Cosmos DB seja dimensionado de forma elástica para cima e para baixo. A expansão para cima e para baixo fornece a capacidade e o desempenho necessários sem pagar por recursos não utilizados.

Além de hospedar dados próximos a usuários com mais de 54 regiões na nuvem pública, você pode adicionar mais regiões do Azure à sua solução do Cosmos DB a qualquer momento. Ao adicionar regiões, você terá replicação automática e a capacidade de hospedar dados próximos aos usuários, mesmo que essa base de usuários seja distribuída globalmente. Essa replicação usa um modelo mestre múltiplo e, portanto, não é necessário haver um editor e assinantes. O modelo aparecerá para os usuários como se todos estivessem usando um único banco de dados centralizado.

Ao integrar-se com o Azure e replicar em várias regiões, o Cosmos DB fornece um contrato de nível de serviço (SLA) para 99,999% de disponibilidade. O Cosmos DB é usado por muitos produtos e serviços da Microsoft, incluindo Skype, Xbox e Microsoft 365, e, portanto, foi exaustivamente testado durante um longo período de tempo desde sua criação como Project Florence em 2010 e, em seguida, disponibilidade pública como Banco de Dados de Documentos do Azure.

O Cosmos DB tem uma variedade de APIs para interagir com seus dados. Essas APIs incluem SQL, MongoDB, Cassandra, Gremlin e Armazenamento de Tabela do Azure e provavelmente serão unidas por mais APIs no futuro.

Os principais benefícios do Cosmos DB

Distribuição global

O Cosmos DB permite que você adicione ou remova regiões sem problemas para garantir que os dados estejam próximos dos usuários e melhorar a disponibilidade. Não há necessidade de administrar a replicação ao adicionar uma região, pois os dados são replicados automaticamente usando um modelo multimestre e os aplicativos podem até ser usados enquanto uma região é adicionada.

Sempre ativo

O Azure fornece altos níveis de disponibilidade e o Cosmos DB tem um SLA de 99,99% quando implantado em uma única região. Ao implantar em mais de uma região, você pode se beneficiar de um SLA de 99,999%. Várias regiões permitem que seus dados estejam disponíveis se houver uma interrupção regional e, mesmo que uma região do Azure nunca possa ser recuperada, não haverá perda de dados em uma implantação de várias regiões. O Cosmos DB é o único serviço deste tipo a oferecer este nível de SLA.

Escalabilidade elástica

A quantidade de dados de quase todos os sistemas não é estática. Os sistemas locais tradicionais necessitavam de ser dotados de capacidade de crescimento num futuro previsível, o que exigia uma sobrecapacidade significativa a curto prazo. Com o Cosmos DB, você paga pelo que usa e não precisa provisionar demais. Ao pagar uma taxa mensal pela taxa de transferência gerada e pela quantidade de GB armazenada, você está pagando apenas pelo que usar. Se mais dados ou taxa de transferência forem necessários, eles estarão disponíveis instantaneamente e serão ilimitados com uma coleção particionada.

Baixa latência garantida

O Cosmos DB garante latência inferior a 10 ms para leituras indexadas e para gravações globalmente.

Modelos de consistência

O planejamento de consistência é essencial para qualquer banco de dados com vários usuários e, mais ainda, para uma solução distribuída globalmente. À medida que a consistência aumenta, a disponibilidade e a taxa de transferência diminuem, enquanto a latência aumenta. Para simplificar a consistência, o Cosmos DB tem cinco níveis que, quando listados do mais consistente para o menos consistente, são Forte, Obsoleta Delimitada, Sessão, Prefixo Consistente e Eventual. Os SLAs para seu banco de dados do Cosmos DB dependem do modelo de consistência escolhido.

Gerenciamento de esquema e índice

Com o Cosmos DB, não há gerenciamento de esquema ou índice. O Cosmos DB indexa automaticamente todos os dados, embora você possa substituir a indexação automática e o mecanismo do Cosmos DB seja independente do esquema.