Junior — Middle
Que métodos são utilizados para manter a consistência dos dados em bancos de dados relacionais?
sobes.tech IA
Resposta da IA
Para manter a coerência dos dados em bases de dados relacionais, aplicam-se os seguintes métodos:
-
Transações — permitem executar um conjunto de operações como uma única unidade. Se alguma operação falhar, todas as alterações são revertidas, garantindo a integridade dos dados.
-
Princípios ACID:
- Atomicidade — as operações dentro de uma transação são concluídas na sua totalidade ou não são realizadas.
- Consistência — a base de dados passa de um estado correto para outro correto.
- Isolamento — transações paralelas não afetam umas às outras.
- Durabilidade — uma vez que uma transação é confirmada, as alterações permanecem mesmo em caso de falhas.
-
Restrições de integridade: chaves primárias, chaves estrangeiras, restrições únicas, verificações (CHECK), que impedem dados incorretos.
-
Bloqueios e níveis de isolamento — gerenciam o acesso concorrente, prevenindo conflitos e garantindo a coerência.
Exemplo em Go usando transações:
trx, err := db.Begin()
if err != nil {
// tratamento do erro
}
_, err = trx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = ?", fromID)
if err != nil {
trx.Rollback()
// tratamento do erro
}
_, err = trx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = ?", toID)
if err != nil {
trx.Rollback()
// tratamento do erro
}
err = trx.Commit()
if err != nil {
// tratamento do erro
}
Neste exemplo, a transferência de dinheiro entre contas ocorre dentro de uma única transação, garantindo a coerência dos dados.