Добавить в корзинуПозвонить
Найти в Дзене
Легко в’IT

ACID - просто на пальцах

Ну что, вернемся в привычный режим постов! Для разогрева я предлагаю разобрать небольшую тему, которую, однако, могут спросить на собеседовании - это аббревиатура ACID. Если ты ее не знаешь как расшифровать, хотя я уверен, что ты знаешь каждую букву из него, то интервьюер фыркнет и перейдет с к следующему вопросу, с выводом, что ты ничего не смыслишь в БД. Для начала, дам определение транзакции, так как это основополагающая штука для понимания. По сути - это может быть одна, а может быть и целый ворох операций по обновлению базы данных, объединенный по какому-то контексту. Например, чтобы зачислить тебе деньги, у банка обновляется далеко не одна таблица. Теперь поехали, итак, запоминай, аббревиатура эта расшифровывается следующим образом: Ну вот и все, вот так просто это расшифровывается! Подписывайся и зови друзей #транзакции #бд #acid

Ну что, вернемся в привычный режим постов! Для разогрева я предлагаю разобрать небольшую тему, которую, однако, могут спросить на собеседовании - это аббревиатура ACID. Если ты ее не знаешь как расшифровать, хотя я уверен, что ты знаешь каждую букву из него, то интервьюер фыркнет и перейдет с к следующему вопросу, с выводом, что ты ничего не смыслишь в БД.

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

Теперь поехали, итак, запоминай, аббревиатура эта расшифровывается следующим образом:

  • Atomicity (атомарность) означает, что каждая транзакция выполняется только полностью. Не должно быть такого чтобы транзакция (например, изменение данных в базе) выполнилась только на одних полях, а на других не выполнилась: либо выполнится либо не выполнится и выдаст ошибку, третьего не дано
  • Consistency (консистентность, согласованность) вытекает из предыдущего и означает, что если результатом выполнения транзакции из 5 insert’ов в разные таблицы, именно 5 новых строк в нашей БД и появится. Ну или не появится не одной. Не может быть такого, что к примеру данные о пришедшем заказе должны обязательно иметь привязанного клиента: уже имеющегося в базе или нового. Просто так повисший в базе заказ, не понятно от кого вызовет неразбериху
  • Isolation (изолированность) - пока выполняется наша транзакция, не важно из скольки запросов, другие транзакции не должны оказывать влияния на результат той самой нашей, да и вообще никакая транзакция не может мешать другой
  • Durability (надежность), то есть пользователь всегда знает, что произведенные им изменения, подтвержденные базой данных не будут отменены. Изменены могут быть последующими транзакциями, да даже удалить можно, но в рамках одной транзакции изменения должны дойти до данных

Ну вот и все, вот так просто это расшифровывается! Подписывайся и зови друзей

#транзакции #бд #acid