Propriedades ACID em transações de banco de dados
Gabarito: letra A. A propriedade de consistência garante que a execução de uma transação, de forma isolada, leva o banco de dados de um estado consistente para outro estado consistente, preservando todas as regras de integridade definidas (restrições, triggers, etc.). As demais alternativas distorcem completamente os conceitos de durabilidade, atomicidade e isolamento, atribuindo-lhes significados que não correspondem à teoria de transações.
O acrônimo ACID é um dos pilares fundamentais dos sistemas de gerenciamento de banco de dados relacionais (SGBDs). Ele define as quatro propriedades que garantem a confiabilidade das transações: Atomicidade, Consistência, Isolamento e Durabilidade. Cada uma dessas propriedades tem um papel específico e é essencial para assegurar que as operações sobre os dados sejam seguras, mesmo em cenários de falhas ou de acesso concorrente.
A atomicidade trata a transação como uma unidade indivisível: ou todas as operações são executadas com sucesso (commit), ou nenhuma delas é refletida no banco de dados (rollback). Isso impede que resultados parciais de uma transação fiquem gravados, o que poderia corromper a lógica de negócio. Um exemplo clássico é a transferência bancária: debitar uma conta e creditar outra são operações que devem ocorrer juntas; se uma falha acontecer no meio, o sistema deve desfazer tudo, retornando ao estado anterior.
A consistência é a propriedade que garante que uma transação, quando executada isoladamente, leva o banco de dados de um estado consistente para outro estado consistente. Um estado consistente é aquele que satisfaz todas as regras e restrições definidas no esquema, como unicidade de chaves, integridade referencial, restrições de domínio, entre outras. A responsabilidade por manter a consistência é tanto do programador (que deve escrever transações corretas) quanto do SGBD (que impõe as restrições de integridade). É importante notar que a consistência não garante a correção lógica da transação do ponto de vista do aplicativo, mas sim que nenhuma regra definida no banco será violada.
O isolamento garante que transações concorrentes sejam executadas como se fossem isoladas umas das outras, ou seja, os efeitos de uma transação não são visíveis para outras até que ela seja confirmada. Isso evita problemas como leituras sujas, leituras não repetíveis e registros fantasmas. O controle de concorrência, geralmente implementado por meio de locks ou de técnicas de versionamento, é o mecanismo que assegura essa propriedade.
A durabilidade assegura que, uma vez confirmada (commit), as alterações feitas pela transação são permanentes e não se perdem, mesmo em caso de falha do sistema, queda de energia ou reinicialização. Para garantir essa propriedade, o SGBD utiliza mecanismos como logs de transação (write-ahead logging) e backups. A durabilidade não tem relação com duplicação de armazenamento, criptografia ou impossibilidade de exclusão de registros.
A banca explora a confusão entre os conceitos, criando alternativas que atribuem a cada propriedade um significado absurdo e sem fundamento técnico. A chave para acertar é conhecer a definição precisa de cada uma das quatro propriedades e saber identificar qual delas está sendo descrita em cada alternativa. Guarde a fronteira entre elas: atomicidade é "tudo ou nada", consistência é "estado válido", isolamento é "concorrência controlada" e durabilidade é "persistência após o commit". É exatamente nessa fronteira que as alternativas se dividem.
Propriedade | Significado correto | O que a alternativa errada diz |
|---|
Atomicidade | Tudo ou nada (commit/rollback) | Nº máximo de bytes por registro |
Consistência | Estado válido → estado válido | — |
Isolamento | Concorrência controlada | Só 1 base por servidor |
Durabilidade | Persistência após o commit | Duplicar armazenamento / não excluir registro |
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa descreve corretamente a propriedade da consistência. A execução isolada de uma transação deve preservar a consistência da base de dados, ou seja, levar o banco de um estado consistente para outro estado consistente, respeitando todas as regras de integridade. Isso está alinhado com a definição clássica da propriedade, que é um dos pilares do ACID.
Alternativa B — ❌ Incorreta
A alternativa atribui à durabilidade o significado de que cada tabela deve ter seu armazenamento duplicado no mesmo servidor. Isso é um absurdo técnico. A durabilidade garante que as alterações de uma transação confirmada persistem no banco de dados, mesmo após falhas. A duplicação de armazenamento é um conceito de replicação ou redundância, que não faz parte da definição de durabilidade.
Alternativa C — ❌ Incorreta
A alternativa atribui à atomicidade o significado de que cada registro deve ter um número máximo de bytes especificado na criação da base de dados. Isso não tem relação alguma com a atomicidade. A atomicidade trata a transação como uma unidade indivisível: ou todas as operações são executadas, ou nenhuma é refletida. A definição de tamanho máximo de bytes é um detalhe de implementação física, não uma propriedade de transação.
Alternativa D — ❌ Incorreta
A alternativa atribui à durabilidade o significado de que o registro não pode ser excluído da base de dados. Isso é falso. A durabilidade garante que as alterações de uma transação confirmada persistem, mas não impede que registros sejam excluídos por transações subsequentes. A exclusão de um registro é uma operação normal do banco de dados, desde que respeite as regras de integridade.
Alternativa E — ❌ Incorreta
A alternativa atribui ao isolamento o significado de que só pode haver uma única base de dados em cada servidor. Isso é completamente equivocado. O isolamento garante que transações concorrentes sejam executadas como se fossem isoladas umas das outras, evitando interferências. A quantidade de bases de dados em um servidor é uma questão de configuração e não tem relação com a propriedade de isolamento.
Gabarito: letra A