Bancos de Dados NewSQL

Neste artigo vamos focar nos bancos de dados NewSQL. Esse termo surgiu para descrever sistemas que buscam unir a consistência transacional (ACID) típica de bancos relacionais com a escalabilidade horizontal de soluções NoSQL. Exemplos incluem Google Spanner (e derivados como CockroachDB, YugaByteDB, TiDB). Avaliaremos os mesmos sete critérios que vimos até agora, atribuindo notas de 0 a 10, lembrando que cada produto específico pode apresentar variações.


1. Curva de Facilidade de Aprendizado

Nota: 7/10

Por Que

  • Muitos bancos NewSQL tentam ser compatíveis com a sintaxe SQL (por exemplo, CockroachDB e YugaByteDB, que suportam comandos compatíveis com PostgreSQL).
  • A base de consultas (SQL) é familiar, mas configurar um cluster distribuído, entender replicação e particionamento pode demandar um estudo adicional.

Observações

  • Operar um banco de dados NewSQL requer conhecimento de cluster e rede (por exemplo, latências entre nós).
  • Em contrapartida, se a equipe já domina PostgreSQL, migrar para CockroachDB (que finge ser “Postgres-like”) facilita o aprendizado no plano de queries, mas não na configuração de nós.

2. Facilidade de Modelagem de Dados

Nota: 8/10

Por Que

  • O modelo relacional prevalece: tabelas, colunas, constraints, possivelmente com índices secundários e transações ACID.
  • Para quem vem do mundo SQL, a modelagem é muito parecida com a de um banco relacional tradicional.

Observações

  • Alguns NewSQL (como TiDB) suportam “quase 100%” do dialeto MySQL, enquanto outros (CockroachDB) se aproximam de PostgreSQL.
  • Restrições e recursos como foreign keys, constraints, ou stored procedures podem estar parcialmente implementados, dependendo do produto e versão.

3. Escalabilidade / Taxa de Transferência

Nota: 8/10

Por Que

  • O objetivo central do NewSQL é escalar horizontalmente mantendo uma interface SQL e transações.
  • Produtos como CockroachDB ou YugaByteDB permitem adicionar nós ao cluster, redistribuindo dados e aumentando capacidade.

Observações

  • O desempenho pode não atingir a mesma “simplicidade de escalabilidade” que bancos NoSQL puros (ex.: Cassandra), pois manter transações ACID distribuídas é complexo.
  • Ainda assim, eles tendem a oferecer boa escalabilidade para grande parte dos cenários.

4. Disponibilidade e Tolerância de Partição

Nota: 8/10

Por Que

  • A maioria dos NewSQL foi arquitetada para rodar em clusters distribuídos, espalhando réplicas de dados pelos nós. Assim, são capazes de tolerar falhas de máquina ou até zonas de disponibilidade.
  • CockroachDB, por exemplo, assegura que cada range de dados tenha réplicas espalhadas, podendo sobreviver à queda de um nó. YugaByte e Spanner usam replicação sincrona com protocolos de consenso (Raft ou Paxos).

Observações

  • A “prioridade” pode estar em consistência e escalabilidade, mas a tolerância a partição depende do protocolo de consenso. Em caso de partição de rede severa, pode haver degradação no throughput de escrita, pois é preciso atingir quórum.
  • Ainda assim, a disponibilidade é bem superior a de um único servidor relacional.

5. Consistência

Nota: 9/10

Por Que

  • Esse é o diferencial: NewSQL busca manter consistência forte (ACID) mesmo em ambientes distribuídos. Muitos usam protocolos de consenso (Raft, Paxos) para garantir que leituras e escritas sejam seriáveis.
  • Google Spanner, por exemplo, oferece external consistency (uma forma de serializabilidade global com timestamps exatos).

Observações

  • Uma transação que abrange nós em regiões diferentes pode ter latência maior, pois necessita “consenso”.
  • Em contrapartida, se o projeto exige dados fortemente consistentes, NewSQL é uma opção poderosa, evitando a complexidade de gerenciar consistência manualmente.

6. Suporte, Maturidade, Comunidade e Compatibilidade

Nota: 7/10

Por Que

  • É um segmento mais recente do que bancos relacionais clássicos ou NoSQL mais antigos (ex.: Cassandra). Então, o ecossistema e a quantidade de profissionais experientes podem ser menores.
  • Grandes empresas já usam Google Spanner, mas é proprietário. CockroachDB tem uma crescente comunidade e suporte comercial, YugaByte também, mas ainda não tão difundidos quanto MySQL ou PostgreSQL.

Observações

  • Em termos de compatibilidade SQL, muitos afirmam compatibilidade parcial ou quase completa com Postgres/MySQL, mas pode haver funções ou extensões faltando.
  • A maturidade depende do produto: alguns estão em estágios avançados (CockroachDB, YugaByte) com versões enterprise e suporte, mas ainda longe do histórico de 20+ anos de PostgreSQL.

7. Prioridade de Leitura e Gravação

Nota: 8/10

Por Que

  • O foco desses bancos é atender alto throughput tanto em leituras quanto em escritas distribuídas.
  • No entanto, manter transações ACID com múltiplos nós e consenso aumenta a latência em comparação a NoSQL “AP” (como Cassandra) que sacrifica consistência rigorosa.

Observações

  • Para aplicações que fazem muitas escritas de baixa latência com “eventual consistency” tolerável, um KV ou column-family puro pode ser mais rápido.
  • Se a aplicação valoriza transações e fortes garantias, NewSQL equilibrará leituras/escritas distribuídas com consistência global.

Resumo das Notas

Característica Nota
Curva de Facilidade de Aprendizado 7/10
Facilidade de Modelagem de Dados 8/10
Escalabilidade / Taxa de Transferência 8/10
Disponibilidade e Tolerância de Partição 8/10
Consistência 9/10
Suporte, Maturidade, Comunidade, Compatibilidade 7/10
Prioridade de Leitura e Gravação 8/10

Conclusão

Os bancos de dados NewSQL representam uma proposta de unir:

  • Consistência e modelo relacional (com transações ACID).
  • Escalabilidade horizontal e alta disponibilidade típicas de soluções NoSQL.

Eles são ideais quando o projeto exige:

  1. Modelo SQL (facilidade de query e transações ACID)
  2. Distribuição e escalabilidade (dados em vários nós/zonas)
  3. Consistência forte mesmo em cenários distribuídos.

Eles podem não ser a melhor escolha quando:

  • Se busca a máxima simplicidade de escalabilidade e se tolera consistência eventual (bancos NoSQL AP puros podem ser mais simples ou mais rápidos).
  • Se o time não está pronto para gerenciar a complexidade de um cluster distribuído que precisa de consenso para cada gravação.

Em suma, NewSQL é uma opção poderosa para aplicações que requerem o melhor dos dois mundos: transações SQL robustas e desempenho escalável em múltiplos nós. Apesar de ainda mais recente e com menor comunidade do que bancos SQL clássicos, vem ganhando espaço em sistemas que não podem abrir mão de consistência mas precisam crescer horizontalmente sem limites aparentes.

Notas Bibliográficas

  1. Arquitetura de Software: As Partes Difíceis. Editora Alta Books.