☕ 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

segunda-feira, 3 de junho de 2019

🐒 Detetive Chimp e o Mistério do Banco de Dados que Jurava Ser Consistente

 

Bellacosa Mainframe apresenta DBMS

☕ Um Café no Bellacosa Mainframe

🐒 Detetive Chimp e o Mistério do Banco de Dados que Jurava Ser Consistente

DBMS, modelagem ER, SQL, normalização, índices, ACID, locks, concorrência, COMMIT, ROLLBACK e recovery investigados por um detetive que sabe que os dados sempre deixam pistas



Há uma coisa que aprendi observando sistemas durante muito tempo: quando um programa diz que “não fez nada”, comece procurando o log.

Quando um usuário afirma que “clicou apenas uma vez”, procure duas transações.

Quando uma aplicação garante que “ninguém alterou aquele registro”, procure um UPDATE.

E quando um banco de dados afirma que está tudo consistente...

...chame o Detetive Chimp.

Nosso investigador chega ao data center usando seu tradicional chapéu, examina o terminal 3270 e encontra a primeira pista:

03:17:00.001  TRANSACTION T1
03:17:00.003  TRANSACTION T2

Dois milissegundos.

Uma diferença ridiculamente pequena para um humano.

Uma eternidade para um computador.

Sobre a mesa há ainda cinco folhas intituladas DBMS Quick Revision Sheet. Elas falam de DBMS, ER Model, SQL, normalização, ACID, transações, concorrência e índices.

Chimp olha para aquilo.

— Interessante.

Acende seu cachimbo imaginário.

— Temos vários suspeitos.

E assim começa nosso caso.



🕵️ CAPÍTULO 1 — O cadáver era um banco de dados

Antes de investigar o crime precisamos entender a vítima.

DBMS significa:

Database Management System — Sistema Gerenciador de Banco de Dados.

Para o iniciante, é tentador pensar:

banco de dados = lugar onde guardamos informações.

Não está errado.

Mas é tão incompleto quanto dizer que um aeroporto é um lugar onde estacionamos aviões.

Um DBMS precisa armazenar, organizar, localizar, proteger, compartilhar, alterar e recuperar dados, além de arbitrar o que acontece quando diversos usuários tentam mexer neles simultaneamente.

Imagine:

              USUÁRIOS
                 │
                 ▼
          ┌─────────────┐
          │ APLICAÇÕES  │
          └──────┬──────┘
                 │
                 ▼
          ┌─────────────┐
          │    DBMS     │
          └──────┬──────┘
                 │
                 ▼
          ┌─────────────┐
          │    DADOS    │
          └─────────────┘

O DBMS fica entre as aplicações e os dados.

Mas Detetive Chimp imediatamente acrescentaria vários departamentos escondidos naquele retângulo:

                  DBMS
                    │
       ┌────────────┼─────────────┐
       │            │             │
     SQL        Segurança     Transações
       │            │             │
   Optimizer     Controle      Logging
       │                          │
   Access Path                  Recovery
       │
     Storage

É uma pequena cidade funcionando atrás de uma palavra de quatro letras.



🐒 CAPÍTULO 2 — O primeiro suspeito: SQL

Chimp encontra uma consulta:

SELECT NOME, LIMITE
FROM CLIENTE
WHERE CPF = :WS-CPF;

— Parece inocente.

O programador COBOL iniciante concorda.

Chimp continua:

— É exatamente por isso que devemos investigá-la.

SQL é uma linguagem declarativa.

Quando escrevemos:

SELECT NOME
FROM CLIENTE
WHERE CPF = '123';

estamos essencialmente dizendo:

“Db2, quero o nome do cliente cujo CPF é 123.”

Não estamos necessariamente dizendo:

“vá até determinado cilindro, encontre determinada página, leia o registro número 427...”

O DBMS precisa descobrir uma estratégia eficiente.

Simplificando:

SQL
 │
 ▼
PARSER
 │
 ▼
OPTIMIZER
 │
 ▼
ACCESS PATH
 │
 ├── INDEX?
 │
 ├── SCAN?
 │
 └── JOIN?
 │
 ▼
DADOS

Aqui aparece um personagem que aquelas folhas introdutórias mal conseguem explorar: o optimizer.

Ele analisa possibilidades para executar a consulta.

Portanto, duas consultas SQL que produzem resultados semelhantes podem apresentar comportamentos de performance radicalmente diferentes.

Saber escrever SQL é uma habilidade.

Entender como o banco chega aos dados é outra.



🧩 CAPÍTULO 3 — Antes do banco havia o mundo real

Chimp desenha três objetos no quadro:

CLIENTE
CONTA
TRANSAÇÃO

Antes de existir tabela, índice ou SELECT, alguém precisou transformar uma realidade de negócio em um modelo de dados.

É aí que entra o ER Model — Entity Relationship Model.

Temos três conceitos fundamentais:

ENTITY
ATTRIBUTE
RELATIONSHIP

Uma entidade pode ser:

CLIENTE

Seus atributos:

ID_CLIENTE
CPF
NOME
DATA_NASCIMENTO

Outra entidade:

CONTA

Com:

ID_CONTA
AGENCIA
SALDO

Existe então uma relação:

CLIENTE ───── POSSUI ───── CONTA

Um cliente pode possuir várias contas.

Podemos representar:

CLIENTE 1 ───────── N CONTA

Chimp bate o cachimbo no quadro.

— Eis uma pista importante: muitos crimes de dados começam antes de existir código.

Um modelo ruim acaba contaminando tabelas, programas, APIs, relatórios e integrações.



🔑 CAPÍTULO 4 — O caso das chaves desaparecidas

A apostila apresenta:

Super Key, Candidate Key, Primary Key, Alternate Key e Foreign Key.

Parece matéria de prova.

Não é.

Imagine:

CLIENTE
-----------------------
ID_CLIENTE
CPF
NOME

Escolhemos:

ID_CLIENTE → PRIMARY KEY

Outra tabela:

CONTA
-----------------------
ID_CONTA
ID_CLIENTE
SALDO

Aqui:

ID_CONTA   → PRIMARY KEY
ID_CLIENTE → FOREIGN KEY

Agora existe uma relação:

CLIENTE
 ID_CLIENTE
     │
     │
     ▼
CONTA
 ID_CLIENTE

A chave estrangeira representa uma relação entre os dados.

Sem integridade adequada poderíamos encontrar:

CONTA 999999
CLIENTE 777777

mas descobrir que:

CLIENTE 777777

não existe.

Chimp imediatamente pergunta:

— Então de quem é essa conta?

Silêncio no data center.

Temos um órfão de dados.


🧹 CAPÍTULO 5 — Normalização: arrumando a cena do crime

Agora encontramos uma tabela criada por alguém numa sexta-feira às 17:58:

PEDIDO
---------------------------------
CLIENTE
ENDERECO
PRODUTO1
PRECO1
PRODUTO2
PRECO2
PRODUTO3
PRECO3

Chimp olha horrorizado.

— Quem fez isso?

Ninguém responde.

Naturalmente.

A normalização procura organizar estruturas de dados reduzindo redundâncias e dependências problemáticas.

A apostila percorre:

1NF
 ↓
2NF
 ↓
3NF
 ↓
BCNF

Uma modelagem mais organizada poderia resultar em:

CLIENTE
   │
   │
   ▼
PEDIDO
   │
   │
   ▼
ITEM_PEDIDO
   │
   │
   ▼
PRODUTO

Isso reduz problemas clássicos de:

INSERT
UPDATE
DELETE

Imagine armazenarmos o endereço do cliente repetidamente em 30 mil pedidos.

Ele muda de endereço.

Quantas ocorrências precisam ser alteradas?

Esse tipo de redundância é terreno fértil para inconsistência.

Mas Chimp deixa uma observação importante no relatório:

Normalização é ferramenta de engenharia, não religião.

Projetos reais também consideram performance, padrões de acesso, volume, frequência de atualização e características específicas do workload.


🏦 CAPÍTULO 6 — Finalmente encontramos o dinheiro

Agora o caso fica sério.

Temos:

CONTA A = R$ 1.000
CONTA B = R$   500

Queremos transferir:

R$ 100

Conceitualmente:

A = A - 100
B = B + 100

Depois:

A = 900
B = 600

Perfeito.

Um programa COBOL poderia executar uma sequência equivalente a:

LER A
SUBTRAIR 100
UPDATE A

LER B
SOMAR 100
UPDATE B

Mas Chimp coloca uma banana exatamente entre os dois updates.

UPDATE A
   │
   ▼
A = 900

💥 ABEND S0C7

UPDATE B
   │
   X

