Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🛡️ TRANSAÇÕES E AS PROPRIEDADES ACID

No coração de sistemas críticos (Bancos, Saúde), existe o conceito de Transação. Uma transação não é apenas um comando SQL, mas uma Unidade Lógica de Trabalho indestrutível. 🛡️🧩


Objetivo: Dominar os pilares ACID e o controle transacional (TCL) que garantem a integridade dos dados em cenários de alta concorrência.


📗 PASSO 1: O Escudo de Confiança (ACID)

Para garantir que o seu banco nunca entre em um estado corrupto, o SGBD aplica as propriedades ACID:

  1. ⚛️ Atomicidade (Tudo ou Nada): Se uma operação de 10 falhar, todas são desfeitas.
  2. ⚖️ Consistência (Regras): O banco garante que nenhuma regra de integridade seja quebrada (ex: CPF único).
  3. 🔒 Isolamento (Invisibilidade): Uma transação "não sabe" o que a outra está fazendo enquanto ocorre.
  4. 💾 Durabilidade (Permanência): Uma vez feito o COMMIT, o dado está salvo mesmo em falhas de energia.

📗 PASSO 2: Fluxo da Transação (TCL)

📊 Lógica de Controle Transacional

flowchart TD
    START[▶️ BEGIN TRANSACTION] --> OP1[📝 UPDATE Saldo Lançamento]
    OP1 --> OP2[📝 UPDATE Saldo Recebimento]
    OP2 --> DEC{❓ Sucesso em Tudo?}
    DEC -- SIM --> COM[✅ COMMIT: Salva em Disco]
    DEC -- NÃO --> ROL[❌ ROLLBACK: Desfaz Tudo]
    COM --> END[🏁 Fim]
    ROL --> END

📗 PASSO 3: Cenário do Mundo Real (Transferência Bancária)

Sem transações ACID, se a energia cair após tirar o dinheiro de João e antes de entregar para Maria, o dinheiro simplesmente desapareceria.

🛠️ Implementação em SQL (Universal)

START TRANSACTION; -- Ou BEGIN no PostgreSQL
  UPDATE contas SET SALDO = SALDO - 500 WHERE NOME = 'Joao';
  UPDATE contas SET SALDO = SALDO + 500 WHERE NOME = 'Maria';
COMMIT; -- Se houver erro em qualquer linha, execute ROLLBACK;

📗 PASSO 4: Os Atores do Ecossistema

📊 Papéis e Responsabilidades

flowchart TD
    DBA[👮 Administrador: DBA]
    ENG[🛠️ Engenheiro de Dados]
    USER[👤 Usuário Final]
    
    subgraph SGBD [SGBD: Motor Transacional]
        UC1((Configurar Isolamento))
        UC2((Escrever Scripts Robustos))
        UC3((Realizar Operações))
    end
    
    DBA --> UC1
    ENG --> UC2
    USER --> UC3

💡 Dica do Especialista: Níveis de isolamento altos garantem segurança total, mas podem reduzir a performance. Equilíbrio é a chave! 🚀🛡️