Guerras do banco de dados em nuvem: Google Spanner versus Microsoft CosmosDB

Guerras do banco de dados em nuvem: Google Spanner versus Microsoft CosmosDB
Author

Bernard Golden

Last updated May 29, 2018


  • 5409 Views

Uma das razões pelas quais a computação em nuvem é uma força tão poderosa no setor hoje é a inovação que os provedores estão fornecendo. A AWS é famosa pelo ritmo impressionante em que novos recursos e serviços são lançados (veja a Figura 1). "

Figura 1: Melhorias anuais do recurso da AWS

O Google recentemente entregou o Spanner, um serviço de banco de dados SQL incrivelmente inovador que fornece consistência global, alavancando GPS e relógios atômicos.

Para não ficar de fora, a Microsoft respondeu com o CosmosDB , um serviço de banco de dados que, embora bastante diferente do Spanner, é tremendamente inovador à sua maneira. Eu considero o CosmosDB como um poderoso serviço de armazenamento que oferece grande escala e flexibilidade.

O poderoso serviço do CosmosDB pode ser mais difícil de entender devido a seus recursos exclusivos. A este respeito, é diferente de Spanner; que se beneficia do fato de que os bancos de dados relacionais são bem compreendidos funcionalmente. Vamos detalhar as principais diferenças entre os dois serviços de banco de dados para entender completamente os benefícios e atributos de cada um.

A diferença entre a chave e o CosmosDB

É relativamente fácil entender os aspectos exclusivos do Spanner - como ele estende a tecnologia de banco de dados relacional de maneiras que são dignas de nota e aborda as deficiências que afetam os desenvolvedores de aplicativos. Dentro Em outras palavras, o Spanner é como o que os desenvolvedores sempre usaram, apenas muito melhor.

O CosmosDB, por outro lado, oferece casos de uso altamente flexíveis e fornece várias opções para acesso de estado de dados. Ambos são importantes, mas são diferentes do que estava disponível no passado, por isso é necessário entender a funcionalidade antes que se possa reconhecer o que torna o CosmosDB tão inovador.

Vamos começar discutindo a arquitetura do CosmosDB. A Microsoft descreve isso como estruturado em torno de contêineres de armazenamento (Nota: isso não parece ter nada a ver com contêineres de execução como o Docker, mas implica um pool de armazenamento não vinculado a servidores ou dispositivos de armazenamento específicos, ou seja, uma construção de armazenamento virtual).

“Um contêiner de banco de dados do Azure Cosmos é um contêiner independente de esquema de entidades arbitrárias geradas pelo usuário e procedimentos armazenados, gatilhos e funções definidas pelo usuário (UDFs)”, de acordo com a Microsoft .

Em outras palavras, um CosmosDB é um contêiner de dados que é independente de esquema e pode ser operado de várias maneiras. Aqui está uma figura que representa a arquitetura do CosmosDB:

(Cortesia da imagem da Microsoft)

O termo chave aqui é "projeções". Internamente, o CosmosDB coloca todos os dados em um contêiner no qual a Microsoft rastreia automaticamente os atributos de dados individuais e seu relacionamento, mas - e aqui é onde sua inovação é mostrada - os dados podem ser projetados como chave bancos de dados de valor, documento ou gráfico, cada um dos quais pode ser acessado por uma API específica de caso de uso.

Em outras palavras, você pode usar o CosmosDB como qualquer um desses tipos de bancos de dados, dependendo do que seu aplicativo é melhor servido, mas sob as capas, é tudo um melange de dados. E, a propósito, se você usar o CosmosDB como um banco de dados de documentos, o Azure fornecerá recursos do SQL, incluindo acionadores e procedimentos armazenados. Mais uma vez, isso é extremamente inovador e muito útil.

Latência da rede

Há mais no CosmosDB que o armazenamento inteligente projetado por meio de uma variedade de APIs específicas de casos de uso.

Naturalmente, o CosmosDB pode espelhar dados em todo o mundo, para permitir acesso local de baixa latência. Isso levanta a questão de quão rapidamente as mudanças nos dados (ou o esquema que descreve os dados) podem ser propagadas.

