Translate

Mostrar mensagens com a etiqueta Mainframe DBA. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Mainframe DBA. Mostrar todas as mensagens

sábado, 24 de novembro de 2018

☕🔥 SQL JOINs NO DB2 MAINFRAME — A ARTE PERIGOSA DE UNIR TABELAS SEM DERRUBAR A PRODUÇÃO

 

Bellacosa Mainframe numa visao dos sql joins em db2

☕🔥 SQL JOINs NO DB2 MAINFRAME — A ARTE PERIGOSA DE UNIR TABELAS SEM DERRUBAR A PRODUÇÃO

Existe um momento em que todo desenvolvedor SQL descobre uma verdade assustadora:

👉 Consultar uma tabela é fácil.

🔥 Difícil é unir múltiplas tabelas em ambiente corporativo REAL sem destruir performance.

E no IBM Mainframe DB2 isso ganha outra dimensão.

Porque JOIN no z/OS não é apenas sintaxe.

É:

  • engenharia de acesso

  • matemática de performance

  • estratégia de índices

  • controle de I/O

  • sobrevivência operacional


☕ O QUE MUITA GENTE NÃO ENTENDE SOBRE JOIN

Nos cursos básicos aparece algo assim:

SELECT *
FROM A
INNER JOIN B
ON A.ID = B.ID

Parece simples.

Mas no DB2 Mainframe essa query pode gerar:

🔥 milhões de GETPAGE
🔥 SORTs monstruosos
🔥 CPU elevada
🔥 lock contention
🔥 access path desastroso


☕ NO MAINFRAME, JOIN É CIRURGIA

Porque estamos falando de tabelas com:

  • bilhões de registros

  • múltiplos índices

  • concorrência extrema

  • milhares de usuários simultâneos


☕🔥 INNER JOIN — O “CASAMENTO OBRIGATÓRIO” DO DB2

O INNER JOIN retorna apenas registros que existem nos dois lados.


☕ Exemplo clássico

Tabela EMPLOYEE

E001  AKHIL
E002  NIKITA
E003  NIL

Tabela JOIN_DATE

E002  2016-04-18
E003  2016-04-19

☕ Query

SELECT
   E.EMP_ID,
   E.FIRST_NAME,
   J.JOINING_DATE
FROM EMPLOYEE E
INNER JOIN JOIN_DATE J
ON E.EMP_ID = J.EMP_ID

☕ Resultado

Somente:

E002
E003

Porque apenas esses possuem correspondência.


☕ Bellacosa Mainframe Analysis™

INNER JOIN é como:

INTERSEÇÃO DE DATASETS CORPORATIVOS

Só sobrevive quem existe nos dois lados.


☕🔥 O ACCESS PATH É O VERDADEIRO REI

O iniciante olha a query.

O DBA Mainframe olha:

🔥 o plano de execução.


☕ O DB2 precisa decidir:

  • qual tabela acessar primeiro

  • qual índice usar

  • qual JOIN METHOD aplicar

  • se haverá SORT

  • se haverá PREFETCH


☕ E aqui nasce a magia (ou o desastre)


☕🔥 NESTED LOOP JOIN — O “LOOP DENTRO DE LOOP”

Estratégia clássica.


☕ Como funciona?

PARA CADA LINHA DA TABELA A
   PROCURE NA TABELA B

☕ Excelente para:

✅ pequenos volumes
✅ índices eficientes
✅ buscas seletivas


☕ Horrível para:

🔥 tabelas gigantes sem índice.


☕ Exemplo mental

É como procurar:

um CPF específico no arquivo do banco.


☕🔥 MERGE SCAN JOIN — O MESTRE DOS GRANDES VOLUMES

Agora entramos no território corporativo pesado.


☕ Funciona melhor quando:

  • dados estão ordenados

  • índices ajudam

  • clustering está correto


☕ O DB2 faz:

TABELA A → ordenada
TABELA B → ordenada

E “caminha” simultaneamente pelas duas.


☕ Isso reduz brutalmente:

  • I/O

  • CPU

  • leitura aleatória


☕ DBA Mainframe AMA Merge Scan.


☕🔥 HYBRID JOIN — O “FRANKENSTEIN” DO OTIMIZADOR

O DB2 mistura estratégias dependendo do cenário.


☕ Porque no z/OS:

🔥 performance é dinâmica.


☕ O que muda?

  • cardinalidade

  • RUNSTATS

  • distribuição

  • volume

  • filtro

  • índice


☕ Mesma query.

☕ Performance completamente diferente.


☕🔥 LEFT JOIN — O “TRAGA TUDO DA ESQUERDA”

Agora chegamos numa armadilha clássica.


☕ Query

SELECT
   E.NAME,
   J.JOIN_DATE
FROM EMPLOYEE E
LEFT JOIN JOIN_DATE J
ON E.ID = J.ID

☕ O que acontece?

Todos os registros da esquerda aparecem.

Mesmo sem correspondência.


☕ Resultado possível

AKHIL   NULL
NIKITA  2016

☕ Isso é MUITO usado em:

  • auditoria

  • relatórios

  • detecção de ausência

  • reconciliação financeira


☕🔥 NULL — O FANTASMA CORPORATIVO

Pouca coisa gera mais bugs que NULL.


☕ NULL não significa:

ZERO
VAZIO
ESPAÇO

☕ NULL significa:

🔥 “valor desconhecido”.


☕ E isso muda toda a lógica SQL.


☕ Exemplo perigoso

WHERE CAMPO = NULL

ERRADO.


☕ Correto:

WHERE CAMPO IS NULL

