stringtranslate.com

Атомарность (системы баз данных)

В системах баз данных атомарность ( / ˌ æ t ə ˈ m ɪ s ə t i / ; от древнегреческого : ἄτομος , романизированногоátomos , букв. «неделимый») является одним из свойств транзакции ACID ( атомарность, согласованность , изоляция , долговечность ) . Атомарная транзакция представляет собой неделимую и неприводимую серию операций с базой данных, такую, что либо все происходят, либо ни одна не происходит. [1] Гарантия атомарности предотвращает частичные обновления базы данных, поскольку они могут вызвать большие проблемы, чем полное отклонение всей серии. Как следствие, другой клиент базы данных не может наблюдать выполнение транзакции. В один момент времени она еще не произошла, а в следующий момент она уже произошла полностью (или ничего не произошло, если транзакция была отменена в процессе).

Примером атомарной транзакции является денежный перевод с банковского счета A на счет B. Он состоит из двух операций: снятия денег со счета A и сохранения их на счет B. Выполнение этих операций в атомарной транзакции гарантирует, что база данных останется в согласованном состоянии , то есть деньги не будут потеряны или созданы, если любая из этих двух операций завершится неудачей. [2]

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

Ортогональность

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

В результате этого невозможность обнаружить нарушение и откатить содержащуюся в нем транзакцию может привести к сбою изоляции или согласованности.

Выполнение

Обычно системы реализуют атомарность, предоставляя некоторый механизм для указания того, какие транзакции начались, а какие завершились; или сохраняя копию данных до того, как произошли какие-либо изменения ( чтение-копирование-обновление ). Несколько файловых систем разработали методы, позволяющие избежать необходимости хранить несколько копий данных, используя журналирование (см. журналирование файловой системы ). Базы данных обычно реализуют это, используя некоторую форму регистрации/журналирования для отслеживания изменений. Система синхронизирует журналы (часто метаданные ) по мере необходимости после успешного внесения изменений. После этого восстановление после сбоя игнорирует неполные записи. Хотя реализации различаются в зависимости от таких факторов, как проблемы параллелизма, принцип атомарности — т. е. полный успех или полный отказ — сохраняется.

В конечном счете, любая реализация на уровне приложения опирается на функциональность операционной системы . На уровне файловой системы POSIX -совместимые системы предоставляют системные вызовы, такие как open(2)и , flock(2)которые позволяют приложениям атомарно открывать или блокировать файл. На уровне процесса потоки POSIX предоставляют адекватные примитивы синхронизации.

Аппаратный уровень требует атомарных операций, таких как Test-and-set , Fetch-and-add , Compare-and-swap или Load-Link/Store-Conditional , вместе с барьерами памяти . Переносимые операционные системы не могут просто блокировать прерывания для реализации синхронизации, поскольку оборудование, в котором отсутствует параллельное выполнение, такое как гиперпоточность или многопроцессорность, в настоящее время встречается крайне редко. [ необходима цитата ]

Смотрите также

Ссылки

  1. ^ "атомарная операция". Webopedia. 25 ноября 2003 г. Получено 2011-03-23 . Операция, во время которой процессор может одновременно считывать местоположение и записывать его в одной и той же операции шины. Это предотвращает запись или чтение памяти любым другим процессором или устройством ввода-вывода до завершения операции.
  2. ^ Амстердам, Джонатан. "Atomic File Transactions, Часть 1". O'Reilly . Архивировано из оригинала 2016-03-03 . Получено 2016-02-28 .