Agora temos:

A = 900
B = 500

Os R$100 desapareceram.

Não foram transferidos.

Foram sacrificados aos deuses do processamento de dados.

É aqui que surge um dos conceitos mais importantes de toda a apostila:

TRANSACTION


🔄 CAPÍTULO 7 — A transação é o verdadeiro suspeito

Uma transação representa uma unidade lógica de trabalho.

Queremos que:

DEBITAR A
CREDITAR B

sejam tratados como parte de uma operação coerente.

Conceitualmente:

┌──── UNIT OF WORK ─────┐
│                       │
│ UPDATE A              │
│ UPDATE B              │
│                       │
│ COMMIT                │
│                       │
└───────────────────────┘

Se tudo funcionar:

COMMIT

Se alguma coisa der errado antes da confirmação apropriada:

ROLLBACK

Chimp sorri.

— Agora encontramos o mecanismo que impede o dinheiro de desaparecer.

Mas ainda não resolvemos o crime.

Porque existem outros usuários.


🧪 CAPÍTULO 8 — ACID entra para interrogatório

Na parede aparecem quatro letras:

A C I D

Não é uma banda psicodélica de mainframe.

São propriedades fundamentais das transações.

A — Atomicity

Tudo ou nada.

A - 100
B + 100

Não queremos:

A - 100 ✓
B + 100 ✗

A operação lógica deve ser tratada atomicamente.


C — Consistency

Antes:

A = 1000
B = 500

TOTAL = 1500

Depois:

A = 900
B = 600

TOTAL = 1500

O sistema deve preservar as regras de consistência definidas para os dados.

Mas cuidado: consistência não significa que o DBMS magicamente conhece todas as regras do negócio.

Se uma regra diz:

clientes menores de determinada idade não podem contratar determinado produto,

alguém precisa expressar e implementar essa regra adequadamente.

O banco não consulta uma bola de cristal.


I — Isolation

Chimp finalmente encontra a pista decisiva.

Temos limite disponível:

R$ 1.000

Duas compras chegam:

T1 → R$700
T2 → R$600

Quase simultaneamente.

T1 pergunta:

LIMITE?

Resposta:

1000

T2 pergunta:

LIMITE?

Resposta:

1000

T1 pensa:

700 < 1000

APROVADO

T2 pensa:

600 < 1000

APROVADO

Resultado:

700 + 600 = 1300

Oops.

É por isso que concorrência não é detalhe acadêmico.


D — Durability

Depois que uma transação é confirmada, esperamos que sua alteração sobreviva a falhas previstas pelo mecanismo transacional.

Não queremos:

COMMIT

e cinco minutos depois:

“Desculpe, perdemos sua transferência.”

Logging e recovery existem justamente porque computadores, discos, processos e aplicações podem falhar.


🔐 CAPÍTULO 9 — As impressões digitais chamadas LOCKS

A apostila apresenta dois conceitos:

S LOCK
X LOCK

Simplificando didaticamente:

Shared Lock permite compartilhamento compatível para determinados acessos de leitura.

Exclusive Lock protege recursos que estão sendo modificados contra acessos incompatíveis.

Chimp desenha:

TRANSACTION A
     │
     ▼
   RESOURCE
     ▲
     │
TRANSACTION B

Agora temos concorrência.

Um sistema empresarial não pode simplesmente dizer:

“Só uma pessoa pode usar o banco por vez.”

Imagine um banco com milhões de clientes operando assim.

CLIENTE 1 → terminou?
CLIENTE 2 → pode entrar.
CLIENTE 3 → espere.
CLIENTE 4 → senha 493827.

😂

Precisamos permitir enorme paralelismo enquanto preservamos integridade.

Esse é um dos grandes desafios do DBMS.


💀 CAPÍTULO 10 — Deadlock: encontramos dois cadáveres

Chimp encontra:

T1 possui LOCK A
T2 possui LOCK B

Depois:

T1 precisa de B
T2 precisa de A

Visualmente:

       espera
   ┌──────────────►
   │
  T1              T2
   ▲               │
   ◄───────────────┘
       espera

Parabéns.

Criamos um deadlock.

T1 espera T2.

T2 espera T1.

Nenhum resolve voluntariamente a situação.

O DBMS precisa detectar e solucionar esse tipo de conflito, normalmente escolhendo uma transação como vítima para quebrar o ciclo.

E aí o programador descobre uma lição maravilhosa:

ROLLBACK não significa necessariamente que o DBMS está quebrado.

Às vezes o rollback é justamente o mecanismo impedindo que o sistema permaneça preso.


🚦 CAPÍTULO 11 — Isolation Level: quanta privacidade você quer?

Aqui começamos a sair definitivamente da apostila de revisão e entrar na engenharia.

No Db2 encontramos níveis como:

UR
CS
RS
RR

Conceitualmente podemos imaginar um controle:

MAIS ISOLAMENTO
      ▲
      │
      │ proteção
      │
      │
      │ concorrência
      ▼
MENOS ISOLAMENTO

Isso não significa simplesmente:

“mais isolamento é melhor.”

Um sistema transacional gigantesco precisa equilibrar:

integridade
concorrência
latência
throughput
CPU
locks
tempo de resposta

O programador que escolhe mecanismos de isolamento sem entender o workload está fazendo engenharia com os olhos vendados.


💾 CAPÍTULO 12 — SAVEPOINT, a máquina do tempo

Chimp encontra:

SAVEPOINT SP1

— Finalmente uma testemunha inteligente.

Imagine:

PASSO A
PASSO B
PASSO C

SAVEPOINT SP1

PASSO D
PASSO E
PASSO F

O passo F falha.

Dependendo da situação e do desenho da aplicação, podemos voltar a um savepoint apropriado:

A ✓
B ✓
C ✓

--- SP1 ---

D ↶
E ↶
F ↶

É quase um:

SAVE GAME

do processamento transacional.

Só não diga isso durante entrevista para DBA.

Ou diga.

Talvez ele goste.


🔎 CAPÍTULO 13 — O índice não matou ninguém... provavelmente

Chimp encontra uma tabela gigantesca:

CLIENTE
100.000.000 ROWS

Consulta:

SELECT NOME
FROM CLIENTE
WHERE CPF = :CPF;

Como encontramos aquele CPF?

Sem uma estrutura de acesso adequada, poderíamos ter um trabalho enorme de procura.

Com um índice apropriado:

CPF
 │
 ▼
INDEX
 │
 ▼
LOCALIZAÇÃO
 │
 ▼
DADO

Muito melhor.

Então surge a ideia perigosa:

“Vamos criar índice para tudo!”

Chimp imediatamente fecha o notebook.

— Não.

Índices também possuem custo.

Precisam ser armazenados e mantidos quando dados são inseridos, removidos ou alterados.

Temos novamente um compromisso:

MAIS ÍNDICES
     │
     ├── potencial de melhores acessos
     │
     └── maior custo de manutenção/espaço

Banco de dados é uma sucessão de decisões de engenharia.


🧠 CAPÍTULO 14 — O verdadeiro cérebro estava escondido: Optimizer

Finalmente encontramos o personagem que faltava nas folhas.

O programador escreve:

SELECT ...
FROM CLIENTE C
JOIN CONTA A
  ON C.ID_CLIENTE = A.ID_CLIENTE
WHERE C.CPF = :CPF;

O DBMS precisa descobrir como executar aquilo.

Conceitualmente:

SQL
 │
 ▼
OPTIMIZER
 │
 ├── estatísticas
 ├── cardinalidade
 ├── índices
 ├── predicates
 ├── joins
 └── estimativas
 │
 ▼
ACCESS PATH

É por isso que:

SQL correto

não implica necessariamente:

SQL eficiente

Ele pode retornar exatamente os dados solicitados e ainda assim fazer um trabalho absurdamente maior do que o necessário.

Chimp escreve no relatório:

O suspeito tinha álibi funcional, mas não tinha álibi de performance.


🏭 CAPÍTULO 15 — Agora tragam CICS, COBOL e Db2

Chegamos ao Bellacosa Mainframe.

Coloque tudo junto:

                    CLIENTE
                       │
                       ▼
                ┌────────────┐
                │    CICS    │
                └─────┬──────┘
                      │
                      ▼
                ┌────────────┐
                │   COBOL    │
                └─────┬──────┘
                      │
                     SQL
                      │
                      ▼
                ┌────────────┐
                │Db2 for z/OS│
                └─────┬──────┘
                      │
            ┌─────────┴─────────┐
            ▼                   ▼
          INDEX                DATA

Agora multiplique por milhares de transações.

T000001
T000002
T000003
...
T999999