☕🔥 RIGHT JOIN — O “PRIMO ESQUECIDO”

Tecnicamente útil.

Praticamente raro.


☕ A maioria dos DBAs prefere:

LEFT JOIN

por legibilidade.


☕ Em grandes empresas padronização importa muito.


☕🔥 FULL OUTER JOIN — O “CAOS CONTROLADO”

Agora entramos numa operação pesada.


☕ FULL JOIN retorna:

✅ registros dos dois lados
✅ combinados ou não


☕ Isso é excelente para:

  • reconciliação

  • comparação

  • migração

  • auditoria


☕ Exemplo clássico bancário

SISTEMA A
vs
SISTEMA B

Detectar:

  • faltantes

  • inconsistências

  • divergências


☕🔥 O VERDADEIRO PROBLEMA DOS JOINs

Não é a sintaxe.

É:

🔥 volume.


☕ Uma query inocente pode fazer:

JOIN 5 tabelas gigantes

E gerar:

  • milhões de linhas intermediárias

  • SORTs monstruosos

  • WORKFILES enormes


☕ Resultado?

Batch explode.


☕🔥 WORKFILE — O “INFERNO INVISÍVEL”

Quando DB2 precisa ordenar ou materializar dados:

👉 usa WORKFILE DATABASE.


☕ JOIN ruim pode lotar WORKFILE rapidamente.

E aí começa o sofrimento:

  • slowdown

  • timeout

  • degradação

  • contenção


☕🔥 O SEGREDO DOS DBAs MAINFRAME

O DBA experiente NÃO começa pela query.

Ele começa perguntando:

TEM ÍNDICE?
TEM RUNSTATS?
QUAL A CARDINALIDADE?
QUAL O CLUSTERING?

☕ Porque tuning de JOIN é ciência.


☕🔥 EXPLAIN — O “RAIO-X” DO DB2

Ferramenta absolutamente crítica.


☕ O EXPLAIN mostra:

  • access path

  • join order

  • join method

  • índice usado

  • custo estimado


☕ Sem EXPLAIN…

🔥 você está voando cego no Mainframe.


☕🔥 JOIN + COBOL — O CASAMENTO CORPORATIVO

Grande parte do mundo financeiro funciona assim:

COBOL
 ↓
DB2 JOIN
 ↓
CICS / Batch
 ↓
Transação financeira

☕ O SQL faz o “trabalho pesado”.

O COBOL orquestra.


☕🔥 O QUE O MAINFRAME ENSINA SOBRE SQL

JOIN não é apenas:

ON A.ID = B.ID

JOIN é:

  • arquitetura

  • performance

  • estatística

  • engenharia operacional


☕ Porque em ambientes críticos:

🔥 uma query mal otimizada pode custar milhões.


☕🔥 CONCLUSÃO — SQL JOIN NO DB2 É UMA GUERRA SILENCIOSA

O mundo moderno acha que SQL é apenas linguagem.

O Mainframe sabe que SQL é:

infraestrutura crítica.

E talvez essa seja a maior diferença entre:

  • aprender JOIN
    e

  • sobreviver ao DB2 z/OS em produção.

Porque no fim…

🔥 unir tabelas é fácil.
Difícil é fazer isso sem derrubar o sistema bancário.

sábado, 16 de junho de 2018

☕🔥 SQL NO DB2 MAINFRAME — O “SELECT *” QUE PODE DERRUBAR UM BANCO INTEIRO

 

Belalcosa Mainframe e o sql matador de db2

☕🔥 SQL NO DB2 MAINFRAME — O “SELECT *” QUE PODE DERRUBAR UM BANCO INTEIRO

Todo iniciante em SQL aprende algo assim:

SELECT * FROM CLIENTES;

E pensa:

“Pronto. Sei SQL.”

Mas no universo IBM Mainframe + DB2…

isso é apenas o começo da guerra.

Porque no mundo corporativo REAL:

🔥 SQL não é apenas consulta.
SQL é sobrevivência operacional.

Cada comando pode impactar:

  • CPU

  • I/O

  • Buffer Pool

  • Locks

  • Access Path

  • Throughput

  • Batch Window

  • SLA bancário

E é aí que o DB2 z/OS entra em outro nível de engenharia.


☕ O DB2 NÃO FOI FEITO PARA “PROJETINHOS”

O DB2 Mainframe nasceu para:

  • bancos globais

  • bolsas financeiras

  • cartões

  • telecom

  • seguradoras

  • governo

  • processamento massivo

Enquanto bancos menores pensam em simplicidade…

o DB2 pensa em:

🔥 bilhões de linhas simultaneamente.


☕🔥 1. SELECT ALL RECORDS — O COMANDO MAIS PERIGOSO PARA INICIANTES

A famosa query:

SELECT *
FROM EMPLOYEES;

parece inocente.

No DB2 z/OS?

Pode virar tragédia.


☕ O PROBLEMA DO SELECT *

Ele traz:

  • todas as colunas

  • dados desnecessários

  • mais I/O

  • mais GETPAGE

  • mais CPU

  • mais tráfego


☕ Em produção isso custa dinheiro REAL

O profissional Mainframe aprende cedo:

“Nunca peça ao DB2 mais do que você realmente precisa.”


☕ Forma correta:

SELECT
    NAME,
    SALARY
FROM EMPLOYEES;

☕ Por quê?

Porque no Mainframe:

🔥 performance é cultura.


☕ Bellacosa Mainframe Analysis™

SELECT * em produção é como:

COPIAR TODOS OS DATASETS DA EMPRESA
PARA LER APENAS UMA LINHA

