SQL distribuído - Distributed SQL

Um banco de dados SQL distribuído é um único banco de dados relacional que replica dados em vários servidores. Os bancos de dados SQL distribuídos são fortemente consistentes e a maioria oferece suporte à consistência em racks, data centers e redes de longa distância, incluindo zonas de disponibilidade de nuvem e zonas geográficas de nuvem . Os bancos de dados SQL distribuídos geralmente usam os algoritmos Paxos ou Raft para obter consenso entre vários nós.

Às vezes, os bancos de dados SQL distribuídos são chamados de NewSQL, mas NewSQL é um termo mais abrangente que inclui bancos de dados que não são bancos de dados distribuídos .

História

O Spanner do Google popularizou o conceito moderno de banco de dados SQL distribuído. O Google descreveu o banco de dados e sua arquitetura em um white paper de 2012 chamado "Spanner: Google's Globally-Distributed Database". O artigo descreveu o Spanner como tendo evoluído de um armazenamento de valor de chave semelhante a uma Big Table para um banco de dados de várias versões temporais, onde os dados são armazenados em "tabelas semi-relacionais esquematizadas".

O Spanner usa relógios atômicos com o algoritmo Paxos para obter consenso em relação ao estado distribuído entre os servidores. Em 2010, e na implementação anterior, o ClustrixDB mudou de um dispositivo de hardware para um banco de dados de software baseado em Paxos e foi posteriormente adquirido pela MariaDB como Xpand e adicionado a uma oferta de nuvem SaaS chamada SkySQL . Em 2017, dois engenheiros do Google deixaram a empresa para criar o banco de dados Cockroach, que alcança resultados semelhantes usando o algoritmo Raft sem relógios atômicos ou hardware personalizado. Depois disso, outros fornecedores entraram no mercado, como SkySQL e YugabyteDB da MariaDB. Além das declarações de implementação e desempenho, essas ofertas podem ser executadas em várias nuvens ou infraestrutura públicas e, em alguns casos, privadas.

O Spanner é usado principalmente para casos de uso transacionais e de série temporal. No entanto, o Google aprofundou essa pesquisa com um artigo complementar sobre o Google F1, que ele descreve como um banco de dados de processamento analítico / transacional híbrido construído no Spanner.

Arquitetura

Os bancos de dados SQL distribuídos têm as seguintes características gerais:

  • replicação síncrona
  • forte consistência transacional em pelo menos zonas de disponibilidade (ou seja, conformidade com ACID )
  • estrutura de front-end de banco de dados relacional - significando dados representados como tabelas com linhas e colunas semelhantes a qualquer outro RDBMS
  • armazenamento de dados fragmentado automaticamente
  • armazenamento de valor-chave subjacente
  • implementação de SQL nativo

Seguindo o Teorema CAP , os bancos de dados SQL distribuídos são "CP" ou consistentes e tolerantes a partições. Algoritmicamente, eles sacrificam a disponibilidade, pois uma falha de um nó primário pode tornar o banco de dados indisponível para gravações. No entanto, a disponibilidade é alcançada por meio de maior confiabilidade de software e hardware, a escolha de novos primários e métodos de recuperação heurística.

Todas as implementações de SQL distribuídas requerem algum tipo de sincronização temporal para garantir a consistência. Com exceção do Spanner, a maioria não usa hardware personalizado para fornecer relógios atômicos. O Spanner é capaz de sincronizar gravações com garantias temporais. As implementações sem hardware personalizado requerem que os servidores comparem os deslocamentos do relógio e, potencialmente, repitam as leituras.

Comparado com NewSQL

CockroachDB e outros às vezes se referem a si próprios como bancos de dados NewSQL . Alguns dos bancos de dados NewSQL, como Citus e Vitess, têm arquiteturas fundamentalmente diferentes, mas foram citados como exemplos de NewSQL por Matthew Aslett, que cunhou o termo. Em essência, os bancos de dados SQL distribuídos são construídos a partir do zero e os bancos de dados NewSQL incluem tecnologias de replicação e fragmentação adicionadas aos bancos de dados relacionais cliente-servidor existentes, como PostgreSQL . Alguns especialistas definem bancos de dados DistributedSQL como um subconjunto mais específico de bancos de dados NewSQL.

Referências

  1. ^ a b c https://storage.googleapis.com/pub-tools-public-publication-data/pdf/41344.pdf
  2. ^ Higginbotham, Stacey (3 de maio de 2010). "Clustrix constrói o Santo Graal da escala da Web: um banco de dados que escala" . gigaom.com .
  3. ^ "MariaDB adquire Clustrix" .
  4. ^ Baer (dbInsight), Tony. “Para MariaDB, é hora de juntar as peças” . ZDNet .
  5. ^ Morgan, Timothy Prickett (22 de fevereiro de 2017). "Google Spanner inspira o CockroachDB a superá-lo" . A próxima plataforma .
  6. ^ "A arquitetura de um banco de dados SQL distribuído" - via www.youtube.com.
  7. ^ "DZone" . dzone.com .
  8. ^ "Vivendo sem relógios atômicos" . Cockroach Labs . 21 de abril de 2020.
  9. ^ "O que falamos quando falamos sobre NewSQL - Muita informação" .
  10. ^ "Bancos de dados SQL vs. NoSQL: Qual é a diferença?" . www.ibm.com .
  11. ^ Prabagaren, Gokul (30 de outubro de 2019). "NewSQL - A próxima evolução em bancos de dados" . Médio .