☕ 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

sexta-feira, 16 de agosto de 2024

House M.D., COBOL e o Caso do Banco de Dados que se Recusava a Esquecer: Datomic versus Db2 na Sala de Diagnóstico

 

Bellacosa Mainframe e a comparacao entre datomic e db2

☕ Um Café no Bellacosa Mainframe

House M.D., COBOL e o Caso do Banco de Dados que se Recusava a Esquecer: Datomic versus Db2 na Sala de Diagnóstico

🩺 SQL contra Datalog, UPDATE contra imutabilidade, buffer pools contra caches, logs contra história nativa, scale-up contra scale-out, décadas de cicatrizes contra arquitetura funcional — e a pergunta que ninguém deveria responder com religião tecnológica: “qual deles eu usaria para guardar o dinheiro?”

House entra na sala.

Olha para o quadro.

De um lado:

IBM Db2

Do outro:

Datomic

Foreman pergunta:

— Qual é o diagnóstico?

House apoia a bengala na mesa.

— Um deles tem quase meio século de experiência em ambientes corporativos. O outro nasceu em 2012 de um cara que achava que mudar estado demais era uma péssima ideia.

Cameron:

— Então Db2 ganha?

House:

— Você não entendeu nada.

Chase:

— Datomic ganha?

House:

— Você também não.

Ele olha para todos.

Banco de dados não é concurso de popularidade. É diagnóstico diferencial.

E aí começa nossa consulta.

Porque comparar Datomic com Db2 apenas perguntando “qual é melhor?” é como perguntar se um bisturi é melhor que uma ressonância magnética.

Depende do problema.

Depende do paciente.

Depende do risco.

E, principalmente:

depende do que você está tentando preservar, consultar, transacionar e recuperar quando tudo der errado às 03h17 da manhã.

Pegue o café.

Hoje vamos abrir o paciente.


1. Primeiro sintoma: ambos guardam dados, mas pensam diferente

Db2 nasceu dentro da tradição relacional.

Você pensa em:

TABLE
ROW
COLUMN
PRIMARY KEY
FOREIGN KEY
INDEX
SQL

Exemplo:

CREATE TABLE CONTA (
    ID        CHAR(10) NOT NULL,
    TITULAR   VARCHAR(100),
    SALDO     DECIMAL(15,2),
    PRIMARY KEY (ID)
);

Depois:

SELECT SALDO
FROM CONTA
WHERE ID = '000123';

Simples.

Familiar.

Décadas de ferramentas, otimizadores, DBAs, utilities, backups, logs, reorgs, statistics, access paths e trauma acumulado.

Datomic pensa diferente.

Ele enxerga fatos.

Conceitualmente:

ENTITY
ATTRIBUTE
VALUE
TRANSACTION

Algo como:

[1001 :conta/id "000123"]
[1001 :conta/titular "Arthur Dent"]
[1001 :conta/saldo 1000]

Então já aparece a primeira diferença fundamental:

Db2

“Tenho registros relacionais.”

Datomic

“Tenho fatos sobre entidades ao longo do tempo.”

House olha para o quadro.

— Não são duas implementações do mesmo modelo.

— Então são doenças diferentes?

— Não. São anatomias diferentes.


2. O grande choque: UPDATE

Aqui começa a parte que faz o COBOLzeiro apertar a caneca.

Em Db2:

UPDATE CONTA
   SET SALDO = 800
 WHERE ID = '000123';

Estado anterior:

SALDO = 1000

Estado atual:

SALDO = 800

Claro: Db2 possui transaction log, temporal tables, auditing, CDC e recursos para reconstruir histórico.

Mas o modelo lógico mais comum continua sendo:

ANTES
  ↓
UPDATE
  ↓
DEPOIS

Datomic trata a evolução do dado de forma diferente.

O histórico faz parte do modelo.

Conceitualmente:

T1
conta/saldo = 1000

T2
retract saldo 1000
assert saldo 800

Você não simplesmente “apagou” a existência anterior.

Você criou uma nova realidade temporal.

House aponta:

— Um sofre amnésia por padrão lógico.

Wilson responde:

— Db2 não perde o passado, House.

— Eu disse lógico, não físico. Preste atenção.

Essa distinção é importante.


3. Db2 tem logs. Datomic tem memória histórica como filosofia

Db2 registra transações para recovery.

Isso é central.

BEGIN
  UPDATE
  UPDATE
COMMIT

Db2 precisa saber como:

ROLLBACK
REDO
UNDO
RECOVER

O log é infraestrutura de sobrevivência.

Datomic trata a história como parte natural do database value.

Você pode consultar algo como:

as-of
since
history

Ou seja:

QUAL ERA O BANCO
EM T1?

não é uma pergunta excepcional.

É parte natural da arquitetura.

Aqui está uma diferença conceitual enorme.

Db2:

histórico pode ser construído, configurado, auditado e recuperado.

Datomic:

histórico está no DNA.

Nenhum dos dois é “mais sério” automaticamente.

Mas o segundo torna alguns problemas temporais muito mais naturais.


4. Diagnóstico diferencial: SQL versus Datalog

Db2 fala SQL.

E SQL é provavelmente uma das linguagens técnicas mais difundidas da história.

SELECT C.NOME,
       SUM(M.VALOR)
FROM CLIENTE C
JOIN MOVIMENTO M
  ON M.CLIENTE_ID = C.ID
WHERE C.STATUS = 'ATIVO'
GROUP BY C.NOME;

Milhões de pessoas entendem isso.

Datomic usa Datalog.

Exemplo conceitual:

[:find ?nome (sum ?valor)
 :where
 [?c :cliente/nome ?nome]
 [?c :cliente/status :ativo]
 [?m :movimento/cliente ?c]
 [?m :movimento/valor ?valor]]

O modelo é declarativo também.

Mas pensa mais em relações lógicas.

House olha.

— Isso é SQL depois de passar três semanas num retiro filosófico?

Cameron:

— É Datalog.

— Exatamente o que eu disse.

😂


5. Db2 tem tabelas. Datomic tem entidades e atributos

No mundo relacional:

CLIENTE
  |
  +-- ID
  +-- NOME
  +-- CPF
  +-- STATUS

No Datomic:

ENTITY 1001
  |
  +-- :cliente/id
  +-- :cliente/nome
  +-- :cliente/cpf
  +-- :cliente/status

Isso pode parecer semanticamente parecido.

Mas não é idêntico.

No Db2, schema é fortemente estruturado em tabelas.

No Datomic, atributos são entidades do próprio schema.

A flexibilidade muda.

E também muda a maneira de evoluir schema.

Em Datomic existe uma tendência forte a schema aditivo:

adiciona atributo
adiciona relação
preserva passado

No Db2 você pode fazer:

ALTER TABLE

com todos os cuidados que conhece.

O ponto é:

ambos possuem schema, mas a filosofia de evolução é diferente.


6. Índices: Db2 pergunta “qual index?”. Datomic responde “qual ordenação?”

No Db2:

TABLE
  |
  +-- INDEX A
  +-- INDEX B
  +-- INDEX C

Você escolhe índices conforme acesso.

O DBA pensa em:

CLUSTERING
CARDINALITY
SELECTIVITY
INDEX ONLY
MATCHING COLUMNS
ACCESS PATH

Datomic organiza datoms em índices como:

EAVT
AEVT
AVET
VAET

Onde:

E = Entity
A = Attribute
V = Value
T = Transaction

Para um COBOLzeiro com VSAM no DNA, isso é surpreendentemente compreensível.

Você pergunta:

— Como chego ao dado?

Resposta:

— Escolha a ordenação adequada.

Não é VSAM.

Mas seu cérebro reconhece o cheiro de índice.


