Я просматривал свойства ACID относительно транзакции и столкнулся с приведенным ниже утверждением на разных сайтах
ACID является аббревиатурой от четырех свойств, гарантируемых транзакциями: атомарность, согласованность, изоляция и долговечность.
** Мой вопрос касается именно фразы.
гарантируется транзакциями
**. По моему опыту эти свойства не заботятся
транзакция автоматически. Но, как разработчик Java, мы должны убедиться, что эти критерии свойств выполнены.
Давайте пройдемся по каждому свойству: -
Атомность: - Предположим, что когда мы создаем клиента, учетная запись также должна быть создана, поскольку она является обязательной. Так что теперь во время транзакции
клиент создается во время создания учетной записи. Таким образом, разработчик теперь может пойти двумя путями: либо он откатывает
завершить транзакцию (в этом случае соблюдается атомарность), или он фиксирует транзакцию, поэтому клиент будет создан, но не
аккаунт (что нарушает атомарность). Так ответственность лежит на разработчике?
Согласованность: - та же причина действительна и для согласованности
Изоляция: - согласно определению изоляция делает транзакцию выполненной без вмешательства другого процесса или транзакций.
Но это достигается, когда мы устанавливаем уровень изоляции как Serializable. В другом случае, например, чтение выполнено или чтение не передано
изменения видны для других транзакций. Таким образом, ответственность за то, чтобы сделать его действительно изолированным с помощью Serializable, ложится на разработчика?
Долговечность: - Если мы фиксируем транзакцию, то даже в случае сбоя приложения оно должно быть зафиксировано при перезапуске приложения. Не уверены, что это нужно позаботиться разработчику или поставщику базы данных / транзакции?
Так что, насколько я понимаю, эти свойства ACID не гарантируются автоматически; скорее мы, как разработчик, должны их достичь. пожалуйста, дайте мне знать
если выше понимание относительно каждого пункта является правильным? Буду признателен, если вы, ребята, можете ответить за каждое очко (да / нет, также подойдет.
Согласно моему пониманию, read commit должен быть наиболее логичным уровнем изоляции в большинстве приложений, хотя это также зависит от требований.