Есть ли у термина «атомарность» два разных определения? - PullRequest
0 голосов
/ 15 октября 2019

Атомность, A в ACID для баз данных, означает, что транзакции завершаются неудачно или завершаются успешно. То есть частичные обновления не наблюдаются (т. Е. Неудачные транзакции откатят промежуточные операции).

Изоляция I в ACID означает, что параллельные транзакции могут быть сериализованы. Это цель контроля параллелизма.

Одно не подразумевает другого. Рассмотрим две транзакции, T1 и T2. T1 увеличивает некоторое поле в записи A, а T2 добавляет 2 к тому же полю. Предположим, что и T1, и T2 читают одну и ту же версию A. T1 затем записывает свою обновленную версию A в память, а затем T2 немедленно перезаписывает обновленную версию. Это тот случай, когда атомарность сохраняется (т. Е. Обе транзакции преуспели путем написания своих обновлений), но изоляция не выполняется.

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

Итак, на мой вопрос, является ли атомарность перегруженным термином в программировании? Я хотел задать вопрос, похожий на Что значит сказать, что MongoDB является атомарным на уровне операций записи? , но это было помечено как дубликат Что означает «атомарный» в программировании? . В последней ссылке кажется, что атомарность относится к комбинации атомарности + изоляции, как описано выше. Почти каждый случай использования слов «атомарность» и «атомарные» операции, используемые на этом веб-сайте (и в документах MongoDB), кажется, объединяет атомарность и изоляцию в одну концепцию. Кроме того, руководство MongoDB использует атомарный, чтобы означать атомный + изолированный?

Причина, по которой я спрашиваю, двояка. Во-первых, в зависимости от того, какое определение атомарности я принимаю, многие ответы / ответы могут быть запутанными или неоднозначными. Я сумасшедший или этот термин перегружен? Вторая причина, которую я спрашиваю, состоит в том, что документы MongoDB часто ссылаются на «атомарные записи» и «атомарные операции» в тех случаях, когда трудно сделать вывод о том, насколько сильна «атомная» гарантия.

...