Todas querem:

READ
INSERT
UPDATE
DELETE
COMMIT

O problema deixa de ser:

“Como salvo um cliente?”

Passa a ser:

Como milhares de operações podem alterar um universo compartilhado simultaneamente sem destruir sua coerência?

Essa pergunta explica boa parte da existência dos mecanismos transacionais.


💳 CAPÍTULO 16 — Chimp investiga uma compra de cartão

Compra:

R$100

A mensagem chega ao sistema.

             COMPRA
                │
                ▼
              CICS
                │
                ▼
              COBOL
                │
       ┌────────┼─────────┐
       ▼        ▼         ▼
    CLIENTE   CARTÃO    PRODUTO
       │        │         │
       └────────┼─────────┘
                ▼
              LIMITE
                │
                ▼
             FRAUDE?
                │
                ▼
          AUTORIZAÇÃO
                │
         ┌──────┴──────┐
         ▼             ▼
      APPROVE        DECLINE

Parece simples.

Agora chegam duas compras:

03:17:00.001 → R$700
03:17:00.003 → R$600

Limite:

R$1000

Eis o easter egg.

03:17.

Chimp olha para o relógio.

— Sempre é 03:17 quando algo interessante acontece no mainframe.

Dois milissegundos separam um fluxo trivial de um excelente caso de concorrência.

Agora fazem sentido:

ACID
LOCK
ISOLATION
COMMIT
ROLLBACK
LOG
RECOVERY

Cada palavra da apostila ganhou consequências financeiras.


🧯 CAPÍTULO 17 — “Mas funcionou no teste!”

Chimp fecha os olhos.

Essa é uma das frases favoritas do culpado.

No teste:

1 usuário
1 transação
100 registros

Produção:

10.000 usuários
milhares de transações
milhões/bilhões de registros
concorrência
timeout
deadlock
falhas
rede
batch
online
APIs

O programa:

SELECT
UPDATE
COMMIT

funciona maravilhosamente sozinho.

Coloque centenas de instâncias disputando os mesmos recursos e você descobrirá características que nunca apareceram no teste simplificado.

É por isso que engenharia transacional exige pensar não apenas:

MEU PROGRAMA

mas:

              SISTEMA
                 │
     ┌───────────┼───────────┐
     ▼           ▼           ▼
  ONLINE       BATCH        APIs
     │           │           │
     └───────────┼───────────┘
                 ▼
                DB2

Seu programa nunca está realmente sozinho.


🐒 CAPÍTULO 18 — Detetive Chimp apresenta os suspeitos

Depois de horas investigando, Chimp monta o quadro:

              O CASO DBMS
                   │
       ┌───────────┼────────────┐
       ▼           ▼            ▼
    MODELAGEM     SQL       TRANSAÇÃO
       │           │            │
       ▼           ▼            ▼
      ER       OPTIMIZER       ACID
       │           │            │
       ▼           ▼            ▼
     KEYS       INDEXES      LOCKING
       │                        │
       ▼                        ▼
 NORMALIZATION              ISOLATION
                                │
                       ┌────────┴────────┐
                       ▼                 ▼
                    COMMIT           ROLLBACK
                       │                 │
                       └────────┬────────┘
                                ▼
                              LOG
                                │
                                ▼
                            RECOVERY

Nenhum deles isoladamente matou o banco.

O problema estava na interação entre todos eles.


🎓 CAPÍTULO 19 — A trilha para o programador COBOL iniciante

Se eu transformasse aquelas cinco folhas em uma trilha de estudo, seguiria esta ordem:

  1. Entenda DBMS e a diferença entre dado, banco e gerenciador. Depois modele entidades, atributos, relacionamentos, cardinalidades e chaves. Aprenda SQL básico — SELECT, INSERT, UPDATE, DELETE e JOIN — e só então entre em normalização e integridade referencial.

  2. Em seguida estude transações profundamente: Unit of Work, COMMIT, ROLLBACK, SAVEPOINT e ACID. Depois avance para concorrência, locks, isolamento, timeout e deadlock. Finalmente estude índices, optimizer, access paths, logging, backup/recovery e performance.

  3. Só então faça o exercício realmente divertido: implemente mentalmente tudo isso em COBOL + CICS + Db2, primeiro com um usuário e depois imaginando 10.000 usuários concorrentes.

Nesse ponto o estudante deixa de decorar definições e começa a pensar como engenheiro.


☕ EPÍLOGO — O banco nunca mentiu

O sol começa a nascer sobre o data center.

Chimp termina seu café.

O jovem programador pergunta:

— Então quem era o assassino?

Chimp coloca o chapéu.

— Ninguém.

— Como assim?

— O banco fez exatamente aquilo que mandaram fazer.

Silêncio.

Essa talvez seja uma das maiores lições de sistemas.

Computadores são extraordinariamente obedientes.

Se você modelar mal, eles executarão rapidamente um modelo ruim.

Se escrever uma transação incorreta, executarão corretamente a transação incorreta.

Se criar SQL ineficiente, poderão produzir exatamente o resultado esperado — lentamente.

Se esquecer concorrência, o sistema poderá funcionar perfeitamente durante meses...

...até duas transações chegarem juntas.

03:17:00.001
03:17:00.003

E então você descobrirá que dois milissegundos podem revelar um erro arquitetural escondido durante anos.

Chimp deixa sobre a mesa as cinco folhas de revisão.

No começo da investigação elas diziam:

DBMS
ER MODEL
NORMALIZATION
SQL
ACID
TRANSACTION
INDEX

Agora significam:

REALIDADE
   ↓
MODELAGEM
   ↓
DADOS
   ↓
TRANSAÇÕES
   ↓
CONCORRÊNCIA
   ↓
INTEGRIDADE
   ↓
RECUPERAÇÃO
   ↓
PERFORMANCE
   ↓
NEGÓCIO

É essa a diferença entre decorar banco de dados para uma prova e compreender por que bancos, seguradoras, companhias aéreas, governos e sistemas de cartões investem tanto em engenharia transacional.

Aquelas quatro letras — ACID — parecem matéria de apostila.

Um COMMIT parece apenas um comando.

Um LOCK parece detalhe técnico.

Um índice parece somente uma maneira de procurar dados mais rapidamente.

Até o dia em que você percebe que do outro lado daqueles registros existem dinheiro, passagens, pedidos, pagamentos, estoques, contratos e pessoas.

Detetive Chimp abre a porta.

Antes de sair, olha novamente para o terminal.

READY

Caso encerrado?

Claro que não.

Em mainframe sempre existe outro JOB esperando na fila.

E provavelmente existe algum programador jurando:

“Mas eu não alterei nada...”

Chimp sorri.

Procure o log. 🐒🔎☕



sábado, 25 de maio de 2019

Sempre um Isekai : O Isekai e o Contrato Social Quebrado – Parte IV

 

Bellacosa Mainframe e a quebra do contrato social parte iv

☕ Um Café no Bellacosa Mainframe

O Isekai e o Contrato Social Quebrado – Parte IV

Quando um Programador COBOL Descobre que o Truck-kun Nunca Foi um Caminhão... Mas um Botão de CANCEL JOB para uma Geração Inteira

Existe um personagem que aparece em centenas de animes.

Ele nunca fala.

Nunca recebe desenvolvimento.

Nunca possui um arco dramático.

Mesmo assim...

É um dos personagens mais famosos da cultura pop japonesa.

Truck-kun.

O caminhão mais eficiente da história dos animes.

Bastam alguns segundos.

Um impacto.

Tela branca.

Pronto.

Começa outro mundo.

Durante anos tratamos isso como uma enorme piada.

Hoje...

Já não tenho tanta certeza de que seja apenas humor.


O Caminhão Nunca Foi o Protagonista

Pense comigo.

Por que justamente um caminhão?

Por que não um raio?

Um terremoto?

Uma doença?

Uma explosão?

Porque o caminhão representa algo muito específico.

A rotina.

O deslocamento.

O trajeto diário.

Ele aparece justamente quando o protagonista está...

Voltando do trabalho.

Saindo da escola.

Atravessando uma rua.

Fazendo exatamente aquilo que repetiu centenas de vezes.

O Truck-kun nasce da repetição.


O Loop Infinito

Existe um detalhe curioso.

Quase todos os protagonistas vivem uma rotina absolutamente comum.

Acordar.

Estudar.

Trabalhar.

Dormir.

Repetir.

Como um JOB batch.

//VIDA     JOB
//STEP01   EXEC PGM=ACORDAR
//STEP02   EXEC PGM=TRABALHAR
//STEP03   EXEC PGM=PAGAR-CONTAS
//STEP04   EXEC PGM=DORMIR