☕🔥 2. SELECT SPECIFIC COLUMNS — O PENSAMENTO MAINFRAME

Agora começamos a entrar na mentalidade correta.


☕ Query:

SELECT
    NAME,
    SALARY
FROM EMPLOYEES;

☕ O que o DB2 gosta?

  • menos páginas lidas

  • menos movimentação

  • menos memória

  • menos sorting

  • menos rede


☕ Isso melhora:

✅ cache
✅ buffer pool
✅ response time
✅ throughput


☕ Em APIs REST isso é ainda mais importante

Porque hoje:

APP MOBILE
   ↓
API REST
   ↓
DB2 z/OS

Cada byte importa.


☕🔥 3. WHERE CLAUSE — O VERDADEIRO CAMPO DE BATALHA

Aqui nasce a diferença entre:

🧠 “quem escreve SQL”
e
🔥 “quem entende DB2”.


☕ Exemplo:

SELECT *
FROM EMPLOYEES
WHERE SALARY > 50000;

☕ Parece simples.

Mas o DB2 analisa:

  • índice

  • cardinalidade

  • filter factor

  • clustering

  • access path

  • stage 1/stage 2


☕🔥 STAGE 1 vs STAGE 2

Conceito clássico do DB2 z/OS.


☕ Stage 1

Mais rápido.

Executado próximo ao Data Manager.


☕ Stage 2

Mais CPU.

Mais custo.

Mais sofrimento operacional.


☕ Exemplo RUIM:

WHERE YEAR(DATAADM) = 2025

Pode inutilizar índice.


☕ Melhor:

WHERE DATAADM >= '2025-01-01'
AND DATAADM <  '2026-01-01'

Agora o índice pode respirar.


☕🔥 4. ORDER BY — O SORT INVISÍVEL QUE DEVORA CPU

Agora chegamos numa armadilha clássica.


☕ Query:

SELECT *
FROM EMPLOYEES
ORDER BY SALARY DESC;

☕ O que isso significa internamente?

Possivelmente:

🔥 SORT.

E SORT custa caro.


☕ O DB2 tenta evitar isso usando:

  • índices

  • clustering

  • ordering natural


☕ Exemplo inteligente

Índice:

SALARY DESC

O DB2 pode evitar sort completamente.


☕ DBA Mainframe AMA isso

Porque reduz:

  • tempo batch

  • consumo CPU

  • workfiles


☕🔥 5. GROUP BY — O NASCIMENTO DA INTELIGÊNCIA CORPORATIVA

Agora o SQL começa a virar BI.


☕ Exemplo:

SELECT
    DEPARTMENT,
    COUNT(*)
FROM EMPLOYEES
GROUP BY DEPARTMENT;

☕ Isso parece simples…

Mas alimenta:

  • relatórios financeiros

  • dashboards

  • analytics

  • auditoria

  • compliance


☕ O perigo oculto

GROUP BY pode gerar:

🔥 SORT massivo.


☕ E no DB2 isso significa:

  • WORKFILES

  • TEMP DATABASE

  • I/O pesado

  • CPU alta


☕🔥 O OTIMIZADOR DO DB2 — A ENTIDADE “MISTERIOSA”

Pouca gente entende o poder disso.

O DB2 Optimizer decide:

  • qual índice usar

  • qual join executar

  • qual caminho custa menos


☕ E ele faz isso baseado em:

  • RUNSTATS

  • cardinalidade

  • histogramas

  • distribuição de dados


☕ Sem RUNSTATS atualizado?

🔥 O access path pode virar desastre.


☕ Por isso DBA Mainframe é tão valorizado

Porque tuning em DB2 é quase arte.


☕🔥 LOCKS — O TERROR SILENCIOSO

Aqui começa a engenharia pesada.


☕ Uma query ruim pode causar:

  • lock escalation

  • deadlock

  • timeout

  • contention


☕ Exemplo clássico

SELECT *
FROM CONTAS
FOR UPDATE

Sem critério?

🔥 caos operacional.


☕ No Mainframe milhares acessam simultaneamente

Então concorrência é assunto sagrado.


☕🔥 COMMIT — O DETALHE QUE SALVA PRODUÇÃO

Em batch COBOL + DB2:

EXEC SQL
   COMMIT
END-EXEC

não é detalhe.

É sobrevivência.


☕ Sem COMMIT correto:

  • locks persistem

  • logs crescem

  • rollback explode

  • performance cai


☕🔥 O DB2 NÃO PENSA COMO BANCO “COMUM”

Ele pensa como:

um sistema operacional de dados corporativos.


☕ Porque ele precisa garantir:

✅ integridade
✅ recuperação
✅ disponibilidade
✅ paralelismo
✅ auditoria
✅ performance

24x7.


☕🔥 O QUE O MAINFRAME ENSINA SOBRE SQL

SQL no notebook do estudante:

SELECT *
FROM TESTE;

☕ SQL no Mainframe:

QUAL O IMPACTO DISSO NO BUFFER POOL?
VAI GERAR SORT?
USA ÍNDICE?
QUAL O ACCESS PATH?
VAI CAUSAR LOCK?
TEM RUNSTATS?

☕ É outro universo.


☕🔥 O VERDADEIRO PODER DO DB2

O DB2 não ficou vivo por décadas por acaso.

Ele sobreviveu porque consegue:

🔥 processar absurdos de dados sem parar.


☕ PIX.

☕ cartões.
☕ bolsas financeiras.
☕ reservas aéreas.
☕ telecom.
☕ bancos globais.

Tudo isso continua dependendo de SQL rodando em z/OS.


☕🔥 CONCLUSÃO — SQL NO MAINFRAME NÃO É “LINGUAGEM”

