| Bellacosa Mainframe apresenta o motor do DB2 a algebra relacional |
🔷 Relational Algebra no Mainframe
Uma viagem raiz pelo coração do DB2 (IBM Mainframe Edition)
Se você trabalha — ou sonha em trabalhar — com IBM Mainframe, cedo ou tarde vai ouvir um termo que parece saído de um livro de matemática dos anos 70:
👉 Relational Algebra
Calma. Respira.
Não é um bicho de sete cabeças.
É, na verdade, a Força por trás do SQL.
Antes de existir SELECT * FROM SYSIBM.SYSDUMMY1, alguém precisou pensar como os dados se relacionam. Esse alguém foi Edgar F. Codd, lá na IBM, em 1970. Sim, tudo isso nasceu dentro da IBM — respeita o mainframe. 🖥️
🕰️ Um pouco de história (porque mainframe sem história não é mainframe)
Nos anos 60 e 70:
-
Arquivos eram sequenciais
-
Relatórios demoravam horas
-
Qualquer mudança era dor e sofrimento
Então a IBM apresentou o Modelo Relacional:
-
Dados em tabelas
-
Relações matemáticas
-
Independência entre dados e programas
E para manipular essas tabelas, surgiu a Relational Algebra — uma linguagem conceitual, não escrita diretamente no sistema, mas usada pelo otimizador do DB2 por baixo dos panos.
💡 Easter Egg:
Quando você escreve SQL no DB2, o que o banco realmente executa internamente é Relational Algebra otimizada.
⚙️ Os 5 operadores essenciais (o sabre de luz do DBA)
Vamos aos clássicos:
1️⃣ Projection (π) — “Me mostra só o que eu preciso”
📌 O que faz
Seleciona colunas específicas de uma tabela.
📘 Conceito:
🧠 Tradução DB2:
🖥️ Exemplo Mainframe:
💡 Dica Bellacosa:
Projection reduz I/O.
Menos coluna = menos leitura = batch mais rápido = operador feliz.
2️⃣ Selection (σ) — “Filtra isso aí”
📌 O que faz
Seleciona linhas com base em uma condição.
📘 Conceito:
🧠 Tradução DB2:
💡 Easter Egg:
WHEREé Selection.
Sempre foi. Sempre será.
3️⃣ Union (∪) — “Junta tudo, mas sem duplicar”
📌 O que faz
Concatena duas relações compatíveis (mesmas colunas).
📘 Conceito:
🧠 Tradução DB2:
⚠️ Alerta Mainframe:
-
UNIONremove duplicados -
UNION ALLé mais rápido (menos CPU)
💡 Dica de ouro:
Em batch pesado, pense duas vezes antes de usar UNION sem ALL.
4️⃣ Product (×) — “Multiplicação que dá dor de cabeça”
📌 O que faz
Combina todas as linhas de uma tabela com todas as linhas da outra.
📘 Conceito:
🧠 Tradução SQL (implícita):
😱 Resultado:
-
100 funcionários × 10 departamentos = 1000 linhas
💡 Bellacosa comenta:
Cartesian Product é tipo JCL sem
COND.
Pode até rodar… mas você vai se arrepender.
5️⃣ Natural Join (⨝) — “O casamento perfeito”
📌 O que faz
Relaciona tabelas usando colunas comuns automaticamente.
📘 Conceito:
🧠 Tradução DB2:
💡 Easter Egg Mainframe:
Todo JOIN começa como um Product + Selection.
O DB2 só faz isso de forma inteligente pra você.
🧪 Exemplo prático estilo chão de fábrica
🎯 Objetivo:
Listar nome do funcionário e nome do departamento para quem ganha mais de 60k.
🧠 Relational Algebra:
-
Selection (salário)
-
Join (EMP + DEPT)
-
Projection (nome + depto)
🖥️ DB2 SQL:
💡 O DB2 otimiza isso usando Relational Algebra internamente.
🧙 Primeiros passos para Padawans do Mainframe
Se você está começando:
✅ Entenda Selection vs Projection
✅ Saiba quando usar JOIN vs UNION
✅ Evite Cartesian Product sem intenção
✅ Pense sempre em I/O e CPU
✅ Lembre-se: SQL é declarativo, mas o DB2 pensa em álgebra
📚 Estude:
-
DB2 Explain Plan
-
Access Path
-
Index usage
🏁 Conclusão Bellacosa Style
Relational Algebra não é coisa velha.
É fundação.
Enquanto linguagens vêm e vão,
o DB2 continua rodando batch crítico,
pagando salários,
processando bancos,
e sustentando o mundo corporativo.
E por baixo de tudo isso?
👉 Projection, Selection, Union, Product e Natural Join.
Que a Força (e o z/OS) esteja com você. 🖥️✨