7. Buffer pool versus cache: dois mundos, mesma física

Agora entramos numa comparação deliciosa.

No Db2, buffer pools são críticos.

DISK
  ↓
BUFFERPOOL
  ↓
SQL

Quanto mais páginas úteis permanecem em memória:

menos I/O
mais performance

Você pensa em:

GETPAGE
HIT RATIO
PAGESET
BUFFER POOL SIZE
PREFETCH

No Datomic:

STORAGE
  ↓
CACHE
  ↓
PEER / COMPUTE
  ↓
QUERY

A diferença é que segmentos imutáveis são particularmente amigáveis a cache.

Se um pedaço histórico não muda, ele não sofre o mesmo problema clássico de invalidação.

House:

— Então descobriram que dados que não mudam são fáceis de cachear?

Foreman:

— Simplificando, sim.

— Nobel amanhã.

😂

Mas tecnicamente é uma vantagem real.


8. Working set: aqui os dois se encontram

Essa é uma das partes mais importantes.

Imagine:

DATABASE = 20 TB
WORKING SET = 10 GB

e você possui cache/memória suficiente.

Pode funcionar muito bem.

Agora:

DATABASE = 2 TB
WORKING SET = 1,5 TB

e sua memória útil é 64 GB.

Problema.

Isso vale tanto para arquiteturas relacionais quanto para Datomic.

O tamanho total do banco não é a única pergunta.

A pergunta é:

quanto do dado útil precisa estar quente ao mesmo tempo?

O velho DBA e o engenheiro Clojure podem brigar sobre filosofia.

A física ignora os dois.


9. CPU: Db2 e Datomic gastam por razões diferentes

Db2 usa CPU em:

SQL execution
sort
join
predicate evaluation
index access
locking
logging
utilities
compression

Datomic usa CPU em:

queries
Datalog
transaction processing
indexing
caching
application-side computation
GC

E aqui aparece uma diferença importante:

Datomic vive no ecossistema JVM.

Então:

GARBAGE COLLECTION

entra no prontuário.

O COBOLzeiro:

— Finalmente achei o tumor.

House:

— Não. Só um sintoma.


10. Transações: ambos levam ACID a sério

Db2:

BEGIN
UPDATE
INSERT
COMMIT

ou:

ROLLBACK

Transação é parte central da arquitetura.

Datomic também oferece transações ACID.

Mas sua coordenação de escrita é arquiteturalmente distinta.

No Datomic Pro clássico:

WRITES
  ↓
TRANSACTOR
  ↓
STORAGE

Leituras podem ser distribuídas através de peers.

Isso cria um trade-off interessante:

READ SCALE
↑

muito bem horizontalizado.

Mas writes possuem uma coordenação ordenada.

O veterano imediatamente pergunta:

qual é o throughput máximo de escrita por database?

Essa é uma pergunta correta.


11. Db2 escala diferente

Db2 historicamente escala de várias maneiras.

No mainframe:

Db2
  |
DATA SHARING
  |
Parallel Sysplex

Você pode ter múltiplos members compartilhando dados com locking e buffer management distribuído.

Além disso:

partitioning
parallelism
zIIP
buffer pools
workload management

A filosofia é muito mais:

um sistema transacional extremamente poderoso e coordenado.

Datomic tende mais a:

muitos databases/domínios, reads distribuídos, facts imutáveis e sharding arquitetural.

Nenhuma solução é “mais moderna” por definição.

São estratégias diferentes.


12. Escala: uma base monstruosa ou vários domínios?

No mundo tradicional, é natural encontrar:

PRODUCTION DB2
████████████████████████████████
muitos sistemas
muitas tabelas
muitos anos
████████████████████████████████

Datomic, especialmente em arquiteturas de microservices, incentiva uma decomposição maior:

SERVICE A → DATABASE A
SERVICE B → DATABASE B
SERVICE C → DATABASE C
SERVICE D → DATABASE D

