Транзакции (ACID)
Какие могут возникнуть проблемы при повторе прерванной транзакции?
- Если транзакция прошла успешно, но при подтверждении клиенту произошла ошибка, до при повторе транзакции получится повтор уже сделанной транзакции (можно решить механизмом дедупликации) - Если транзакция прерывана из-за перегруженности, то ее ретрай может ухудшить ситуацию (можно решить ретраем с экспоненциальной задержкой) - Ретраить транзакцию только в случае временных ошибок (блокировка, проблемы с сетью и т.д)
Что такое ACID
ACID (atomicity, consistency, isolation, durability — атомарность, согласованность, изоляция и сохраняемость)
Как иногда называют системы, не соответствующие критериям ACID
BASE, что «как правило, доступна» (Basically Available), «гибкое состояние» (Soft state) и «конечная согласованность» (Eventual consistency)
Что такое атомарность в ACID?
Атомарность - возможность прервать транзакцию при сбое базы и игнорировать все операции записи этой транзакции (возможность откатить все изменения в рамках транзакции). То есть это "прерываемость" транзакции
Нужны ли ACID свойства для однообъектных операций записи?
Да. Например, если записывать JSON объект в 20 кбайт, то: - Если после записи 10 кбайт произошел сбой, то что будет с этим объектом, разбор которого невозможен. - Если это перезапись объекта, то что будет при смешивании старых и новых данных? - Если документ обновился частично, то увидит ли их другой клиент, читающий в это время этот документ
Что такое свойство изоляции в ACID?
Конкурентно выполняемые транзакции изолированы друг от друга - они не мешает друг другу.
Какое из ACID свойств больше можно отнести к свойству приложения, а не базы данных?
Согласованность
Что такое согласованность в ACID?
Согласованность - это значит, что база данных находится в "хорошем" состоянии. Сохраняется инвариантность относительно данных: дебит сходится с кредитом, у человека не может быть возраст -5 лет.
Что подразумевают под свойством сохраняемость в ACID?
Это обязательство базы данных не терять зафиксированные транзакции даже в случаи сбоя.