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

редактировать
Свойство системы баз данных ACID

В системах баз данных, атомарность (; из Древнегреческий : ἄτομος, латинизированный : átomos, букв 'неделимый') является одним из ACID (атомарность, согласованность, изоляция, долговечность ) транзакция свойства. атомарная транзакция - это неделимая и несократимая последовательность операций с базой данных, при которой либо все выполняются, либо ничего не происходит. Гарантия атомарности предотвращает частичное обновление базы данных, что может вызвать более серьезные проблемы, чем полный отказ от всей серии. Как следствие, другой клиент базы данных не может наблюдать за выполнением транзакции. В какой-то момент этого еще не произошло, а в следующий уже произошло полностью (или ничего не произошло, если транзакция была отменена в процессе).

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

Содержание
  • 1 Ортогональность
  • 2 Реализация
  • 3 См. Также
  • 4 Ссылки
Ортогональность

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

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

Реализация

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

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

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

См. также
Ссылки
Последняя правка сделана 2021-06-12 16:26:46
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте