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

🔐 CAPÍTULO 03: TRANSAÇÕES ACID E ECOSSISTEMA CLOUD

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


🎯 Objetivo Curricular

Dominar os pilares ACID e o controle transacional (TCL) que garantem a integridade dos dados em cenários de alta concorrência. Além disso, entender os modelos de nuvem (IaaS, PaaS, SaaS) na era moderna.


🏢 O Cenário Prático (Seu Desafio)

Você atua na TecProExpress. Imagine que o sistema debita R$ 1.500 do saldo de um cliente para pagar um frete internacional, mas antes do sistema creditar esse valor na conta da TecProExpress, o servidor de banco de dados sofre uma queda de energia.

"Seu desafio é arquitetar o banco de dados para garantir que, caso o fluxo inteiro não se complete, o dinheiro volte imediatamente para a conta do cliente (Rollback). Nenhum centavo pode desaparecer do sistema."


🧠 Fundamentos: 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 transação tem 10 passos e o passo 9 falha, os 8 anteriores são desfeitos automaticamente.
  2. ⚖️ Consistência (Regras): A transação leva o banco de um estado válido para outro estado válido (ex: o saldo nunca ficará negativo se houver um CHECK >= 0).
  3. 🔒 Isolamento (Invisibilidade): Se o operador A e o operador B estiverem alterando o estoque ao mesmo tempo, um não enxerga os dados parciais do outro.
  4. 💾 Durabilidade (Permanência): Após o comando COMMIT, o dado está salvo no disco permanentemente. Nem mesmo um apagão remove o dado.

📊 Fluxo da Transação (TCL)

flowchart TD
    START["▶️ BEGIN TRANSACTION"] --> OP1["📝 UPDATE: Debitar Saldo Cliente"]
    OP1 --> OP2["📝 UPDATE: Creditar Conta TecProExpress"]
    OP2 --> DEC{"❓ Sucesso Total?"}
    DEC -- SIM --> COM["✅ COMMIT: Salva no Disco"]
    DEC -- NÃO --> ROL["❌ ROLLBACK: Desfaz Tudo"]
    COM --> END["🏁 Fim da Transação"]
    ROL --> END

🔍 Detalhamento do Fluxo:

  • BEGIN TRANSACTION: Avisa ao banco que uma sequência de operações críticas começou.
  • COMMIT: A confirmação de que tudo deu certo.
  • ROLLBACK: O botão de "Pânico" ou "Ctrl+Z" que cancela todas as ações pendentes.

📖 Exemplo Guiado: Transações Seguras

Vamos simular o cenário da TecProExpress no banco de dados. Seguindo nossa regra de excelência: primeiro DDL, depois DML.

🛠️ Código do Exemplo

-- PASSO 1: DDL (Criar a conta corrente)
CREATE TABLE conta_corrente (
    id INT PRIMARY KEY,
    titular VARCHAR(100),
    saldo DECIMAL(10,2) CHECK (saldo >= 0)
);

-- PASSO 2: DML (Carga Inicial)
INSERT INTO conta_corrente VALUES (1, 'Cliente João', 2000.00);
INSERT INTO conta_corrente VALUES (2, 'TecProExpress', 0.00);

-- PASSO 3: O Fluxo Transacional (TCL + DML)
START TRANSACTION;
  -- Retira do Cliente
  UPDATE conta_corrente SET saldo = saldo - 1500.00 WHERE id = 1;
  -- Credita na Empresa
  UPDATE conta_corrente SET saldo = saldo + 1500.00 WHERE id = 2;
COMMIT;

🔍 Detalhamento do Código:

  • START TRANSACTION: Inicia a unidade lógica.
  • UPDATE: Altera os dados. O valor só será efetivado no banco de dados quando o COMMIT for lido e executado pelo sistema.

☁️ A Era da Nuvem (Cloud Databases)

Atualmente, não instalamos mais servidores físicos em salas geladas. Utilizamos a Cloud Computing para hospedar nossos SGBDs.

📊 Modelos de Nuvem

flowchart LR
    U1["👤 Usuário Final"]
    U2["🛠️ Dev / DBA"]
    U3["⚙️ SysAdmin / Infra"]
    
    subgraph Cloud ["Modelos de Serviços Cloud"]
    UC1(("SaaS: App Pronto"))
    UC2(("PaaS: DBaaS"))
    UC3(("IaaS: Infra Bruta"))
    end
    
    U1 --> UC1
    U2 --> UC2
    U3 --> UC3

🔍 Detalhamento dos Modelos:

  • IaaS (Infraestrutura como Serviço): Você aluga a máquina e tem que instalar o banco. Controle total, mas requer gestão manual.
  • PaaS (Plataforma como Serviço - Foco do DBA): O provedor (AWS, Azure) te entrega o banco pronto para conectar (DBaaS). Eles cuidam da atualização e do hardware.
  • SaaS (Software como Serviço): O usuário apenas usa o sistema (Ex: Netflix, Gmail).

🛠️ Prática Obrigatória: O Botão de Pânico

Cenário: Simular um erro transacional para a TecProExpress.

  1. Crie a tabela e os inserts da Prática Guiada acima.
  2. Inicie uma nova transação (START TRANSACTION).
  3. Tente transferir 3000.00 do Cliente João (que só tem 500 restantes). O banco dará um erro devido ao CHECK.
  4. Execute ROLLBACK;.

🏁 Resultado Esperado

Ao executar um SELECT * FROM conta_corrente, o saldo do Cliente João não deve ter sido negativado, comprovando que a transação bloqueou o estado inconsistente.


📤 Instruções de Entrega (Microsoft Teams)

Após validar seus códigos práticos e de estudo:

Use o operador e para critérios rigorosos e ou para critérios flexíveis. Salve os arquivos com a extensão .sql (Ex: Atividade_XX_SeuNome.sql ou Atividade_XX_SeuNome.png ou Atividade_XX_SeuNome.drawio


💡 Checkpoint de Lógica

[!IMPORTANT] Reflexão Profissional: Qual é a grande vantagem da nuvem em termos de transações financeiras? O DBaaS (Database as a Service) moderno oferece backups automáticos diários. Se um Rollback falhar por erro catastrófico, o provedor da nuvem pode restaurar o banco exatamente para 1 minuto antes do acidente. 🧠🛡️