É engenharia de missão crítica.

E talvez essa seja a maior diferença entre:

  • aprender SQL
    e

  • entender DB2 Mainframe.

Porque no fim:

🔥 uma query mal escrita pode custar milhões.

segunda-feira, 12 de março de 2018

☕🔥 SQL NO DB2 MAINFRAME — A LINGUAGEM QUE MOVE O DINHEIRO DO PLANETA (E QUE MUITA GENTE USA SEM ENTENDER)

 

Bellacosa Mainframe e a linguagem sql do db2

☕🔥 SQL NO DB2 MAINFRAME — A LINGUAGEM QUE MOVE O DINHEIRO DO PLANETA (E QUE MUITA GENTE USA SEM ENTENDER)

Hoje existe uma geração inteira que aprendeu SQL em:

  • MySQL

  • PostgreSQL

  • SQL Server

  • SQLite

  • cursos rápidos de Data Analytics

E aí nasce uma ilusão perigosa:

“SQL é só SELECT.”

Só que quando alguém entra no universo do DB2 Mainframe…

descobre rapidamente que SQL corporativo REAL é outra dimensão.

Porque no IBM Mainframe, SQL não é apenas consulta.

🔥 SQL no DB2 é infraestrutura crítica mundial.

É ele que movimenta:

  • bancos

  • cartões

  • seguradoras

  • bolsas de valores

  • governos

  • companhias aéreas

  • telecomunicações

E o mais impressionante:

👉 Grande parte do planeta depende diariamente de comandos SQL rodando em DB2 no z/OS.


☕ O QUE TORNA O DB2 MAINFRAME DIFERENTE?

Muita gente pensa:

“SQL é tudo igual.”

Não.

O DB2 z/OS foi construído para:

  • altíssimo volume

  • concorrência extrema

  • integridade transacional

  • recuperação sofisticada

  • segurança corporativa

  • bilhões de linhas

  • milhares de usuários simultâneos

Enquanto bancos menores focam simplicidade…

o DB2 Mainframe foi projetado para sobreviver ao caos corporativo.


☕🔥 SECTION 1 — SELECT: O COMANDO MAIS SUBESTIMADO DA HISTÓRIA

Todo mundo aprende:

SELECT * FROM CLIENTES;

E acha que domina SQL.

No Mainframe isso pode virar um desastre.


☕ O “SELECT *” É QUASE UMA HERESIA NO DB2

Em ambientes críticos:

SELECT *

pode causar:

  • I/O desnecessário

  • uso excessivo de buffer pool

  • degradação de CPU

  • aumento de GETPAGE

  • piora no access path


☕ O PROFISSIONAL MAINFRAME PENSA DIFERENTE

Ele faz:

SELECT
    NOME,
    SALDO,
    LIMITE
FROM CLIENTES
WHERE ID_CLIENTE = :WS-ID

Somente os campos necessários.


☕ Por quê?

Porque no z/OS:

🔥 performance é religião.


☕🔥 O OTIMIZADOR DO DB2 É UMA ENTIDADE QUASE “VIVA”

Pouca gente entende isso.

O DB2 Optimizer:

  • escolhe access path

  • decide índice

  • calcula custo

  • analisa estatísticas

  • estima cardinalidade

Tudo automaticamente.


☕ Exemplo clássico

Mesma query.

Dois ambientes.

Performances totalmente diferentes.

Por quê?

Porque:

  • RUNSTATS mudou

  • índices mudaram

  • volume mudou

  • clustering mudou

O Optimizer escolheu outro caminho.


☕🔥 SECTION 2 — WHERE: O LUGAR ONDE NASCEM AS GUERRAS DE PERFORMANCE

Aqui mora o verdadeiro poder do SQL.


☕ Exemplo simples

SELECT *
FROM CONTAS
WHERE CPF = '12345678900'

☕ Parece inocente…

Mas no DB2 Mainframe isso envolve:

  • matching columns

  • indexability

  • stage 1/stage 2 predicates

  • filter factor

  • synchronous I/O

  • list prefetch


☕🔥 STAGE 1 vs STAGE 2 — O TERROR DOS INICIANTES

No DB2:

Stage 1

Mais eficiente.

Executado mais próximo do Data Manager.


Stage 2

Mais custoso.

Mais CPU.

Mais processamento.


☕ Exemplo ruim

WHERE YEAR(DATA) = 2025

Pode inutilizar índice.


☕ Melhor abordagem

WHERE DATA >= '2025-01-01'
AND DATA <  '2026-01-01'

Agora o índice pode trabalhar.

🔥 Isso é mentalidade mainframe.


☕🔥 SECTION 3 — ORDER BY: O “SORT INVISÍVEL” QUE DESTRÓI BATCHES

Muita gente não percebe:

ORDER BY

quase sempre significa:

🔥 SORT.

E SORT em grandes volumes pode custar caro.


☕ O que o DB2 tenta fazer?

Evitar sort.


☕ Como?

Usando índice na ordem correta.

Exemplo:

Índice:

CPF ASC

Query:

ORDER BY CPF

O DB2 pode evitar sort completamente.


☕🔥 SECTION 4 — FUNÇÕES DE AGREGAÇÃO: O PODER ANALÍTICO CORPORATIVO

Aqui o DB2 vira máquina de inteligência.


☕ COUNT

SELECT COUNT(*)
FROM TRANSACOES

☕ Em Mainframe isso pode significar:

  • milhões

  • bilhões

  • trilhões

de registros.


☕ O detalhe assustador

Em grandes ambientes:

COUNT(*)

mal otimizado pode consumir recursos absurdos.


