Sobes.tech
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:

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

  2. 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.
  3. Restrições de integridade: chaves primárias, chaves estrangeiras, restrições únicas, verificações (CHECK), que impedem dados incorretos.

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