Isso ajuda a explicar números como dezenas de milhares de databases em uma empresa como Nubank.

Mas traz outra complexidade:

distributed consistency
cross-service workflows
events
reconciliation
ownership
observability

House escreve no quadro:

MONOLITO:
complexidade interna

MICROSERVIÇOS:
complexidade distribuída

— Escolha onde quer sofrer.


13. Recovery: aqui o velho médico fica sério

Db2 possui uma história monumental de recuperação.

Você tem:

logs
image copies
RECOVER
REORG
RUNSTATS
utilities
PIT recovery
system-level backup
data sharing recovery

Décadas de prática.

Datomic também possui mecanismos de durabilidade, HA, backups e reconstrução, mas o ecossistema operacional é diferente e muito menor.

Se você perguntar:

“Quem conhece todos os detalhes de recuperação do Db2 em produção?”

há um mercado gigantesco de experiência.

Para Datomic:

o universo é muito menor.

Isso é risco.

Não necessariamente falha da tecnologia.

Mas risco de skills e tooling.


14. Operação: o que acontece às 03:17?

Essa talvez seja a diferença mais subestimada.

Db2 tem:

DBA
sysprog
vendor support
utilities
APARs
PTFs
Redbooks
manuals
decades of incidents

Datomic tem:

smaller community
Clojure expertise
specialized knowledge
fewer battle-tested operators

Hoje possui produção gigantesca em Nubank.

Mas não possui a mesma ubiquidade operacional.

House:

— O remédio novo pode ser excelente.

Wilson:

— Mas?

— Se ninguém no hospital sabe dosar, administrar ou tratar efeitos colaterais, isso também entra no diagnóstico.

Exatamente.


15. Skill gap versus obscuridade

Db2:

difícil achar bons especialistas?
sim

mas existem muitos.

Datomic:

especialistas?
existem

mercado?
pequeno

Agora coloque Clojure junto.

Seu pool de recrutamento diminui ainda mais.

Isso pode ser aceitável para uma empresa que constrói cultura própria, treina pessoas e domina a stack.

Pode ser um desastre para uma empresa que terceiriza tudo e troca consultoria a cada dois anos.

Essa é uma consideração organizacional, não apenas técnica.


16. Vendor lock-in: os dois têm, mas de formas diferentes

Db2:

IBM ecosystem
z/OS integration
utilities
features
licensing
skills

Se você explora profundamente recursos específicos, migrar pode ser caro.

Datomic:

Datomic model
Datalog
Clojure ecosystem
API model
temporal semantics

Também cria dependência.

A diferença é que no caso Datomic o ecossistema é menor.

Mas há uma peculiaridade histórica:

Nubank acabou adquirindo Cognitect.

Então:

usuário
  ↓
produto
  ↓
fabricante

vira

usuário + mantenedor

Isso reduz um risco para Nubank.

Não necessariamente para todos.


17. Histórico e auditoria: Datomic brilha

Se seu domínio vive perguntando:

qual era o estado?
quando mudou?
quem introduziu?
qual sequência produziu isso?

Datomic possui uma elegância impressionante.

Isso pode ser ouro em:

fraude
compliance
investigação
reprodução de estado
auditoria
reprocessamento

Db2 faz isso muito bem com ferramentas e recursos adequados.

Mas frequentemente você precisa arquitetar mais explicitamente:

temporal tables
audit columns
CDC
history tables
logs
triggers

Datomic coloca o tempo no centro.

Essa é provavelmente uma das maiores razões para escolhê-lo.


18. Mas histórico custa storage

Datomic preserva fatos.

Além disso, datoms aparecem em múltiplas ordenações de índice.

Então:

mais história
+
mais índices
=
mais storage

Pode haver compressão e atributos noHistory, mas a filosofia continua.

Db2 pode ser mais econômico se o requisito for apenas estado atual e histórico limitado.