☕🔥 SUM e AVG NO MUNDO FINANCEIRO

SELECT SUM(VALOR)
FROM PIX

Isso movimenta literalmente bilhões de reais.


☕ Precisão no Mainframe é crítica

Erro de arredondamento?

🔥 Catástrofe financeira.


☕🔥 SECTION 5 — GROUP BY: O CÉREBRO DOS RELATÓRIOS CORPORATIVOS

O GROUP BY é onde SQL começa a parecer inteligência artificial corporativa.


☕ Exemplo

SELECT
    AGENCIA,
    SUM(SALDO)
FROM CONTAS
GROUP BY AGENCIA

☕ Isso permite:

  • analytics

  • BI

  • auditoria

  • relatórios financeiros

  • antifraude


☕ O perigo oculto

GROUP BY pode gerar:

  • grandes SORTs

  • WORKFILES gigantes

  • uso excessivo de TEMP DB


☕🔥 SECTION 6 — HAVING: O FILTRO “PÓS-INTELIGÊNCIA”

HAVING filtra após agregação.


☕ Exemplo

SELECT
    AGENCIA,
    COUNT(*)
FROM CONTAS
GROUP BY AGENCIA
HAVING COUNT(*) > 1000

☕ O detalhe técnico

HAVING normalmente custa mais que WHERE.

Porque:

  • primeiro agrega

  • depois filtra


☕🔥 SECTION 7 — JOINS: O CAMPO DE BATALHA DO DB2

Aqui mora a verdadeira engenharia SQL.


☕ Nested Loop Join

Bom para pequenos volumes.


☕ Merge Scan Join

Excelente para grandes conjuntos ordenados.


☕ Hybrid Join

Mistura estratégias.


☕ O DBA Mainframe vive disso

Analisando:

  • PLAN_TABLE

  • EXPLAIN

  • access path

  • RID list

  • prefetch


☕ Exemplo clássico

SELECT *
FROM CLIENTE C
JOIN CONTA X
ON C.ID = X.ID_CLIENTE

☕ Parece simples…

Mas por trás o DB2 pode fazer:

  • tablespace scan

  • index scan

  • sort merge

  • parallelism


☕🔥 SECTION 8 — LIMIT/FETCH FIRST: O SALVADOR DA CPU

No mundo distribuído usam:

LIMIT 10

No DB2 z/OS:

FETCH FIRST 10 ROWS ONLY

☕ Isso reduz:

  • CPU

  • I/O

  • tempo de resposta


☕ Muito usado em:

  • APIs REST

  • dashboards

  • consultas online

  • mobile


☕🔥 SECTION 9 — ALIAS: A LEITURA HUMANA DO CAOS

Grandes queries corporativas ficam monstruosas.

Alias salva vidas.


☕ Exemplo

SELECT
    C.NOME,
    X.SALDO
FROM CLIENTE C,
     CONTA X

☕ Sem alias?

Viraria insanidade visual.


☕🔥 SECTION 10 — CASE: A INTELIGÊNCIA EMBUTIDA NO SQL

CASE transforma SQL em mecanismo decisório.


☕ Exemplo

SELECT
CASE
   WHEN SALDO < 0
      THEN 'DEVEDOR'
   ELSE 'POSITIVO'
END
FROM CONTAS

☕ O Mainframe usa isso em:

  • scoring

  • antifraude

  • classificação

  • regras de negócio

  • compliance


☕🔥 O QUE OS CURSOS DE SQL NORMALMENTE NÃO ENSINAM

No DB2 Mainframe existem conceitos avançados gigantescos:

  • locking

  • isolation level

  • package

  • bind

  • commit

  • rollback

  • UR/CS/RS/RR

  • deadlock

  • claim/drain

  • RID pool

  • EDM pool

  • buffer pool

Aí o jogo muda completamente.


☕🔥 O DB2 NÃO É “SÓ UM BANCO”

Ele é:

um sistema operacional de dados corporativos.


☕🔥 A GRANDE VERDADE

O SQL que roda no notebook do estudante…

e o SQL que roda no z/OS…

podem parecer iguais.

Mas estão separados por:

  • escala

  • criticidade

  • engenharia

  • confiabilidade

  • performance

  • complexidade


☕🔥 CONCLUSÃO — SQL NO MAINFRAME NÃO É MODA. É SOBREVIVÊNCIA.

No mundo moderno:

  • apps falham

  • containers reiniciam

  • microsserviços quebram

Mas o DB2 continua lá.

Processando:

  • pagamentos

  • cartões

  • PIX

  • reservas aéreas

  • bolsas financeiras

24x7.

E talvez essa seja a maior lição do Mainframe:

🔥 “SQL não é apenas consulta.
É a linguagem silenciosa que mantém a economia mundial funcionando.”


sexta-feira, 27 de novembro de 2015

☕🔥 DB2 NO IBM MAINFRAME — OS 9 CONCEITOS DE BANCO DE DADOS QUE SEPARAM CURIOSOS DE ENGENHEIROS CORPORATIVOS

 

Bellacosa Mainframe em 9 conceitos para melhorar a experiencia em db2

☕🔥 DB2 NO IBM MAINFRAME — OS 9 CONCEITOS DE BANCO DE DADOS QUE SEPARAM CURIOSOS DE ENGENHEIROS CORPORATIVOS

Muita gente aprende banco de dados assim:

SELECT * FROM CLIENTES;

E acredita que já “entende SQL”.

Mas no universo IBM Mainframe + DB2…

isso é apenas a porta de entrada.

Porque o DB2 z/OS não foi criado para:

  • apps pequenos

  • tabelinhas simples

  • projetinhos acadêmicos

