ACID

Atomicity, Consistency, Isolation, Durability

ACID — это набор свойств, которые гарантируют надежность и корректность транзакций в реляционных базах данных.

Основные свойства

  1. Атомарность (Atomicity):

    • Транзакция рассматривается как единое целое: либо она выполняется полностью, либо не выполняется вообще.
    • Если возникает ошибка, все изменения откатываются.
  2. Согласованность (Consistency):

    • Транзакции переводят базу данных из одного согласованного состояния в другое.
    • Все правила и ограничения (например, внешние ключи) должны соблюдаться после выполнения транзакции.
  3. Изолированность (Isolation):

    • Каждая транзакция выполняется независимо от других.
    • Результаты одной транзакции недоступны другим до ее завершения, что предотвращает конфликты.
  4. Надежность (Durability):

    • После завершения транзакции изменения сохраняются в базе данных, даже в случае сбоя системы.
    • Данные записываются на постоянное хранилище.

Пример

Рассмотрим банковскую транзакцию, переводящую деньги с одного счета на другой:

  • Атомарность: Если операция перевода завершилась неудачей, деньги не должны быть вычтены с одного счета или зачислены на другой.
  • Согласованность: Сумма на счете отправителя должна уменьшиться, а на счете получателя — увеличиться.
  • Изолированность: Если два пользователя одновременно пытаются перевести деньги, каждый должен видеть свои данные и не знать о действиях другого.
  • Надежность: Если система падает после завершения транзакции, состояние счетов остается неизменным.

ACID-свойства являются основополагающими для обеспечения надежности и целостности данных в реляционных базах данных. Они играют критическую роль в приложениях, где данные имеют высокую ценность и должны быть защищены от ошибок.

Ruby 4.0.7 ➜Релиз Immich 3.2.0 ➜Отмена претензий Microsoft ... ➜Новая версия htmx ➜Nginx 1.35.1 ➜Rclone пофиксил загрузку в ... ➜Rootless Podman и исходные ... ➜Обновление Beszel - 0.19.0 ➜Kamailio 25 лет ➜RabbitMQ vs Apache Kafka ➜LibreOffice - миллион загру... ➜Thunderbird и Microsoft Gra... ➜Рейтинг агентов для Rails ➜Релиз solidtime 0.20.0 ➜Djangonaut Space - новый набор ➜