☕ Um Café no Bellacosa Mainframe
Gostou do conteúdo? Ajude a manter o café quente, o COBOL compilando e o mainframe acordado. 😄
☕ Pague um café ao Bellacosa

Translate

Mostrar mensagens com a etiqueta Replicação. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Replicação. Mostrar todas as mensagens

segunda-feira, 9 de novembro de 2020

Escalando Bancos de Dados sem Entrar em Hiperespaço Quando um Programador COBOL Descobre que um Banco de Dados Também Pode Crescer Como uma Galáxia

 

Bellacosa Mainframe uma visão escalando banco de dados 

☕ Um Café no Bellacosa Mainframe

Escalando Bancos de Dados sem Entrar em Hiperespaço

Quando um Programador COBOL Descobre que um Banco de Dados Também Pode Crescer Como uma Galáxia — e que o Verdadeiro Vilão Nunca Foi a CPU, Mas a Arquitetura

"NÃO ENTRE EM PÂNICO."

Esta talvez seja a frase mais importante para qualquer programador COBOL que acabou de ouvir alguém dizer:

"O banco não aguenta mais."

Se você leu O Guia do Mochileiro das Galáxias, sabe que o Universo inteiro parece funcionar na base da improvisação extremamente sofisticada.

No mundo dos bancos de dados corporativos acontece exatamente a mesma coisa.

Tudo parece simples.

Até o dia em que o sistema recebe dez vezes mais usuários.

Depois cem vezes.

Depois mil vezes.

E, de repente, aquele pequeno Db2 que atendia tranquilamente uma agência bancária agora precisa responder milhões de consultas por minuto, conversar com centenas de aplicações, suportar APIs REST, aplicativos móveis, sistemas em nuvem, filas MQ, microsserviços, IA, analytics e ainda continuar respondendo em menos de alguns milissegundos.

É nesse momento que o Padawan COBOL olha para o monitor 3270 e pergunta:

— Mestre... colocamos mais memória?

O mestre apenas toma um gole de café e responde:

— Jovem viajante... escalar um banco nunca foi apenas comprar um computador maior.

Pegue sua toalha.

Hoje vamos atravessar a galáxia da escalabilidade.


Capítulo 1 — O Universo Sempre Cresce

Existe uma lei cósmica da computação.

Todo sistema que funciona...

...um dia ficará pequeno.

Não importa se é:

  • um banco digital

  • um supermercado

  • uma companhia aérea

  • uma seguradora

  • um ERP

  • um sistema COBOL criado em 1989

Todos crescem.

Mais usuários.

Mais dados.

Mais integrações.

Mais consultas.

Mais relatórios.

Mais APIs.

Mais inteligência artificial.

Mais tudo.

O curioso é que o programa COBOL continua praticamente igual.

O que muda é o mundo ao redor.


O Primeiro Erro dos Iniciantes

O iniciante normalmente acredita que desempenho significa:

"Comprar um servidor maior."

Isso funciona...

...até deixar de funcionar.

Imagine uma biblioteca.

Você pode comprar uma mesa maior.

Depois uma sala maior.

Depois um prédio maior.

Mas chega um momento em que o problema não é mais o tamanho do prédio.

É a organização dos livros.

Com bancos de dados acontece exatamente isso.


O Computador Não é o Gargalo

Essa talvez seja uma das maiores descobertas da carreira.

Na maioria dos grandes ambientes, CPU não é o primeiro problema.

Os verdadeiros inimigos costumam ser:

  • SQL ruim

  • índices mal projetados

  • bloqueios

  • espera por disco

  • leitura desnecessária

  • cache inexistente

  • excesso de conexões

  • modelo de dados inadequado

  • programas fazendo milhares de acessos repetidos

É como tentar atravessar a galáxia usando um foguete com o freio de mão puxado.


Primeira Lei Galáctica do Bellacosa

Nunca compre hardware antes de descobrir onde está o gargalo.

Os mestres do desempenho investigam.

Não adivinham.


Capítulo 2 — Scale Up: Alimentando o Dragão

A primeira técnica chama-se Vertical Scaling.

Ou simplesmente:

Scale Up.