Ele foi criado para:

🔥 processar o planeta.

Bancos.
PIX.
Cartões.
Seguradoras.
Bolsas financeiras.
Telecom.

E para sobreviver nesse universo…

existem fundamentos que TODO profissional precisa dominar.

Não apenas decorar.

🔥 Entender profundamente.


☕🔥 1. TABLES — AS “CAIXAS-FORTES” DO MUNDO CORPORATIVO

Tudo começa aqui.

TABLES (Tabelas)


☕ O que são?

Estruturas organizadas em:

  • linhas

  • colunas

  • registros


☕ Exemplo simples

CLIENTES

IDNOMEEMAIL
1ALICEalice@email.com

☕ Parece simples…

Mas no DB2 Mainframe uma tabela pode conter:

🔥 bilhões de registros.


☕ E aí surgem preocupações reais:

  • page size

  • clustering

  • partitioning

  • buffer pool

  • compression

  • locking


☕ Bellacosa Mainframe Analysis™

Tabela no DB2 não é “planilha”.

É:

🔥 infraestrutura crítica corporativa.


☕🔥 2. PRIMARY KEY — O “RACF ID” DOS DADOS

Agora entramos numa das bases mais importantes.

PRIMARY KEY


☕ A chave primária identifica unicamente cada linha.


☕ Exemplo

ID_CLIENTE = 1001

Nunca pode duplicar.


☕ Isso garante:

✅ unicidade
✅ integridade
✅ consistência


☕ No Mainframe isso é sagrado

Porque duplicidade em ambiente financeiro pode virar:

🔥 desastre operacional.


☕ Exemplo bancário

Dois clientes com mesma conta?

Impensável.


☕ Bellacosa Mainframe Analysis™

Primary Key é como:

RACF USERID

Identidade única dentro do sistema.


☕🔥 3. FOREIGN KEY — O “CABO DE REDE” ENTRE TABELAS

Agora começamos a construir relacionamentos.

FOREIGN KEY


☕ Ela conecta tabelas.


☕ Exemplo

CLIENTES

ID
1

PEDIDOS

ID_PEDIDOCLIENTE_ID
1001

☕ Isso cria integridade referencial.


☕ Sem isso?

🔥 caos relacional.


☕ O DB2 impede inconsistências como:

  • pedido sem cliente

  • transação órfã

  • referência inválida


☕ Isso é vital no Mainframe

Porque ambientes corporativos precisam de:

🔥 confiabilidade absoluta.


☕🔥 4. INDEXES — O “CATÁLOGO SECRETO” DO DB2

Agora chegamos num dos pontos mais importantes do z/OS.

INDEXES


☕ O índice evita que o DB2 leia tudo.


☕ Sem índice:

TABLE SPACE SCAN

☕ Com índice:

🔥 acesso direcionado.


☕ Bellacosa Mainframe Analysis™

Índice é como:

índice remissivo de enciclopédia

Você vai direto ao ponto.


☕ Exemplo clássico

Buscar CPF sem índice em bilhões de linhas?

🔥 sofrimento puro.


☕ Índices impactam:

  • CPU

  • GETPAGE

  • I/O

  • locks

  • elapsed time


☕ DBA Mainframe vive obcecado por isso.


☕🔥 5. NORMALIZATION — A ARTE DE EVITAR BAGUNÇA CORPORATIVA

Agora entramos em modelagem.

NORMALIZATION


☕ Objetivo:

reduzir redundância.


☕ Exemplo RUIM

CLIENTE
CLIENTE_TELEFONE_1
CLIENTE_TELEFONE_2
CLIENTE_TELEFONE_3

☕ Melhor:

Tabela separada.


☕ Isso melhora:

✅ integridade
✅ manutenção
✅ consistência


☕ Mas existe um detalhe importante

Normalização extrema pode gerar:

🔥 JOINs monstruosos.


☕ E aí nasce o equilíbrio corporativo.


☕🔥 6. SQL QUERIES — A “LINGUAGEM OPERACIONAL” DO PLANETA

Agora chegamos ao coração do DB2.

SQL


☕ SQL não é apenas consulta.

É:

  • leitura

  • escrita

  • atualização

  • análise

  • inteligência corporativa


☕ Exemplo

SELECT NOME, EMAIL
FROM CLIENTES
WHERE IDADE > 18
ORDER BY NOME;

☕ No Mainframe isso envolve:

  • optimizer

  • access path

  • RUNSTATS

  • index usage

  • locking


☕ Query ruim?

🔥 milhões em CPU.


☕ Query boa?

🔥 eficiência absurda.


☕🔥 7. RELATIONSHIPS — O “SYSplex” DOS DADOS

Agora os dados começam a formar ecossistemas.


☕ Tipos clássicos

One-to-One

Uma pessoa → um passaporte.


One-to-Many

Cliente → vários pedidos.


Many-to-Many

Alunos ↔ cursos.


☕ Bellacosa Mainframe Analysis™

Relacionamentos lembram:

🔥 integração entre subsistemas no z/OS.


☕ Porque no fim…

tudo precisa conversar sem perder integridade.


☕🔥 8. TRANSACTIONS — O CORAÇÃO FINANCEIRO DO MAINFRAME

Agora entramos no território sagrado.

TRANSAÇÕES.


☕ Exemplo clássico

BEGIN
 ↓
UPDATE
 ↓
COMMIT

☕ Ou:

ROLLBACK

☕ Isso garante:

🔥 tudo ou nada.


☕ Exemplo bancário

Transferência:

  • debita conta A

  • credita conta B