No dia seguinte...

SUBMIT novamente.

Depois novamente.

Depois novamente.

Até o operador esquecer que existe alguém executando aquele JOB.


O Ser Humano Não Nasceu para Ser Apenas Produtivo

Vivemos numa época curiosa.

Tudo precisa gerar resultado.

Ler precisa gerar produtividade.

Viajar precisa render conteúdo.

Dormir precisa melhorar desempenho.

Academia precisa aumentar performance.

Até descansar virou obrigação.

Se você relaxa...

Logo aparece alguém dizendo que poderia estar estudando uma nova tecnologia.

Aprendendo outra linguagem.

Obtendo mais uma certificação.

Otimizando sua carreira.

É como se a CPU humana nunca pudesse entrar em IDLE.


Burnout

O ABEND da Alma

Programadores conhecem bem a palavra ABEND.

Algo falhou.

O programa simplesmente não consegue continuar.

O burnout parece exatamente isso.

Você continua comparecendo ao trabalho.

Continua respondendo e-mails.

Continua participando de reuniões.

Mas internamente...

O sistema já entrou em falha crítica.

Não existe dump que resolva.

Não existe PTF.

Não existe IPL emocional que devolva imediatamente a energia perdida.


O Mundo Nunca Desliga

No passado...

Quando alguém saía do escritório...

O trabalho permanecia na empresa.

Hoje...

O escritório cabe no bolso.

WhatsApp.

Teams.

Slack.

E-mail.

VPN.

Notebook.

A empresa pode atravessar a porta da sua casa sem pedir licença.

O expediente termina.

Mas a disponibilidade continua.


O Truck-kun é um RESET

Talvez seja justamente isso que ele simbolize.

Não a morte.

Mas o fim do loop.

Fim da repetição.

Fim da cobrança.

Fim do relógio.

Fim da agenda.

Fim da reunião marcada para segunda-feira às oito.

O protagonista não sorri porque morreu.

Ele sorri porque, pela primeira vez em muito tempo...

Não precisa voltar ao escritório.


A Primeira Coisa Que Todo Herói Faz

Repare.

Quando acorda no outro mundo...

Quase ninguém pergunta.

"Meu chefe conseguiu terminar aquele projeto?"

"Será que responderam meus e-mails?"

"Quem assumiu minhas tarefas?"

Ninguém lembra da planilha.

Da apresentação.

Do relatório.

Do KPI.

Da meta.

Curiosamente...

Todos esses problemas desaparecem imediatamente.


A Liberdade Tem um Rosto

Existe outra curiosidade.

Os protagonistas caminham.

Muito.

Viajam semanas.

Dormem em acampamentos.

Conhecem cidades.

Conversam com desconhecidos.

Descobrem florestas.

Montanhas.

Ruínas.

Hoje isso parece um luxo.

Quantas pessoas conseguem simplesmente desaparecer por uma semana sem olhar o celular?


O Tempo Virou Artigo de Luxo

Talvez o recurso mais raro do século XXI não seja dinheiro.

Seja tempo.

Tempo sem notificações.

Tempo sem cobrança.

Tempo sem metas.

Tempo para conversar.

Tempo para observar uma paisagem.

Tempo para não fazer absolutamente nada.

Os aventureiros possuem exatamente isso.

Mesmo enfrentando monstros.


O Reino Tem Problemas...

Mas Não Tem Reunião por Videoconferência

Os reinos dos isekais possuem guerras.

Dragões.

Pragas.

Demônios.

Conspirações.

Mas existe algo que raramente aparece.

Uma reunião que poderia ter sido resolvida com três linhas de mensagem.

Às vezes penso que derrotar um Rei Demônio deve ser menos cansativo do que algumas reuniões corporativas.


O Caminhão Nunca Matou Ninguém

Talvez essa seja a frase mais estranha que já escrevi.

O Truck-kun nunca matou ninguém.

Quem matou foi o esgotamento acumulado.

O caminhão apenas abriu o portal.

O verdadeiro acidente aconteceu muito antes.

Quando viver começou a significar apenas cumprir agenda.


Bellacosa Mainframe

Depois de tantos anos trabalhando com computadores, aprendi uma lição curiosa.

Nenhum sistema permanece saudável funcionando permanentemente a cem por cento da CPU.

Existe gerenciamento de carga.

Existe balanceamento.

Existe manutenção preventiva.

Existe janela de descanso.

Existe IPL.

Existe WLM.

Até o z/OS sabe que recursos precisam de limites para continuar operando de forma confiável.

Curiosamente...

Nós parecemos exigir dos seres humanos exatamente o contrário.

Queremos disponibilidade permanente.

Produtividade crescente.

Atualização constante.

Resultados imediatos.

Como se pessoas fossem máquinas.

Talvez seja por isso que o Truck-kun tenha se tornado um símbolo tão poderoso.

Ele nunca foi um caminhão.

Foi um enorme botão vermelho escrito:

CANCEL JOB

Porque milhões de trabalhadores não sonham em morrer.

Sonham apenas em interromper, por alguns instantes, um processamento que parece nunca terminar.

E talvez essa seja a maior crítica escondida dos isekais.

O portal mágico não representa uma fuga da realidade.

Representa o desejo desesperado de recuperar algo que deveria ser um direito básico de qualquer ser humano.

O direito de viver... antes que a vida termine executando apenas o próximo STEP do JOB.

Continua na Parte V — "Por Que Quase Todo Protagonista de Isekai é um Salaryman? A Crítica Silenciosa do Japão ao Mundo Corporativo".

☕ UM CAFÉ NO BELLACOSA MAINFRAME

O Isekai e o Contrato Social Quebrado

Quando um Programador COBOL Descobre que Talvez Nunca Tenhamos Querido Fugir para Outro Mundo... Apenas Entender Este.

PRIMEIRA REGRA DO PORÃO NENHUM ARTIGO DEVE FICAR ESCONDIDO DOS LEITORES

Entre nesta série sobre trabalho, impostos, burnout, sociedade, salarymen, guildas, promessas quebradas e o verdadeiro significado da fuga para mundos paralelos. Escolha um capítulo, abra a prévia ou leia diretamente no Bellacosa Mainframe.

00
SYSTEM DIAGNOSIS

O Verdadeiro Rei Demônio Talvez Seja o Holerite

Quando um Programador COBOL Descobre que o Isekai Não Vende Magia... Vende um Mundo Onde o Esforço Ainda Vale Alguma Coisa.

Uma introdução à relação entre o sucesso do gênero isekai, a exaustão do trabalhador moderno, os descontos no salário, a perda de propósito e o desejo de recomeçar em outro mundo.

HOLERITE TRABALHO ISEKAI CONTRATO SOCIAL
Ler artigo completo ↗
01
CONTRACT ABEND

O Isekai e o Contrato Social Quebrado — Parte I

Quando um Programador COBOL Descobre que Talvez o Verdadeiro Bug Nunca Tenha Estado no Código... Mas na Promessa Feita ao Trabalhador.

A promessa de trabalhar, contribuir, construir uma carreira e receber segurança no futuro começa a apresentar falhas de processamento.

CONTRATO SOCIAL APOSENTADORIA DIGNIDADE
Ler artigo completo ↗
02
ECONOMY IPL

O Isekai e o Contrato Social Quebrado — Parte II

Quando um Programador COBOL Descobre que os Anos 1990 Talvez Tenham Sido o Grande IPL da Economia Mundial... e Nem Todos os JOBs Voltaram a Executar.

Globalização, tecnologia, automação, terceirização e produtividade reinicializaram a economia mundial, mas muitos trabalhadores ficaram aguardando uma resposta do sistema.

ANOS 1990 GLOBALIZAÇÃO AUTOMAÇÃO
Ler artigo completo ↗
03
MISSION ACCEPTED

O Isekai e o Contrato Social Quebrado — Parte III

Quando um Programador COBOL Descobre que a Guilda dos Aventureiros Talvez Tenha um RH Muito Melhor que o Nosso.

Na guilda existem missões claras, riscos conhecidos, recompensas publicadas e liberdade para escolher o próximo trabalho. No escritório moderno, nem sempre.

GUILDA RH RECOMPENSA
Ler artigo completo ↗
04
CANCEL JOB

O Isekai e o Contrato Social Quebrado — Parte IV

Quando um Programador COBOL Descobre que o Truck-kun Nunca Foi um Caminhão... Mas um Botão de CANCEL JOB para uma Geração Inteira.

Truck-kun representa a interrupção brutal de uma vida repetitiva, exausta e sem perspectiva. Um símbolo sombrio do desejo de cancelar a rotina e recomeçar.

