Атомарность (системы баз данных)
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2020 г. ) |
В системах баз данных атомарность ( / ˌ æ t ə ˈ m ɪ s ə t i / ; от древнегреческого : ἄτομος , латинизированного : átomos , букв. «неделимый») является одним из ACID ( атомарность, согласованность , изоляция , долговечность ). свойства транзакции . Атомарная транзакция — это неделимая и несократимая серия операций с базой данных, в которых либо выполняются все операции, либо не происходит ни одной . [1] Гарантия атомарности предотвращает частичные обновления базы данных, поскольку они могут вызвать более серьезные проблемы, чем полный отказ от всей серии. Как следствие, другой клиент базы данных не может наблюдать за выполнением транзакции. В один момент времени это еще не произошло, а в следующий уже произошло полностью (или ничего не произошло, если транзакция была отменена в процессе).
Примером атомарной транзакции является денежный перевод с банковского счета A на счет B. Он состоит из двух операций: снятия денег со счета A и сохранения их на счет B. Выполнение этих операций в рамках атомарной транзакции гарантирует, что база данных останется в стабильное состояние , то есть деньги не теряются и не создаются, если любая из этих двух операций терпит неудачу. [2]
Тот же термин также используется в определении первой нормальной формы в системах баз данных, где вместо этого он относится к концепции, согласно которой значения полей не могут состоять из множества меньших значений, подлежащих разложению, например строки, в которую входят несколько имен, чисел. , даты или другие типы могут быть упакованы.
Ортогональность [ править ]
Атомарность не ведет себя полностью ортогонально по отношению к другим свойствам ACID транзакций. Например, изоляция опирается на атомарность для отката включающей транзакции в случае нарушения изоляции, такого как взаимоблокировка ; Согласованность также опирается на атомарность для отката включающей транзакции в случае нарушения согласованности незаконной транзакцией.
В результате неспособность обнаружить нарушение и откат включающей транзакции может привести к сбою изоляции или согласованности.
Реализация [ править ]
Обычно системы реализуют атомарность, предоставляя некоторый механизм, указывающий, какие транзакции начались, а какие завершились; или сохраняя копию данных до того, как произошли какие-либо изменения ( read-copy-update ). В нескольких файловых системах разработаны методы, позволяющие избежать необходимости хранить несколько копий данных с помощью журналирования (см. Журналируемая файловая система ). Базы данных обычно реализуют это, используя некоторую форму журналирования/ведения журнала для отслеживания изменений. Система синхронизирует журналы (часто метаданные ) по мере необходимости после успешного внесения изменений. После этого восстановление после сбоя игнорирует неполные записи. Хотя реализации различаются в зависимости от таких факторов, как проблемы параллелизма, принцип атомарности, то есть полный успех или полный провал, остается неизменным.
В конечном счете, любая реализация уровня приложения зависит от функциональности операционной системы . На уровне файловой системы POSIX -совместимые системы предоставляют системные вызовы, такие как open(2)
и flock(2)
которые позволяют приложениям атомарно открывать или блокировать файл. На уровне процесса потоки POSIX предоставляют адекватные примитивы синхронизации.
Аппаратный уровень требует атомарных операций, таких как Test-and-set , Fetch-and-add , Compare-and-swap или Load-Link/Store-Conditional , а также барьеры памяти . Портативные операционные системы не могут просто блокировать прерывания для реализации синхронизации, поскольку оборудование, в котором отсутствует одновременное выполнение, такое как гиперпоточность или многопроцессорность, сейчас встречается крайне редко. [ нужна ссылка ]
См. также [ править ]
Ссылки [ править ]
- ^ «атомная операция» . Вебопедия. 25 ноября 2003 года . Проверено 23 марта 2011 г.
Операция, во время которой процессор может одновременно читать и записывать ячейку в одной и той же операции шины. Это предотвращает запись или чтение памяти любым другим процессором или устройством ввода-вывода до завершения операции.
- ^ Амстердам, Джонатан. «Атомарные файловые транзакции, часть 1» . О'Рейли . Архивировано из оригинала 3 марта 2016 г. Проверено 28 февраля 2016 г.