Imagine um servidor.

Ele possui:

8 CPUs

64 GB RAM

2 TB SSD

O sistema cresce.

A solução mais simples é trocar por outro servidor.

Agora temos:

64 CPUs

1 TB RAM

40 TB NVMe

Nada muda para o programador.

Os programas COBOL continuam funcionando.

O endereço do Db2 continua igual.

O CICS nem percebe.

É como trocar uma Kombi por um caminhão.


Vantagens

É simples.

É rápido.

Não exige alterar programas.

Não exige redistribuir dados.

Não exige reescrever aplicações.


Mas existe um problema...

Não existe computador infinito.

Mais cedo ou mais tarde você chega ao maior equipamento disponível.

E então?


Curiosidade Galáctica

Os mainframes IBM são praticamente os campeões mundiais do Scale Up.

Eles conseguem crescer verticalmente em níveis que servidores convencionais dificilmente alcançam.

É uma das razões pelas quais bancos e seguradoras continuam utilizando IBM Z.


Capítulo 3 — Scale Out: Construindo uma Frota Espacial

Agora imagine outra filosofia.

Ao invés de um computador gigantesco...

Temos cem computadores menores.

Todos trabalhando juntos.

Esse é o Horizontal Scaling.

Também chamado:

Scale Out.

Agora o banco não mora em apenas uma máquina.

Ele mora em várias.

É como transformar um único cargueiro imperial em uma frota inteira.


Onde isso aparece?

MongoDB

Cassandra

CockroachDB

Yugabyte

Redis Cluster

ElasticSearch

Kafka

Google

Netflix

Amazon

Facebook

Todos trabalham distribuindo carga.


A vantagem

Quando precisa crescer...

Basta adicionar mais nós.


A desvantagem

Tudo fica absurdamente mais complicado.

Agora aparecem palavras assustadoras.

Leader Election.

Consensus.

Replication.

Consistency.

Split Brain.

Network Partition.

Failover.

Latência.

É aqui que muitos arquitetos passam a dormir menos.


Easter Egg nº 1

Assim como Marvin, o robô depressivo do Guia do Mochileiro, muitos bancos distribuídos também passam boa parte do tempo "pensando" se todos os nós ainda concordam entre si.

Essa conversa silenciosa entre servidores é muito mais frequente do que imaginamos.


Capítulo 4 — Replicação: Clones Não São Ficção Científica

Imagine que existe apenas um banco.

Todo mundo consulta.

Todo mundo grava.

Logo ele fica sobrecarregado.

Então surge uma ideia genial.

Copiar o banco.

Criamos:

Banco Principal

Replica 1

Replica 2

Replica 3

Agora milhões de usuários podem consultar as réplicas.

Enquanto apenas um servidor recebe gravações.


O segredo

Na maioria dos sistemas:

Leitura representa mais de 90%.

Escrita representa apenas uma pequena parcela.

Então distribuir leituras faz enorme diferença.


Tipos

Leader-Follower

Primary-Replica

Multi-Leader

Cada um possui vantagens diferentes.


Curiosidade

Em muitos bancos digitais brasileiros, milhões de consultas de saldo são atendidas por réplicas, preservando o banco principal para as operações financeiras.


Capítulo 5 — Sharding: Dividindo a Galáxia

Imagine uma tabela.

CLIENTES

2 bilhões de registros.

Não cabe mais.

Então fazemos algo brilhante.

Dividimos.

Clientes A-H

Clientes I-P

Clientes Q-Z

Ou:

Sul

Sudeste

Nordeste

Centro-Oeste

Norte

Cada servidor guarda apenas parte do universo.

Esse processo chama-se Sharding.


O desafio

Como descobrir em qual servidor determinado cliente está?

Entra em cena:

Hash.

Range.

Geo.

Tenant.

UUID.

Essa escolha parece simples.

Na prática pode definir o sucesso ou o fracasso de toda uma arquitetura.


Capítulo 6 — Cache: A Memória Fotográfica

Imagine uma página mostrando um produto.

Milhões consultam.

Pouquíssimos alteram.

Por que perguntar ao banco toda vez?

Melhor guardar em memória.