Então:

Datomic

“O passado é precioso.”

Db2

“Diga quanto passado você quer e eu configuro.”

House:

— Um é historiador.

— E o outro?

— Contador.


19. Throughput de escrita: aqui Datomic exige respeito

Se seu sistema é:

READS >>> WRITES

Datomic pode se encaixar muito bem.

Se seu problema é:

WRITE FIREHOSE

você precisa medir cuidadosamente.

Porque a serialização transacional por database e background indexing criam limites naturais.

Se a taxa de entrada ultrapassa a capacidade de indexação:

MEMORY INDEX cresce
   ↓
back pressure
   ↓
write throughput reduz

Db2 também possui limites, obviamente.

Locks.

Log throughput.

I/O.

Latches.

Buffer contention.

Mas sua arquitetura e histórico de workloads OLTP de escrita extrema são muito conhecidos.

Para uma central bancária gigantesca, isso pesa.


20. Query analítica: nenhum dos dois substitui tudo

Datomic não deveria virar:

data lake
warehouse
log bucket
BI universal

Da mesma forma, Db2 OLTP não deveria necessariamente ser martelado com qualquer analytics gigantesco sem arquitetura adequada.

No mundo moderno:

SYSTEM OF RECORD
   ↓
CDC/EVENTS
   ↓
ANALYTICS PLATFORM

é frequentemente melhor.

House:

— Então não coloque tudo no mesmo banco?

— Exato.

— Finalmente uma ideia saudável.


21. Mainframe versus cloud: não confunda database com plataforma

Db2 pode existir em várias plataformas, mas para nosso universo Bellacosa, pense em Db2 for z/OS.

Aí você ganha:

IBM Z
z/OS
WLM
Sysplex
RACF
zIIP
SMF
RMF
CICS
IMS
MQ

O database vive dentro de uma infraestrutura extremamente integrada.

Datomic normalmente vive numa arquitetura distribuída/cloud-native:

AWS
compute
storage
DynamoDB/S3 em Datomic Cloud
Clojure
services
Kafka
Kubernetes

Então parte da comparação não é:

Datomic vs Db2

É:

ARQUITETURA DISTRIBUÍDA
vs
PLATAFORMA INTEGRADA

Isso muda custo, skills, observabilidade, DR e operação.


22. Segurança: Db2 herda um castelo

Db2 for z/OS vive num ambiente com:

RACF
SAF
audit
SMF
encryption
TLS
dataset protection
roles
privileges

É um ecossistema de segurança brutalmente maduro.

Datomic depende de sua arquitetura e da cloud:

IAM
network policies
KMS
secrets
AWS controls
application authorization

Ambos podem ser seguros.

Mas segurança no mainframe tende a ser altamente centralizada e conhecida.

No cloud-native, a superfície é mais distribuída.

Mais flexível.

E também mais fácil de configurar errado.


23. Observabilidade: SMF versus mundo distribuído

Db2:

SMF
RMF
IFCID
statistics
accounting traces
performance monitors

Você consegue investigar profundamente.

Datomic + microservices:

metrics
logs
traces
OpenTelemetry
application telemetry
AWS metrics
JVM metrics
GC metrics

O problema moderno é que uma transação pode atravessar dez serviços.

Então observability distribuída vira essencial.

O velho DBA olha para isso e diz:

— Vocês desmontaram o sistema e agora precisam descobrir onde cada pedaço está.

😂

É maldade.

Mas contém um pouco de verdade.


24. Latência: proximidade importa

Db2 for z/OS próximo de CICS:

CICS
 ↓
COBOL
 ↓
Db2

latência muito baixa e altamente previsível dentro da plataforma.

Datomic pode ganhar em leituras locais através de caches/peers.

Mas numa arquitetura cloud existem mais possibilidades de:

network hop
service hop
timeout
retry

Em compensação, você pode escalar serviços independentemente.