☕ Se metade falhar?

ROLLBACK.


☕ Isso é ABSOLUTAMENTE CRÍTICO.


☕ Porque o Mainframe não pode “quase funcionar”.


☕🔥 9. ACID — A RELIGIÃO DO DB2

Agora chegamos na base filosófica do banco de dados corporativo.

ACID


☕ A — Atomicity

Tudo acontece…
ou nada acontece.


☕ C — Consistency

Dados permanecem válidos.


☕ I — Isolation

Transações não interferem incorretamente.


☕ D — Durability

Após COMMIT…

🔥 os dados sobrevivem.


☕ Isso é o que permite:

  • bancos globais

  • bolsas financeiras

  • PIX

  • cartões

funcionarem 24x7.


☕ Bellacosa Mainframe Analysis™

ACID é praticamente:

🔥 o “RACF filosófico” do banco de dados.


☕🔥 O OTIMIZADOR — A ENTIDADE MISTERIOSA DO DB2

Pouca gente entende isso profundamente.


☕ O optimizer decide:

  • índice

  • JOIN

  • SORT

  • acesso

  • custo


☕ Baseado em:

  • RUNSTATS

  • cardinalidade

  • histogramas

  • distribuição


☕ Sem estatísticas corretas?

🔥 performance pode morrer.


☕🔥 O QUE O MAINFRAME ENSINA SOBRE BANCO DE DADOS

O mercado moderno frequentemente pensa:

“Banco é armazenamento.”


☕ O Mainframe pensa diferente.

Banco é:

  • engenharia

  • integridade

  • disponibilidade

  • resiliência

  • missão crítica


☕ Porque quando bilhões dependem do sistema…

erro deixa de ser “bug”.

🔥 erro vira crise financeira.


☕🔥 CONCLUSÃO — DB2 NÃO É APENAS BANCO DE DADOS

É um sistema operacional de informações corporativas.

Tables organizam.
Keys identificam.
Indexes aceleram.
Transactions protegem.
ACID sustenta tudo.

E talvez essa seja a maior verdade sobre o IBM Mainframe:

ele não sobreviveu por nostalgia.

🔥 Ele sobreviveu porque poucos ambientes no planeta conseguem proteger dados críticos com tanta eficiência quanto o DB2 z/OS.

sexta-feira, 10 de fevereiro de 2012

☕🔥 SQL QUERYING SKILL NO DB2 MAINFRAME — O FAROL QUE SEPARA “QUEM ESCREVE SQL” DE QUEM DOMINA O SISTEMA

 

Bellacosa Mainframe evoluindo skills em db2 

☕🔥 SQL QUERYING SKILL NO DB2 MAINFRAME — O FAROL QUE SEPARA “QUEM ESCREVE SQL” DE QUEM DOMINA O SISTEMA

Existe uma enorme diferença entre:

SELECT * FROM CLIENTE;

e realmente entender:

🔥 como o DB2 pensa.

E essa diferença muda completamente:

  • performance

  • custo

  • CPU

  • locking

  • concorrência

  • disponibilidade

  • tempo de resposta

Porque no universo IBM Mainframe…

SQL não é apenas linguagem.

🔥 SQL é engenharia operacional.

E a imagem do “farol SQL” mostra isso perfeitamente.

Ela representa uma jornada:

  • iniciante

  • intermediário

  • avançado

que no mundo DB2 for z/OS pode literalmente separar:

  • sistemas estáveis
    de

  • ambientes entrando em colapso silenciosamente.


☕🔥 O FAROL É UMA ANALOGIA PERFEITA PARA O DB2

Pouca gente percebe isso.

Mas DB2 em Mainframe funciona exatamente como um grande sistema de navegação corporativa.


☕ O DB2 precisa guiar:

  • milhões de queries

  • milhares de transações

  • workloads concorrentes

  • aplicações CICS

  • batch COBOL

  • APIs

  • analytics

sem falhar.


☕ Bellacosa Mainframe Analysis™

O SQL Developer não escreve apenas consultas.

🔥 Ele influencia diretamente a saúde do ambiente z/OS inteiro.


☕🔥 NÍVEL BEGINNER — “APRENDENDO A FALAR COM O DB2”

Aqui nasce a maioria dos desenvolvedores.


☕ Conceitos básicos:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • GROUP BY

  • ORDER BY

  • JOINs


☕ Parece simples…

mas já existem armadilhas perigosas.


☕ Exemplo clássico

SELECT *
FROM CLIENTES

☕ Em tabela pequena?

Ok.


☕ Em tabela DB2 corporativa com bilhões de linhas?

🔥 desastre potencial.


☕ O MAINFRAME ENSINA UMA LIÇÃO BRUTAL

Toda query custa recursos.


☕ Recursos significam:

  • CPU

  • I/O

  • bufferpool

  • locks

  • sort

  • memória


☕🔥 QUERY WRITING — O “COBOL MENTAL” DO SQL

Aqui começa a maturidade.


☕ Bons desenvolvedores aprendem:

✅ evitar SELECT *
✅ filtrar corretamente
✅ usar índices
✅ reduzir scans
✅ controlar joins


☕ Porque DB2 NÃO “adivinha intenção”.

Ele segue:
🔥 access paths.


☕🔥 DATA UNDERSTANDING — O SEGREDO QUE MUITA GENTE IGNORA

Essa talvez seja a parte mais importante da imagem.


☕ O problema raramente é apenas SQL.

Frequentemente é:

🔥 modelo de dados ruim.


☕ Exemplo clássico

Campos:

CHAR(500)

para dados minúsculos.