TRUCK-KUN BURNOUT CANCEL JOB
Ler artigo completo ↗
05
SALARYMAN MODE

O Isekai e o Contrato Social Quebrado — Parte V

Quando um Programador COBOL Descobre que Quase Todo Protagonista de Isekai é um Salaryman... e Isso Está Muito Longe de Ser Coincidência.

Programadores, funcionários de escritório e trabalhadores invisíveis protagonizam histórias de recomeço porque representam milhões de pessoas presas em rotinas semelhantes.

SALARYMAN ESCRITÓRIO PROPÓSITO
Ler artigo completo ↗
06
TIME AVAILABLE

O Isekai e o Contrato Social Quebrado — Parte VI

Quando um Programador COBOL Descobre que Talvez o Verdadeiro Feitiço do Isekai Não Seja a Magia... Mas o Tempo para Viver.

O maior luxo de um mundo fantástico talvez não seja lançar feitiços, mas ter tempo para conversar, descansar, conviver, caminhar e participar de uma comunidade.

TEMPO COMUNIDADE QUALIDADE DE VIDA
Ler artigo completo ↗
07
RETURN CODE 00

O Isekai e o Contrato Social Quebrado — Parte VII

Quando um Programador COBOL Descobre que Talvez Nunca Tenhamos Querido Fugir para Outro Mundo... Apenas Recuperar Este.

A conclusão da série propõe que talvez o verdadeiro sonho nunca tenha sido abandonar o mundo real, mas recuperar dignidade, propósito, tempo, comunidade e esperança.

ESPERANÇA RECONSTRUÇÃO FUTURO
Ler artigo completo ↗

sexta-feira, 24 de maio de 2019

Do CPD ao Data Center

 

Bellacosa Mainframe do cpd ao data center


☕ Um Café no Bellacosa Mainframe

Do CPD ao Data Center

A Jornada da Computação Corporativa — O que Todo Programador COBOL Padawan Precisa Saber Sobre a Evolução dos Grandes Templos da Tecnologia

"O nome mudou. Os equipamentos mudaram. A velocidade mudou. Mas a missão continua exatamente a mesma: manter os dados vivos."


Introdução

Existe uma expressão que praticamente desapareceu do vocabulário dos profissionais mais jovens da informática.

CPD.

Quem começou a trabalhar na década de 70, 80 ou 90 dificilmente esquece essa sigla.

Era comum ouvir frases como:

"Vou até o CPD."

"O pessoal do CPD resolveu."

"O programa está parado no CPD."

Hoje quase ninguém fala isso.

O termo da moda virou Data Center.

Mas será que eles são exatamente a mesma coisa?

A resposta é não.

Embora ambos representem ambientes responsáveis pelo processamento das informações de uma empresa, existe uma enorme evolução tecnológica, organizacional e cultural entre um antigo CPD e um moderno Data Center.

Para um Programador COBOL Padawan entender isso é extremamente importante.

Porque o COBOL nasceu dentro dos CPDs.

E continua vivo dentro dos maiores Data Centers do planeta.

Vamos viajar por quase oitenta anos de história.


Antes do CPD

Voltemos aos anos 1940.

Os computadores daquela época eram monstruosos.

ENIAC.

UNIVAC.

IBM 701.

IBM 650.

Eles ocupavam salas inteiras.

Consumiam centenas de quilowatts.

Geravam muito calor.

Exigiam operadores especializados.

Não existia computador pessoal.

Computador era patrimônio nacional.

Somente governos, universidades e grandes empresas possuíam um.

Naquela época nem existia a expressão "Data Center".

Havia simplesmente:

Computer Room

ou

Machine Room

Ou seja:

Sala das Máquinas.


A origem do termo CPD

Quando os computadores começaram a ser usados comercialmente nos anos 60 e 70, surgiu a necessidade de criar departamentos exclusivos para cuidar deles.

No Brasil adotou-se a tradução:

Centro de Processamento de Dados

(CPD)

A palavra centro era importante.

Porque o computador era literalmente o centro de toda a empresa.

Todos os departamentos dependiam dele.

RH.

Financeiro.

Contabilidade.

Produção.

Estoque.

Folha de pagamento.

Tudo passava pelo CPD.


O que significava um CPD?

Imagine um prédio.

Dentro dele havia uma sala enorme.

Piso elevado.

Ar-condicionado potente.

Poucas pessoas podiam entrar.

Porta pesada.

Vidros escuros.

Muito silêncio.

No centro:

Um IBM System/360.

Depois um System/370.

Mais tarde um IBM 3090.

Ou um IBM 4381.

Ao redor existiam dezenas de equipamentos auxiliares.

Era praticamente um templo da computação.


O CPD era muito mais que um computador

Na verdade o computador era apenas uma pequena parte.

Um CPD normalmente possuía:

  • Mainframe

  • Unidades de fita magnética

  • Leitoras de cartão perfurado

  • Impressoras de linha

  • Consoles do operador

  • Controladoras

  • Discos removíveis

  • Unidades DASD

  • Painéis elétricos

  • Nobreaks

  • Geradores

  • Ar condicionado industrial

Tudo isso funcionando simultaneamente.


Por que o piso era elevado?

Essa é uma curiosidade clássica.

O famoso piso falso não existia apenas para esconder cabos.

Ali passavam:

  • energia elétrica

  • fibra óptica (mais recentemente)

  • cabos coaxiais

  • cabos de dados

  • tubos de refrigeração

  • sensores

  • aterramento

Além disso o ar frio era insuflado por baixo do piso.

O frio subia pelas grelhas exatamente onde os equipamentos estavam.

Esse conceito ainda existe em muitos Data Centers atuais.


O operador era quase um piloto de avião

Hoje quase tudo é automático.

Na década de 80 não era.

Existiam operadores trabalhando 24 horas.

Eles:

montavam fitas,

trocavam discos,

iniciavam jobs,

cancelavam jobs,

alimentavam impressoras,

reabasteciam formulários contínuos,

verificavam mensagens do console,

reiniciavam equipamentos.

Era uma profissão extremamente especializada.


O nascimento do Data Center

Nos anos 90 aconteceu uma revolução.

Os servidores começaram a ficar menores.

A arquitetura cliente-servidor cresceu.

Unix.

Windows NT.

Linux.

Sun.

HP.

DEC.

IBM RS/6000.

Em vez de um único computador gigantesco, passaram a existir centenas de servidores.

O antigo CPD começou a mudar.

Foi quando o termo internacional ganhou força:

Data Center

Centro de Dados.

Perceba a mudança.

Antes o foco era:

Processar dados.

Agora passou a ser:

Hospedar dados.

Disponibilizar serviços.

Conectar aplicações.

Executar virtualização.

Armazenar informações.

Oferecer alta disponibilidade.


O nome mudou porque a missão mudou

CPD focava em:

Processamento Batch.

Folha de pagamento.

Contabilidade.

Relatórios.

Lotes noturnos.

Data Center passou a focar em:

Internet.

Cloud.

APIs.

Virtualização.

Containers.

Microserviços.

IA.

Big Data.

Streaming.

Ambientes híbridos.

Hoje o processamento acontece continuamente.

24 horas.

365 dias.


O Mainframe desapareceu?

Não.

Esse é um dos maiores mitos da informática.

O que desapareceu foi o modelo centralizado do antigo CPD.

O Mainframe continua evoluindo.

Na verdade ele faz parte dos maiores Data Centers do mundo.

Bancos.

Companhias aéreas.

Seguradoras.

Governos.

Cartões de crédito.

Bolsa de valores.

Todos utilizam enormes Data Centers onde coexistem:

IBM Z

Linux

Windows

Storage

Cloud

Containers

OpenShift

Kubernetes

IA

Tudo integrado.

O mainframe deixou de ser "o computador" para se tornar um dos pilares da infraestrutura corporativa, convivendo com milhares de outros componentes.


A evolução dos equipamentos

Ontem

Mainframe

Fitas

Cartões

Impressoras

Terminais 3270

Discos removíveis

Controladoras dedicadas

Cabos grossos


Hoje

IBM Z

Blade Servers

Storage SAN

NAS

NVMe

SSD

GPUs

Switches Fibre Channel

Ethernet 400 Gb

Roteadores

Firewalls

Load Balancers

Appliances de Segurança

Clusters Kubernetes

Hipervisores

Cabines All Flash

Bibliotecas Robotizadas

Sistemas de Backup Imutável

Equipamentos de IA


O coração continua sendo a energia

Existe um detalhe curioso.

Mudou tudo.

Menos uma prioridade.

Energia.

Sem energia não existe Data Center.