Assim como o Spanner aproveita a rede de fibra de alcance global do Google para reduzir a latência, o mesmo acontece com o CosmosDB. Quando os usuários fazem uma alteração de esquema em um local, essa alteração é propagada para todos os outros locais do Azure definidos para fornecer acesso ao banco de dados por meio de uma versão espelhada. E a mudança de esquema é rápida - na ordem de milissegundos, o que significa que os aplicativos nunca estão muito desatualizados em termos da estrutura de dados com os quais podem trabalhar.

(OBSERVAÇÃO: A Microsoft declara que o serviço é sem esquema e que cada parte dos dados é indexada, mas o ponto é que quando você adiciona um campo a um banco de dados de valor-chave em um local, cada cópia desse banco de dados conhece e pode trabalhar com esse campo muito rapidamente. Eu chamo essa propagação de esquema).

Um segundo problema com latência aborda itens individuais de dados; Em outras palavras, se um aplicativo localizado em Dallas alterar os dados com os quais ele trabalha em um determinado momento, Em breve, uma versão espelhada desses dados, localizada em, por exemplo, em Mumbai, mostra que os dados foram alterados? Como você deve se lembrar, o Spanner aborda isso com um protocolo de confirmação de duas fases muito inteligente, acionado por relógios atômicos para garantir a consistência.

O CosmosDB o aborda de maneira um pouco diferente, oferecendo cinco opções diferentes de consistência de dados, variando de forte a eventual.

Assim, em nosso exemplo, o aplicativo pode ser configurado para solicitar consistência forte e garantir que, quando uma consulta for definida em relação a esses dados - independentemente do espelho de armazenamento em que o usuário do aplicativo seja executado - seja consistente durante todo o uso de os dados. Quaisquer alterações nos dados que sejam suficientes para os termos da consulta seriam excluídas do acesso da consulta.

Isso garante que nenhum dado inconsistente possa entrar sorrateiramente durante o uso limitado dos dados. Portanto, se alguém quiser ver o saldo atual de uma conta bancária e o aplicativo estiver com uma consistência forte, as transações que fluirem após a consulta de saldo serão excluídas nos dados retornados. Obviamente, dados consistentes são importantes para muitos aplicativos transacionais.

Por outro lado, se um aplicativo exibir fotos de férias e a coleção de fotos estiver sendo atualizada enquanto um usuário estiver visualizando a coleção, uma foto sendo adicionada à exibição provavelmente não será um grande problema.

The Bottom Line

O CosmosDB é uma oferta notavelmente inovadora por inúmeras razões, incluindo:

  • O uso de contêineres de dados que podem ser projetados como diferentes tipos de bancos de dados é único na minha experiência.
  • Seu fornecimento de uma interface SQL para documentar projeções, incluindo gatilhos e procedimentos armazenados, trará o uso do CosmosDB para as capacidades de habilidade de uma grande porcentagem da equipe técnica mundial. Em outras palavras, apesar das impressionantes bases técnicas do serviço, seu uso não está limitado a superprogramadores.
  • O flexível O modelo de consistência torna o CosmosDB adequado para uma grande variedade de casos de uso de aplicativos, desde os requisitos de dados mais restritos até os menos restritivos.

De uma perspectiva mais ampla, o CosmosDB é uma ilustração perfeita de como os grandes provedores de nuvem - AWS, Azure e Google (AAG) - estão mudando a própria natureza da indústria de TI.

Nenhum usuário final, por maior que seja, poderia esperar implementar um sistema de armazenamento como o CosmosDB. Sua escala e operação estariam além do pool de talentos e do orçamento de qualquer organização de TI individual.

É por isso que as organizações de TI mais experientes estão transferindo seu investimento de infraestrutura para aplicativos e concentrando seus esforços na alavancagem dos serviços inovadores que emergem dos provedores de nuvem da AAG.

Planejando uma carreira em Cloud Computing? Aqui estão os cursos populares

Confira nosso curso no AWS Tutorial For Beginners | Introdução ao AWS | O que é a AWS?

About the Author

Bernard Golden is the CEO of Navica & serves as advisor for CIO magazine. As the author of 4 books on virtualization and cloud computing, Bernard is a highly-regarded speaker and has keynoted cloud conferences around the world. Bernard is also among the ten most influential persons in cloud computing according to Wired.com

Recommended articles for you

What a Day in the Life of an AWS Solutions Architect Looks L...

Article

Top AWS Solution Architect Job Interview Questions and Answe...

Article

New Changes to AWS Certification Exam Focus on Architecting...

Article