☕ Resultado?

  • desperdício

  • I/O maior

  • cache pior

  • performance degradada


☕ Bellacosa Mainframe Analysis™

Modelagem ruim no DB2 vira:
🔥 dívida técnica por décadas.


☕🔥 INTERMEDIATE — QUANDO O SQL COMEÇA A VIRAR ENGENHARIA

Agora entramos no território dos profissionais perigosos.


☕ Execution Model

Pouca gente entende o pipeline interno do DB2.


☕ Uma query passa por:

PARSING
 ↓
OTIMIZAÇÃO
 ↓
ACCESS PATH
 ↓
EXECUÇÃO

☕ O otimizador DB2 é extremamente sofisticado.


☕ Mas depende de:

  • estatísticas

  • índices

  • cardinalidade

  • distribuição de dados


☕🔥 RUNSTATS — O “ALIMENTO” DO OTIMIZADOR

Sem estatísticas boas:

🔥 o optimizer fica “cego”.


☕ Resultado?

  • table scans gigantes

  • CPU absurda

  • planos ruins


☕ Isso derruba produção REAL.


☕🔥 SYNCHRONISATION — O “TRÂNSITO” DAS TRANSAÇÕES

Agora entramos numa das áreas mais críticas do DB2.


☕ Concorrência.


☕ Milhares de usuários acessando simultaneamente.


☕ Problemas clássicos:

  • deadlocks

  • lock escalation

  • timeout

  • contenção


☕ Bellacosa Mainframe Analysis™

DB2 é praticamente:
🔥 controle aéreo de transações financeiras.


☕ Tudo precisa coexistir sem colisão.


☕🔥 LOCKING — O “RACF” DOS DADOS

O DB2 protege integridade via locking.


☕ Exemplo:

UPDATE CONTA
SET SALDO = SALDO - 100

☕ Enquanto isso outro processo pode tentar alterar a mesma linha.


☕ Sem controle?

🔥 corrupção de dados.


☕ O DB2 leva ACID MUITO a sério.


☕🔥 VIEWS, CTEs E STORED PROCEDURES — O “ABSTRACTION LAYER”

Agora chegamos no SQL mais sofisticado.


☕ Views

Abstração lógica.


☕ CTEs

Queries organizadas e reutilizáveis.


☕ Stored Procedures

Lógica próxima do banco.


☕ Isso reduz:

  • tráfego

  • latência

  • complexidade


☕ Mainframe sempre valorizou:

🔥 processamento perto dos dados.


☕🔥 ADVANCED — O NÍVEL “DB2 WHISPERER”

Agora entramos na elite.


☕ Aqui o profissional entende:

  • EXPLAIN PLAN

  • access path

  • index strategy

  • partitioning

  • concurrency

  • internals


☕ Ele para de perguntar:

“a query funciona?”

e começa perguntar:

“quanto ela custa?”

☕🔥 EXPLAIN PLAN — O “RAIO-X” DO DB2

Ferramenta obrigatória.


☕ Ela mostra:

  • scans

  • joins

  • sorts

  • index usage

  • estimated cost


☕ Bellacosa Mainframe Analysis™

EXPLAIN é como:
🔥 um IPCS da query.


☕🔥 INDEXING — A ARTE QUE SALVA OU DESTRÓI PERFORMANCE

Índice é maravilhoso…

até virar excesso.


☕ Muitos índices causam:

  • INSERT lento

  • UPDATE pesado

  • manutenção absurda


☕ Poucos índices causam:

🔥 scans infernais.


☕ O segredo é equilíbrio.


☕🔥 CONCURRENCY ISSUES — O “INFERNO INVISÍVEL”

Sistemas não caem apenas por CPU.


☕ Muitas vezes o problema é:

🔥 contenção.


☕ Exemplo:

10 mil usuários esperando lock.


☕ O ambiente parece “lento”…

mas na verdade está:

  • bloqueado

  • serializado

  • congestionado


☕🔥 MODEL & SYSTEM THINKING — O NÍVEL ARQUITETO

Aqui mora o verdadeiro especialista.


☕ Ele entende:

talvez o problema não seja SQL.


☕ Talvez seja:

  • arquitetura

  • modelagem

  • distribuição

  • workflow

  • volume

  • design transacional


☕ Isso é MUITO Bellacosa Mainframe.

Porque Mainframe sempre pensou:
🔥 sistema inteiro.


☕🔥 O DB2 NÃO É “SÓ BANCO”

Ele é:

  • plataforma transacional

  • motor financeiro

  • sistema crítico

  • infraestrutura operacional


☕ Grandes bancos dependem disso diariamente.


☕ PIX.

☕ Cartão.
☕ Bolsa.
☕ Seguros.
☕ Governo.

Tudo passa por bancos de dados extremamente sofisticados.


☕🔥 O MAIOR ERRO DOS DESENVOLVEDORES MODERNOS

Achar que:

hardware resolve tudo

☕ Mainframe ensina exatamente o contrário.


☕ Eficiência importa.

Muito.


☕ Porque escala real é brutal.


☕🔥 CONCLUSÃO — SQL NÃO É SOBRE CONSULTAS… É SOBRE ENTENDER O COMPORTAMENTO DO SISTEMA

Qualquer pessoa aprende SELECT.

Mas poucos realmente entendem:

  • optimizer

  • locking

  • access path

  • cardinalidade

  • modelagem

  • concorrência

  • custo operacional

E talvez essa seja a maior verdade do DB2 for z/OS:

o melhor programador SQL não é o que escreve queries mais “bonitas”.

🔥 É o que consegue fazer bilhões de transações coexistirem sem o sistema sentir dor.