É isso que Redis faz.

É isso que Memcached faz.

É exatamente o mesmo princípio dos Buffer Pools do Db2.

Guardar o que é usado frequentemente para evitar acessar o disco.


Curiosidade Mainframe

Muitos iniciantes descobrem Redis antes de descobrirem Buffer Pools.

Na prática...

Os Buffer Pools do Db2 já aplicam esse conceito há décadas.

Mudam as tecnologias.

Os princípios permanecem.


Capítulo 7 — Read/Write Splitting

Outra técnica elegante.

Toda escrita vai para o servidor principal.

Toda leitura vai para as réplicas.

INSERT

Primary

SELECT

Replica

Resultado?

Muito menos carga.

Muito mais desempenho.


Capítulo 8 — Connection Pool

Abrir conexão custa caro.

Muito caro.

Imagine mil usuários.

Cada um abre.

Fecha.

Abre.

Fecha.

Abre.

Fecha.

O banco enlouquece.

Connection Pool mantém conexões abertas.

As aplicações apenas reutilizam.

É como um elevador.

Ninguém constrói um elevador novo toda vez que quer subir um andar.


Capítulo 9 — Índices: O Índice do Guia do Mochileiro

Imagine procurar uma palavra em um livro de mil páginas.

Sem índice.

Você folheia tudo.

Com índice.

Vai direto para a página.

É exatamente isso que um índice faz.


Mas cuidado

Todo índice precisa ser atualizado.

Mais índices significam:

INSERT mais lento.

UPDATE mais lento.

DELETE mais lento.

Existe equilíbrio.


Easter Egg nº 2

No universo de Douglas Adams existe um peixe chamado Babel Fish.

No universo dos bancos existe algo parecido.

Chama-se Índice.

Ele traduz bilhões de registros em poucos milissegundos.


Capítulo 10 — Arquivamento

Nem tudo precisa permanecer no banco principal.

Pedidos de dez anos atrás.

Logs antigos.

Eventos históricos.

Podem ir para armazenamento frio.

S3.

Glacier.

Arquivos históricos.

No mainframe, tabelas particionadas e estratégias de arquivamento mantêm o ambiente produtivo enxuto sem perder a rastreabilidade.


Capítulo 11 — Otimização de SQL

Talvez o maior superpoder de todos.

Um SQL ruim pode consumir minutos.

O mesmo SQL otimizado pode responder em milissegundos.

Ferramentas como EXPLAIN PLAN, Visual Explain e o EXPLAIN do Db2 revelam como o otimizador "pensa". Ler um plano de acesso é quase como acompanhar um mapa estelar: você enxerga por onde a consulta está viajando, onde ela desperdiça energia e onde encontra atalhos.

Pequenas mudanças fazem enorme diferença:

  • evitar SELECT *

  • filtrar cedo

  • usar índices adequados

  • reduzir JOINs desnecessários

  • manter estatísticas atualizadas com RUNSTATS

  • reorganizar tabelas quando necessário com REORG

Muitas vezes, um único índice ou uma condição de busca mais seletiva elimina milhões de leituras de páginas.


Capítulo 12 — Database Federation

Existe uma diferença importante entre dividir dados e dividir responsabilidades.

No Sharding, uma mesma tabela é repartida.

Na Federação, cada domínio possui seu próprio banco.

Financeiro.

RH.

CRM.

Logística.

Cada equipe evolui independentemente.

É o equivalente arquitetural de uma federação planetária: cada planeta governa seus próprios assuntos, mas todos cooperam quando necessário.


Capítulo 13 — Bancos Distribuídos: A Federação Interplanetária

Sistemas como Cassandra, CockroachDB, YugabyteDB e DynamoDB nasceram para funcionar em múltiplas regiões geográficas.

Eles já incorporam mecanismos para:

  • replicação automática;

  • tolerância a falhas;

  • eleição de líderes;

  • sincronização entre nós;

  • recuperação após falhas;

  • distribuição transparente dos dados.

A ideia é que a perda de um servidor — ou até de um data center inteiro — não interrompa o serviço.