Trade-off.

Sempre trade-off.


25. Consistência distribuída: Datomic simplifica algumas coisas e complica outras

Dentro de um database Datomic, consistência é forte e transações são ordenadas.

Mas se você possui:

DB A
DB B
DB C

e um workflow precisa alterar todos:

agora você tem uma questão distribuída.

Pode usar:

events
sagas
reconciliation
idempotency

O velho mainframe pensa:

“Então vocês tiraram a complexidade do banco e colocaram na aplicação?”

Às vezes, sim.

Não por incompetência.

Por escolha arquitetural.


26. Db2 também não é mágico

Agora vamos bater no outro paciente.

Db2 pode virar:

monstro

com:

milhares de tabelas
milhares de índices
stored procedures
triggers
views
packages
utilities
bindings
access paths
partitions

E se ninguém cuida:

RUNSTATS velho
REBIND errado
buffer mal dimensionado
index demais
SQL ruim
locking
tablespace gigante

a criatura degrada.

House:

— Tecnologia madura não cura arquitetura ruim.

Exatamente.


27. Por que eu escolheria Db2?

Se eu tivesse:

core financeiro crítico
alto volume OLTP
equipe mainframe madura
CICS
COBOL
IMS/MQ
necessidade de SQL
forte integração z/OS
ferramentas robustas
auditoria consolidada

Db2 seria uma escolha extremamente natural.

Principalmente quando:

risk tolerance = LOW

e:

operational predictability = VERY HIGH

Você compra não apenas database.

Compra décadas de ecossistema.


28. Por que eu escolheria Datomic?

Se eu tivesse:

greenfield
Clojure
domínio temporal forte
histórico essencial
muitos reads
arquitetura distribuída
microservices
preciso reconstruir estados

Datomic poderia ser extremamente atraente.

Especialmente se minha organização estivesse disposta a dominar:

Clojure
Datalog
capacity model
sharding
observability
cloud operations

Ele pode reduzir complexidade em problemas históricos/temporais que seriam mais trabalhosos em bancos tradicionais.


29. O maior erro: escolher Datomic porque Nubank usa

House escreve:

NUBANK USES IT
≠
YOU SHOULD USE IT

Isso vale para qualquer tecnologia.

Netflix usa algo?

Legal.

Google usa algo?

Interessante.

Banco X usa algo?

Ótimo.

Pergunta:

seu problema é igual?

Provavelmente não.

Arquitetura de referência não é receita de bolo.


30. O segundo maior erro: escolher Db2 só porque “sempre usamos”

Agora House vira para o outro lado.

WE ALWAYS USED DB2
≠
DB2 IS BEST HERE

Se o sistema é novo, isolado, temporal, distribuído e possui requisitos diferentes, talvez Db2 seja exagero ou inadequado economicamente.

Legado pode ser estabilidade.

Mas também pode virar automatismo.

O bom arquiteto pergunta:

por que estamos escolhendo isso?

Não:

“qual tecnologia eu já conheço?”


31. Comparativo direto

TemaDb2Datomic
ModeloRelacionalFatos imutáveis
QuerySQLDatalog
AtualizaçãoUPDATEassert/retract
HistóricoRecursos específicos/logs/temporalNativo ao modelo
TransaçõesACIDACID
EscritasOLTP altamente maduroSerializadas por database
LeiturasMuito escalável, inclusive Data SharingPeers/compute horizontais
CacheBuffer poolsSegments/caches imutáveis
ÍndicesDefinidos pelo schema/workloadEAVT/AEVT/AVET/VAET
EcossistemaGigantescoPequeno
SkillsAmplamente disponíveisNicho
ToolingExtremamente maduroEspecializado
HA/DRDécadas de soluçõesDisponível, arquitetura diferente
Cloud fithíbrido/múltiplas opçõesforte
Mainframe fitnativo em z/OSnão
Temporalidadepoderosa, mas configuradacentral
Vendor riskIBMecossistema Datomic/Nubank
Greenfielddependeforte candidato
Core bancário legadoexcelente fitmigração não trivial