Por isso encontramos:

UPS

Nobreaks

Baterias

Banco de baterias

Geradores Diesel

Geradores a Gás

Transformadores

Painéis elétricos redundantes

ATS (Automatic Transfer Switch)

PDU (Power Distribution Unit)

Barramentos inteligentes

Monitoramento em tempo real.

Nos grandes Data Centers existe redundância N+1, 2N ou até 2N+1 para garantir que uma falha não interrompa os serviços.


O ar-condicionado virou engenharia

Os antigos aparelhos de parede desapareceram.

Hoje encontramos:

CRAC

Computer Room Air Conditioner

e

CRAH

Computer Room Air Handler

Além disso:

Corredor frio.

Corredor quente.

Contenção de ar.

Sensores térmicos.

Resfriamento líquido.

Rear Door Heat Exchanger.

Immersion Cooling.

IA para otimização térmica.

Em instalações de alta densidade, especialmente com GPUs para IA, o resfriamento líquido está se tornando cada vez mais comum devido ao enorme consumo energético.


A evolução das equipes

No CPD existiam poucas funções.

Operador

Programador

Analista

Supervisor

Hoje um Data Center reúne dezenas de especialidades.

Infraestrutura

SysAdmin

Linux

Windows

Virtualização

VMware

Hyper-V

KVM


Redes

LAN

WAN

Wi-Fi

BGP

OSPF

SD-WAN


Mainframe

System Programmer

Storage Administrator

CICS

IMS

Db2

MQ

RACF

JES2

z/OS


Cloud

AWS

Azure

Google Cloud

IBM Cloud

OpenShift

Kubernetes

Terraform

Ansible


Segurança

SOC

Blue Team

Red Team

IAM

PAM

SIEM

EDR

XDR

Zero Trust


Observabilidade

Prometheus

Grafana

Elastic

OpenTelemetry

Splunk

Instana

Z APM Connect

RMF

SMF


DevOps

Git

GitHub

GitLab

Jenkins

Azure DevOps

IBM DBB

Zowe

ArgoCD

CI/CD


O armazenamento mudou completamente

Antes:

Discos enormes.

Pouca capacidade.

Caríssimos.

Hoje:

Petabytes.

Flash.

NVMe.

Object Storage.

Storage distribuído.

Snapshots.

Replicação síncrona.

Replicação assíncrona.

Deduplicação.

Compressão.

Immutable Backup.

Mesmo assim, conceitos clássicos de organização, integridade e recuperação continuam sendo fundamentais.


A segurança ganhou protagonismo

No antigo CPD bastava controlar quem entrava na sala.

Hoje isso está longe de ser suficiente.

Além da segurança física, um Data Center moderno precisa proteger:

  • identidade dos usuários;

  • aplicações;

  • APIs;

  • bancos de dados;

  • redes;

  • containers;

  • máquinas virtuais;

  • segredos e certificados;

  • criptografia em repouso e em trânsito;

  • monitoramento contínuo;

  • resposta a incidentes.

O prédio continua protegido, mas agora a "porta" também existe na internet.


A virtualização mudou tudo

Antigamente:

1 servidor.

1 sistema operacional.

1 aplicação.

Hoje:

Um único servidor pode hospedar centenas de máquinas virtuais.

Ou milhares de containers.

No IBM Z isso não é novidade.

LPARs, PR/SM e z/VM já permitiam consolidação e isolamento décadas antes de a virtualização se popularizar no mercado x86. Muitos conceitos considerados "modernos" em cloud nasceram primeiro no universo mainframe.


O Data Center virou uma nuvem

O usuário não sabe mais onde está seu sistema.

Pode estar:

São Paulo.

Dallas.

Frankfurt.

Tóquio.

Ou distribuído entre todos eles.

Essa é a essência do modelo híbrido.

O Data Center deixou de ser apenas um prédio.

Hoje ele pode ser uma combinação de infraestrutura própria, colocation e serviços em múltiplas nuvens públicas.


O papel do Programador COBOL nesse novo cenário

Muitos iniciantes imaginam que o programador COBOL trabalha isolado.

Na realidade, ele faz parte de um ecossistema muito maior.

Um programa COBOL pode:

  • acessar Db2;

  • publicar mensagens no IBM MQ;

  • consumir APIs REST via z/OS Connect;

  • trocar dados com microsserviços Java;

  • participar de pipelines CI/CD;

  • ser monitorado por observabilidade moderna;

  • executar em um IBM Z integrado à cloud.

Conhecer o ambiente onde sua aplicação roda é tão importante quanto conhecer a linguagem.


CPD x Data Center

CPDData Center
Foco em processamentoFoco em serviços e disponibilidade
Mainframe centralInfraestrutura distribuída
Batch predominanteBatch + tempo real
Operação manualAutomação e orquestração
Poucas equipesTimes multidisciplinares
Ambiente fechadoIntegração global
Equipamentos proprietáriosPlataformas híbridas
Escalabilidade limitadaEscalabilidade horizontal e vertical

Curiosidades

  • O termo CPD continua muito usado em empresas brasileiras antigas, especialmente bancos e órgãos públicos, mesmo quando a infraestrutura já é um Data Center moderno.

  • Muitos Data Centers de missão crítica ainda utilizam piso elevado, embora algumas instalações de alta densidade adotem outras soluções de distribuição de energia e refrigeração.

  • Grandes provedores de nuvem operam Data Centers com centenas de milhares de servidores, mas também utilizam tecnologias inspiradas em décadas de engenharia de ambientes críticos.

  • Um IBM Z atual ocupa muito menos espaço do que seus antecessores e oferece desempenho, segurança e eficiência energética incomparavelmente superiores.


O verdadeiro ensinamento

Existe um erro comum entre os iniciantes.

Pensar que CPD é apenas um nome antigo para Data Center.

Não é.

O CPD representava uma época em que o objetivo principal era processar informações.

O Data Center representa uma era em que é preciso processar, armazenar, proteger, integrar, escalar e disponibilizar dados e serviços continuamente, para usuários espalhados pelo mundo.

Apesar dessa transformação, um princípio nunca mudou.

Desde os cartões perfurados até a inteligência artificial, desde o IBM System/360 até o IBM z17, desde as fitas magnéticas até o armazenamento em flash distribuído, a missão permanece a mesma:

garantir que a informação certa esteja disponível, íntegra e segura, exatamente quando alguém precisar dela.

Esse é o legado dos antigos CPDs.

Esse é o coração dos modernos Data Centers.

E é exatamente nesse ambiente que o Programador COBOL Padawan continua escrevendo sistemas que movimentam bancos, governos, hospitais, seguradoras e empresas em todos os continentes.

Porque tecnologias evoluem, nomes mudam e equipamentos são substituídos. Mas a engenharia da informação — construída com disciplina, confiabilidade e décadas de experiência — continua sendo a verdadeira força que mantém o mundo funcionando, 24 horas por dia, 7 dias por semana.


quinta-feira, 23 de maio de 2019

☕❄️💣 YUKI-ONNA — O PROCESSO FANTASMA QUE RODA HÁ SÉCULOS NO SISTEMA OPERACIONAL DO INVERNO JAPONÊS

 

Bellacosa Mainframe e a sombria Yuki-onna


☕❄️💣 YUKI-ONNA — O PROCESSO FANTASMA QUE RODA HÁ SÉCULOS NO SISTEMA OPERACIONAL DO INVERNO JAPONÊS

Existe um tipo de incidente que assombra qualquer profissional de tecnologia.

Você abre o console, verifica os logs, procura mensagens de erro, rastreia jobs, analisa datasets, mas simplesmente não encontra explicação.

Tudo parece normal.

Nenhum alerta.

Nenhum dump.

Nenhum ABEND.

E mesmo assim algo aconteceu.

Alguém desapareceu.

Curiosamente, é exatamente assim que funciona uma das entidades mais antigas e fascinantes do folclore japonês: a lendária Yuki-onna (雪女), a Mulher da Neve.

Se os yokais fossem componentes de um grande sistema operacional sobrenatural, a Yuki-onna seria aquele processo invisível que executa apenas durante condições específicas, consome recursos humanos e desaparece sem deixar rastros no log.

Hoje vamos abrir o painel de controle do inverno japonês e analisar uma das lendas mais famosas da cultura oriental.

Quem é a Yuki-onna?

O nome significa literalmente:

Yuki (雪) = Neve

Onna (女) = Mulher

Ou seja:

Mulher da Neve.

Ela pertence à enorme família dos Yokai, criaturas sobrenaturais do folclore japonês.

Sua descrição varia conforme a região do Japão, mas alguns elementos permanecem praticamente inalterados há séculos.