É um objetivo ambicioso e exige algoritmos sofisticados, como Raft e Paxos, que coordenam o consenso entre máquinas espalhadas pelo mundo.


O Que Isso Tem a Ver com COBOL?

Aqui está o grande segredo.

Muitos iniciantes acreditam que essas discussões pertencem apenas ao universo da nuvem.

Não pertencem.

Um programa COBOL faz:

EXEC SQL
   SELECT ...
END-EXEC.

Ele não sabe se o dado veio:

  • do servidor principal;

  • de uma réplica;

  • de um cache;

  • de uma partição;

  • de um cluster distribuído.

Quem decide isso é a arquitetura.

É por isso que um bom programador COBOL não estuda apenas a linguagem. Ele entende como o ecossistema inteiro funciona.


O Paralelo com o IBM Z

No IBM Z, muitos desses conceitos existem há décadas, ainda que com nomes diferentes.

Os Buffer Pools funcionam como um cache inteligente.

O Parallel Sysplex permite múltiplas imagens do z/OS trabalhando juntas.

O Data Sharing do Db2 distribui a carga entre membros do grupo.

Ferramentas de replicação sincronizam bancos locais e remotos.

WLM (Workload Manager) distribui recursos conforme a prioridade do negócio.

Ou seja, quando alguém fala em "arquitetura moderna", um veterano de mainframe costuma sorrir discretamente. Diversas dessas ideias já eram aplicadas em ambientes IBM muito antes de se tornarem populares na computação em nuvem.


As Doze Ferramentas do Mochileiro de Banco de Dados

Antes de encerrar sua viagem, coloque estes itens na mochila:

  1. Scale Up — quando um servidor maior resolve.

  2. Scale Out — quando vários servidores trabalham juntos.

  3. Replicação — distribua leituras e aumente a disponibilidade.

  4. Sharding — divida dados gigantes em partes administráveis.

  5. Cache — mantenha o que é mais usado perto do processador.

  6. Read/Write Splitting — especialize quem lê e quem grava.

  7. Connection Pooling — reutilize conexões, não desperdice recursos.

  8. Índices Inteligentes — acelere buscas sem exagerar.

  9. Arquivamento — mantenha o banco principal enxuto.

  10. SQL Otimizado — o ganho mais barato e frequentemente o mais impactante.

  11. Federação — separe domínios de negócio.

  12. Bancos Distribuídos — pense globalmente quando o negócio exigir.


Curiosidades Galácticas

  • O primeiro gargalo raramente é a CPU; na maioria das vezes, é uma decisão arquitetural tomada anos antes.

  • O Db2 possui um dos otimizadores de consultas mais sofisticados do mercado, capaz de escolher automaticamente entre diferentes planos de acesso.

  • Em muitos sistemas corporativos, mais de 90% das operações são leituras, justificando o uso intenso de réplicas e caches.

  • Um índice pode acelerar uma consulta em milhares de vezes, mas também aumentar o custo de cada atualização da tabela.

  • Grandes empresas costumam combinar várias dessas técnicas simultaneamente: cache, replicação, particionamento, arquivamento e otimização de consultas trabalham em conjunto.


Última Página do Guia

No fim da jornada, o Padawan pergunta ao Mestre Bellacosa:

— Afinal... qual é a melhor técnica de escalabilidade?

O mestre sorri, toma mais um gole de café e responde:

— A melhor técnica é descobrir primeiro qual problema você realmente tem. Não existe algoritmo mágico, servidor infinito ou banco de dados perfeito. Existe observação, medição, entendimento da carga de trabalho e escolhas conscientes.

O Padawan olha para o 3270, vê o Db2 respondendo em poucos milissegundos e finalmente compreende.

Escalar um banco de dados não é construir o maior computador da galáxia.

É construir uma arquitetura capaz de continuar funcionando quando a galáxia inteira decidir acessá-la ao mesmo tempo.

E, como diria o Guia do Viajante das Galáxias, nunca se esqueça da sua toalha. No universo da engenharia de software, ela pode não limpar Buffer Pools nem reorganizar índices, mas certamente lembrará você de manter a calma enquanto procura o verdadeiro gargalo escondido entre bilhões de registros.


Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...