Какие гарантии обеспечивает БД

«Какие гарантии обеспечивает БД» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ACID-гарантии:

  1. Атомарность – транзакция выполняется полностью или не выполняется вовсе.
  2. Согласованность – данные всегда в валидном состоянии (соблюдаются constraints, триггеры).
  3. Изолированность – параллельные транзакции не влияют друг на друга (уровни изоляции: Read Uncommitted, Read Committed, Repeatable Read, Serializable).
  4. Долговечность – после commit изменения сохраняются даже при сбое.

Пример в Go с sql.Tx:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}
defer tx.Rollback() // Откат при ошибке

_, err = tx.Exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1")
if err != nil {
    return err
}

_, err = tx.Exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2")
if err != nil {
    return err
}

err = tx.Commit() // Фиксация изменений