Ela costuma ser retratada como:

  • Extremamente bela

  • Pele branca como neve

  • Longos cabelos negros

  • Vestes brancas esvoaçantes

  • Aparência serena e quase angelical

  • Presença associada a tempestades de neve

O detalhe assustador é que a beleza da Yuki-onna funciona como uma interface gráfica amigável escondendo um código extremamente perigoso.

O usuário acredita que está acessando um recurso seguro.

Mas já é tarde demais.

O Primeiro Registro do Problema

A origem da lenda é tão antiga que ninguém sabe exatamente quando surgiu.

Diversas versões aparecem em registros do período Edo (1603–1868).

Contudo, foi o escritor Lafcadio Hearn quem ajudou a popularizar a história no Ocidente através da obra Kwaidan: Stories and Studies of Strange Things, publicada em 1904.

Ali encontramos a versão que se tornaria praticamente o release oficial da Yuki-onna.

O Incidente de Produção de Minokichi

Imagine o seguinte cenário.

Dois lenhadores trabalham em uma região montanhosa.

Uma tempestade de neve provoca uma interrupção operacional.

Sem conseguir retornar para casa, eles se refugiam em uma cabana.

Durante a madrugada acontece algo inexplicável.

Uma mulher de beleza sobrenatural surge silenciosamente.

Ela se aproxima do homem mais velho.

Sopra um ar gelado.

E o mata instantaneamente.

Sem luta.

Sem sangue.

Sem ruído.

Apenas shutdown completo.

Quando ela se aproxima do jovem Minokichi, decide poupá-lo.

Antes de desaparecer, porém, deixa uma condição.

Uma única regra.

Jamais contar o ocorrido.

Anos depois, Minokichi conhece uma mulher chamada O-Yuki.

Eles se apaixonam.

Casam-se.

Têm filhos.

Vivem felizes durante muito tempo.

Até que numa noite ele resolve comentar a experiência vivida na juventude.

Nesse instante ocorre o equivalente folclórico de um dump completo do sistema.

A esposa revela sua verdadeira identidade.

Ela era a Yuki-onna.

Durante todos aqueles anos.

Ela não o mata apenas porque seus filhos ficariam órfãos.

Mas desaparece para sempre.

Fim da sessão.

Conexão encerrada.

Usuário desconectado.

O Processo Invisível do Inverno

Uma característica fascinante da Yuki-onna é sua associação com ambientes extremos.

Ela raramente aparece em cidades movimentadas.

Seu habitat preferencial inclui:

  • Florestas cobertas de neve

  • Montanhas isoladas

  • Estradas abandonadas

  • Tempestades intensas

  • Noites de inverno

Isso faz dela uma espécie de processo dependente de ambiente.

Sem neve.

Sem execução.

Com neve.

O programa inicia automaticamente.

É quase como um job controlado por calendário sazonal.

Chega o inverno.

O scheduler libera a execução.

Uma Vilã ou Uma Vítima?

O aspecto mais interessante da Yuki-onna é que ela não se comporta como um monstro tradicional.

Muitos yokais atacam indiscriminadamente.

A Yuki-onna não.

Em várias versões ela demonstra:

  • Tristeza

  • Solidão

  • Compaixão

  • Amor

  • Arrependimento

Em algumas histórias ela se casa com humanos.

Em outras protege crianças perdidas.

Existem relatos em que ela salva viajantes.

Isso a transforma em algo muito mais complexo.

Ela não é simplesmente um malware.

Ela parece um programa criado para executar uma função específica, mas que desenvolveu consciência própria.

É exatamente essa ambiguidade que mantém a lenda viva até hoje.

A Simbologia Oculta da Neve

A neve ocupa um papel especial na cultura japonesa.

Ela representa:

  • Beleza

  • Pureza

  • Silêncio

  • Isolamento

  • Efemeridade

A Yuki-onna incorpora todos esses elementos.

Ela é linda.

Mas mortal.

Ela é calma.

Mas perigosa.

Ela é pura.

Mas está associada à morte.

É uma metáfora perfeita para fenômenos naturais.

A natureza não odeia ninguém.

Mas também não faz exceções.

Quando uma nevasca chega, não importa quem você seja.

O resultado pode ser fatal.

A Yuki-onna funciona como a personificação desse conceito.

A Influência nos Animes

Poucas criaturas folclóricas influenciaram tanto a cultura pop japonesa.

Sua presença aparece direta ou indiretamente em dezenas de produções.

Entre elas:

  • InuYasha

  • GeGeGe no Kitaro

  • Nurarihyon no Mago

  • Natsume Yuujinchou

  • Yo-kai Watch

  • Rosario + Vampire

Muitas personagens femininas associadas ao gelo, neve ou inverno carregam traços herdados da Yuki-onna.

A combinação de beleza sobrenatural com melancolia tornou-se um arquétipo extremamente popular.

É um template cultural reutilizado há décadas.

Curiosidades Técnicas do Folclore

Segundo algumas versões da lenda:

  • Ela não deixa pegadas na neve.

  • Seu corpo pode transformar-se em névoa.

  • Ela atravessa portas e paredes.

  • Alimenta-se da energia vital humana.

  • Pode congelar vítimas apenas com a respiração.

  • Algumas histórias afirmam que ela não possui pés, característica comum de fantasmas japoneses.

Traduzindo para linguagem de infraestrutura:

Estamos falando de um processo sem rastreamento, sem auditoria, sem trilha de execução e com privilégios administrativos sobre o ambiente climático.

Basicamente um pesadelo para qualquer auditor.

O Fascínio que Nunca Termina

A razão pela qual a Yuki-onna continua relevante após centenas de anos é simples.

Ela representa um medo universal.

Não o medo do monstro.

Mas o medo do desconhecido.

O medo daquilo que parece belo e seguro.

O medo daquilo que surge silenciosamente.

O medo do que não conseguimos compreender.

No fundo, a Mulher da Neve não é apenas um yokai.

Ela é uma lembrança de que existem fenômenos que desafiam nossa lógica.

Mesmo em uma era de inteligência artificial, computação quântica e sistemas distribuídos, continuamos fascinados por mistérios que não cabem em planilhas, algoritmos ou relatórios.

E talvez seja exatamente por isso que a Yuki-onna continua caminhando pelas montanhas nevadas do Japão.

Silenciosa.

Elegante.

Invisível.

Esperando a próxima tempestade para iniciar mais uma execução.

Porque alguns processos nunca recebem comando de STOP.

Eles apenas entram em espera.

E aguardam o próximo IPL do inverno.


quarta-feira, 22 de maio de 2019

☕🔥 DB2 z/OS — COMO IDENTIFICAR PROBLEMAS EM ÍNDICES, ANALISAR A SAÚDE E CRIAR ÍNDICES EFICIENTES

 

Bellacosa Mainframe e a saude do Db2

☕🔥 DB2 z/OS — COMO IDENTIFICAR PROBLEMAS EM ÍNDICES, ANALISAR A SAÚDE E CRIAR ÍNDICES EFICIENTES

No Db2 for z/OS, índices são literalmente o “GPS” do otimizador.
Quando um índice está ruim, fragmentado, mal desenhado ou inconsistente, os sintomas aparecem rapidamente:

  • CPU alta

  • GETPAGE excessivo

  • LOCKS maiores

  • Deadlocks

  • Elapsed Time absurdo

  • SORT desnecessário

  • RUNSTATS inconsistentes

  • ACCESS PATH inesperado

  • Tablespace em CHECK/RBDP/RECP

  • RID List Overflow

  • REORG frequente


🔥 COMO IDENTIFICAR PROBLEMAS EM ÍNDICES

1 — Verificando Fragmentação do Índice

Um dos principais indicadores.

Consultas importantes

SELECT
    NAME,
    CLUSTERING,
    CLUSTERRATIOF,
    LEAFDIST,
    NLEVELS,
    FULLKEYCARDF,
    FIRSTKEYCARDF
FROM SYSIBM.SYSINDEXES
WHERE CREATOR = 'SEU_SCHEMA'
AND TBNAME = 'SUA_TABELA';

🔎 O QUE OBSERVAR

CLUSTERRATIOF

Mostra o quanto os dados seguem a sequência do índice clustering.

Valores

ValorSituação
> 95Excelente
80–95Aceitável
< 80Fragmentação séria

Baixo CLUSTERRATIO gera:

  • Mais I/O

  • Mais Sync Read

  • Mais Random Access

  • Mais CPU


LEAFDIST

Distância média entre páginas leaf.

Quanto maior:

  • pior a localidade física

  • mais page split ocorreu