32. Easter egg: House faz o teste do saldo

House escreve:

SALDO INICIAL = 1000

Depois:

COMPRA = 200

Pergunta:

— Db2?

UPDATE CONTA
SET SALDO = 800;

— Datomic?

assert novo saldo 800
retract saldo 1000

House:

— Qual está certo?

Foreman:

— Ambos.

— Finalmente.

Depois:

— Qual consegue dizer que o saldo foi 1000 antes?

Cameron:

— Ambos podem, se o Db2 estiver adequadamente configurado.

House sorri.

— Agora você está aprendendo.


33. O verdadeiro teste não é performance

É falha.

Pergunte:

O que acontece se:
  • storage ficar lento?

  • rede quebrar?

  • processo morrer?

  • região cloud falhar?

  • transaction log encher?

  • buffer pool degringolar?

  • indexing atrasar?

  • GC congelar?

  • deploy inserir bug?

  • schema mudar errado?

  • restore falhar?

  • DR não estiver testado?

Tecnologia não se prova em benchmark.

Prova-se:

quando o mundo fica feio.


34. O diagnóstico final de House

House olha para o quadro.

De um lado:

Db2

Do outro:

Datomic

Ele apaga a palavra:

VERSUS

e escreve:

FOR WHAT?

Porque esse é o diagnóstico.

Db2 não é “velho demais”.

Datomic não é “novo demais”.

Db2 traz:

maturidade
ecossistema
ferramentas
performance OLTP
integração z/OS
skills
previsibilidade

Datomic traz:

imutabilidade
tempo
fatos
histórico
read scaling
arquitetura funcional
modelagem diferente

São propostas distintas.


☕ Epílogo — O paciente sobrevive

São 03h42.

Produção liga.

Foreman atende.

— Temos problema.

House:

— Db2?

— Não.

— Datomic?

— Também não.

— Então?

— A aplicação cobrou o cliente duas vezes.

House olha para o time.

— Infrastructure?

— Tudo verde.

— Database?

— Consistente.

— Logs?

— Perfeitos.

— Então quem errou?

Silêncio.

House aponta para o quadro:

APPLICATION LOGIC

Everybody lies.

Incluindo código.

O COBOLzeiro no canto toma café.

Porque essa é a verdade que atravessa VSAM, IMS, Adabas, Db2, Datomic, Oracle, PostgreSQL e qualquer banco que ainda inventaremos:

um database pode armazenar perfeitamente a coisa errada.

No final, a pergunta nunca foi:

“Qual database é melhor?”

É:

“Qual arquitetura torna mais difícil errar, mais fácil detectar quando erramos e mais seguro recuperar quando inevitavelmente errarmos?”

Para um core bancário tradicional fortemente integrado ao IBM Z, com décadas de lógica COBOL/CICS e requisitos de altíssimo throughput transacional, Db2 continua sendo uma escolha absurdamente forte.

Para um sistema greenfield, distribuído, fortemente temporal, Clojure-native, com histórico e reconstrução de estado no centro do problema, Datomic pode oferecer uma elegância que o modelo relacional não entrega da mesma maneira sem bastante engenharia adicional.

Mas se alguém entrar na reunião dizendo:

“Vamos usar Datomic porque Nubank usa.”

House deveria expulsá-lo.

E se outro disser:

“Vamos usar Db2 porque sempre usamos.”

House também.

Depois perguntaria:

QUAL É O PROBLEMA?

Só então escolheria o tratamento.

Porque banco de dados, assim como medicina, não é sobre preferência pessoal.

É sobre diagnóstico correto, efeitos colaterais conhecidos e o paciente continuar vivo depois do deploy.

Fim do café.

Sem comentários:

Enviar um comentário

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