NLEVELS

Quantidade de níveis B-Tree.

NívelInterpretação
2-3Normal
4+Índice muito grande ou mal estruturado

Mais níveis = mais GETPAGE.


🔥 PAGE SPLIT — O GRANDE VILÃO

Quando páginas do índice enchem:

  • Db2 divide páginas

  • reorganiza ponteiros

  • aumenta fragmentação

Sintomas:

  • CPU cresce

  • bufferpool sofre

  • random I/O aumenta


🔎 COMO IDENTIFICAR PAGE SPLIT

SELECT
    NAME,
    SPACEF,
    STATSTIME
FROM SYSIBM.SYSINDEXSPACESTATS
WHERE DBNAME = 'SEU_DB';

🔥 REORGCHECK — O TESTE CLÁSSICO

No Db2 LUW existe REORGCHK.

No z/OS normalmente usamos:

  • RUNSTATS

  • REORG TABLESPACE/INDEX

  • Estatísticas catalogadas

  • RTS (Real Time Statistics)


🔥 REAL TIME STATISTICS (RTS)

Tabela importantíssima:

SYSIBM.SYSINDEXSPACESTATS

Campos críticos:

CampoSignificado
REORGINSERTSInserts desde último REORG
REORGDELETESDeletes
REORGUPDATESUpdates
LEAFDISTFragmentação
FARINDREFReferência distante
NEARINDREFReferência próxima

🔥 FARINDREF — UM DOS MELHORES INDICADORES

Mostra quantos acessos ao índice apontam para linhas longe fisicamente.

Quanto maior:

  • pior clustering

  • pior cache

  • pior bufferpool hit ratio


🔥 COMO SABER SE O ÍNDICE NÃO ESTÁ SENDO USADO

Pacotes e explain.


EXPLAIN

EXPLAIN PLAN SET QUERYNO = 100
FOR
SELECT *
FROM CLIENTES
WHERE CPF = ?;

Depois consulte:

SELECT
    ACCESSNAME,
    ACCESSTYPE,
    MATCHCOLS
FROM PLAN_TABLE
WHERE QUERYNO = 100;

🔎 INTERPRETAÇÃO

CampoSignificado
ACCESSTYPE='I'Uso de índice
MATCHCOLSQuantas colunas casaram
ACCESSNAMEÍndice usado

🔥 INDICADORES DE ÍNDICE RUIM

1 — MATCHCOLS baixo

Índice composto mal desenhado.


2 — ACCESSTYPE = 'R'

Tablespace Scan.

Ruim para tabelas grandes.


3 — RID LIST PROCESSING

Pode indicar:

  • excesso de índices

  • índices ruins

  • baixa seletividade


🔥 COMO DESENHAR UM ÍNDICE FORTE

REGRA #1 — COLUNA MAIS SELETIVA PRIMEIRO

Exemplo ruim:

CREATE INDEX IX1
ON CLIENTES
(SEXO, ESTADO);

Baixa cardinalidade.


Melhor:

CREATE INDEX IX1
ON CLIENTES
(CPF, ESTADO);

🔥 REGRA #2 — RESPEITAR O PREDICATE

Db2 usa LEFTMOST MATCHING.

Exemplo:

INDEX(A,B,C)

Funciona bem para:

WHERE A=?
WHERE A=? AND B=?
WHERE A=? AND B=? AND C=?

Ruim para:

WHERE B=?
WHERE C=?

🔥 REGRA #3 — EVITAR ÍNDICES DEMAIS

Cada índice:

  • aumenta INSERT

  • aumenta UPDATE

  • aumenta DELETE

  • aumenta LOG

  • aumenta LOCKING

  • aumenta CPU


🔥 QUANTOS ÍNDICES UMA TABELA DEVE TER?

Não existe número mágico.

Mas no mundo real:

TipoRecomendação
OLTP3–7
Tabelas críticas10–15 máximo
Acima de 20normalmente problema de modelagem

Já vi tabelas com:

  • 80 índices

  • 120 índices

Resultado:

  • INSERT sofrendo

  • Deadlock

  • log monstruoso

  • CPU absurda


🔥 ÍNDICE CLUSTERING

Muito importante.

CREATE INDEX IXCLI1
ON CLIENTES (CPF)
CLUSTER;

Só pode existir UM clustering index por tabela.

Ele influencia:

  • ordem física

  • prefetch

  • sequential detection

  • range scan


🔥 RUNSTATS — FUNDAMENTAL

Sem RUNSTATS:

  • optimizer fica “cego”

  • access path piora


Exemplo

RUNSTATS TABLESPACE DB1.TSCLI
TABLE(ALL)
INDEX(ALL)
KEYCARD
FREQVAL
HISTOGRAM
UPDATE ALL

🔥 O QUE O RUNSTATS FAZ

Atualiza:

  • cardinalidade

  • clustering

  • distribuição

  • frequência

  • histogramas

  • seletividade


🔥 RUNSTATS COM SHRLEVEL CHANGE

Permite online.

SHRLEVEL CHANGE

Muito usado em produção.


🔥 REORG INDEX

Quando usar:

  • fragmentação

  • page split

  • baixa cluster ratio


Exemplo

REORG INDEX (ALL) TABLESPACE DB1.TSCLI
SHRLEVEL CHANGE

🔥 REBUILD INDEX

Mais pesado.

Usado quando:

  • índice corrompido

  • recover

  • inconsistency

  • rebuild pós LOAD REPLACE


🔥 RUNSTATS x REORG

UtilitárioFunção
RUNSTATSAtualiza estatísticas
REORGReorganiza fisicamente
REBUILD INDEXReconstrói índice

🔥 RUNSTATUS / RESTRICTIVE STATES

Estados importantes no Db2.


🔴 CHECK PENDING (CHKP)

Db2 exige CHECK DATA.

Exemplo:

-904 RESOURCE UNAVAILABLE

Resolver:

CHECK DATA TABLESPACE DB1.TS1

🔴 REORG PENDING (REORP)

Db2 exige REORG.

Muito comum após:

  • ALTER

  • compress

  • partition change

Resolver:

REORG TABLESPACE DB1.TS1

🔴 RECOVER PENDING (RECP)

Objeto precisa RECOVER.


🔴 AUX CHECK PENDING

LOB inconsistente.


🔴 ADVISORY REORG PENDING (AREO*)

Db2 recomenda REORG.

Não bloqueia uso.


🔥 QUIESCE — O “PONTO DE RESTORE”

Cria ponto consistente para recover coordenado.


Exemplo

QUIESCE TABLESPACE DB1.TS1
WRITE YES

🔎 O QUE ELE FAZ

Sincroniza:

  • logs

  • páginas

  • buffers

Muito usado antes de:

  • LOAD

  • grandes mudanças

  • backup crítico


🔥 DISPLAY DATABASE

Comando essencial.

-DISPLAY DATABASE(DB1) SPACENAM(TS1) RESTRICT

Mostra:

  • REORP

  • CHKP

  • AREO*

  • COPY pending

  • advisory states


🔥 DISPLAY INDEX

-DISPLAY DATABASE(DB1) SPACENAM(TS1) USE

🔥 IFCID E MONITORAMENTO

Sysprog geralmente usa:

  • IFCID 199

  • IFCID 376

  • IFCID 389

  • OMEGAMON

  • MainView

  • Query Monitor

Para detectar:

  • index scan ruim

  • getpages altos

  • synchronous I/O

  • random read

  • RID overflow


🔥 SINAIS CLÁSSICOS DE ÍNDICE PROBLEMÁTICO

SintomaPossível causa
CPU altaÍndice ruim
Tablespace Scanfalta índice
GETPAGE altoexcesso de níveis
Sync I/O altofragmentação
Deadlockexcesso índices
INSERT lentomuitos índices
REORG frequentepage split
Bufferpool ruimclustering baixo

☕ MELHOR ESTRATÉGIA ENTERPRISE

Fluxo saudável

RUNSTATS
   ↓
EXPLAIN
   ↓
ANÁLISE RTS
   ↓
REORG
   ↓
MONITORAMENTO IFCID
   ↓
AJUSTE DE ACCESS PATH

🔥 RESUMO ENTERPRISE

Índice saudável:

✅ Alta seletividade
✅ Baixo NLEVELS
✅ CLUSTERRATIO alto
✅ Poucos page splits
✅ MATCHCOLS alto
✅ Bom clustering
✅ Estatísticas atualizadas
✅ Poucos índices redundantes


☕ REGRA DE OURO NO Db2 z/OS

“Índice demais mata INSERT.
Índice de menos mata SELECT.
Índice ruim mata os dois.”

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...