Какова связь между ACID и транзакцией базы данных?
ACID дает транзакцию базы данных или это то же самое?
Может ли кто-нибудь просветить эту тему.
источник
Какова связь между ACID и транзакцией базы данных?
ACID дает транзакцию базы данных или это то же самое?
Может ли кто-нибудь просветить эту тему.
ACID - это набор свойств, которые вы хотели бы применить при изменении базы данных.
Транзакция - это набор связанных изменений, которые используются для достижения некоторых свойств ACID. Транзакции являются инструментами для достижения свойств ACID.
Атомарность означает, что вы можете гарантировать, что вся транзакция произойдет, или ничего не произойдет; Вы можете выполнять сложные операции как единое целое, все или ничего, а сбой, сбой питания, ошибка или что-либо еще не позволит вам находиться в состоянии, в котором произошли только некоторые связанные изменения.
Согласованность означает, что вы гарантируете, что ваши данные будут согласованы; ни одно из ограничений, связанных с данными, не будет нарушено.
Изоляция означает, что одна транзакция не может прочитать данные из другой транзакции, которая еще не завершена. Если две транзакции выполняются одновременно, каждая из них увидит мир так, как будто они выполняются последовательно, и если одна из них должна прочитать данные, записанные другой, ей придется подождать, пока другая не закончится.
Долговечность означает, что после завершения транзакции гарантируется, что все изменения были записаны на надежный носитель (например, на жесткий диск), и тот же факт, что транзакция была завершена, также записывается.
Таким образом, транзакции являются механизмом гарантирования этих свойств; они представляют собой способ группировки связанных действий таким образом, что в целом группа операций может быть атомарной, давать согласованные результаты, быть изолированной от других операций и надежно регистрироваться.
ACID - это желательные свойства любого механизма обработки транзакций.
СУБД - это (если это хорошо) особый вид механизма обработки транзакций, который раскрывает, как правило, в очень большой степени, но не совсем, эти свойства.
Но существуют другие двигатели, которые также могут выставлять эти свойства. Тип программного обеспечения, который раньше назывался TP-мониторами, является наглядным примером (в настоящее время его эквивалентом являются в основном веб-серверы).
Такие мониторы TP могут получать доступ к ресурсам, отличным от СУБД (например, к принтеру), и при этом гарантировать ACID своим пользователям. В качестве примера того, что может означать ACID, когда принтер участвует в транзакции:
источник
Я немного изменил пример принтера, чтобы сделать его более понятным
1 документ, содержащий 2 страницы, был отправлен на принтер
Транзакция - документ отправлен на принтер
Надеюсь, что это поможет кому-то понять концепцию ACID
источник
В реляционной базе данных каждый оператор SQL должен выполняться в рамках транзакции.
Без явного определения границ транзакции база данных будет использовать неявную транзакцию, которая обернута вокруг каждого отдельного оператора.
Неявная транзакция начинается до выполнения инструкции и заканчивается (фиксация или откат) после выполнения инструкции. Режим неявных транзакций обычно называется автокоммитом.
Как объясняется в этой статье , транзакция представляет собой набор операций чтения / записи, выполняющихся успешно, только если все содержащиеся в них операции выполняются успешно.
По своей сути транзакция характеризуется четырьмя свойствами (обычно называемыми ACID):
Для системы реляционных баз данных это верно, потому что стандарт SQL указывает, что транзакция должна обеспечивать гарантии ACID:
валентность
Атомарность берет отдельные операции и превращает их в единичную единицу работы «все или ничего», которая преуспевает тогда и только тогда, когда все содержащиеся в ней операции завершаются успешно.
Транзакция может инкапсулировать изменение состояния (если только оно не доступно только для чтения). Транзакция должна всегда оставлять систему в согласованном состоянии, независимо от того, сколько параллельных транзакций чередуется в любой момент времени.
консистенция
Согласованность означает, что ограничения применяются для каждой совершенной транзакции. Это означает, что все ключи, типы данных, проверки и триггеры успешны, и нарушение ограничений не инициируется.
Изоляция
Транзакции требуют механизмов контроля параллелизма, и они гарантируют корректность, даже когда чередуются. Изоляция дает нам возможность скрывать незавершенные изменения состояния от внешнего мира, поскольку неудачные транзакции никогда не должны портить состояние системы. Изоляция достигается за счет управления параллелизмом с использованием пессимистических или оптимистических механизмов блокировки.
долговечность
Успешная транзакция должна навсегда изменить состояние системы, и до ее завершения изменения состояния записываются в постоянный журнал транзакций. Если на нашу систему неожиданно повлиял сбой или отключение питания, все незаконченные совершенные транзакции могут быть воспроизведены.
Чтобы узнать больше о долговечности и журнале повторов, ознакомьтесь с этой статьей .
источник
Свойства ACID - очень старая и важная концепция теории баз данных. Я знаю, что вы можете найти много постов на эту тему, но все же я хотел бы начать делиться ответом по этому вопросу, потому что это очень важная тема СУРБД.
Система баз данных играет с множеством различных типов транзакций, где все транзакции имеют определенные характеристики. Эта характеристика известна как свойства ACID. ACID Properties принимает все транзакции базы данных для выполнения всех задач.
Атомность: либо совершить все или ничего.
Согласованность: создание согласованной записи с точки зрения проверки всех правил и ограничений транзакции.
Изоляция: убедитесь, что две транзакции не знают друг друга.
Долговечность: надежные данные хранятся вечно. Ссылка взята из этой статьи:
источник
Цитировать Википедию :
СУБД, поддерживающая транзакции, будет стремиться поддерживать все эти свойства - любая коммерческая СУБД (а также несколько СУБД с открытым исходным кодом) обеспечивает полную поддержку ACID - хотя часто это возможно (например, с разными уровнями изоляции в MSSQL) уменьшить кислотность - таким образом теряет гарантию полностью транзакционного поведения.
источник
[Gray] представил свойства ACD для транзакции в 1981 году. В 1983 году [Haerder] добавил свойство Isolation. По моему мнению, свойства ACD будут иметь более полезный набор свойств для обсуждения. Одна интерпретация атомарности (что транзакция должна быть атомарной, как видно из любого клиента в любое время) фактически подразумевает свойство изоляции. Свойство «изоляция» полезно, когда транзакция не изолирована; когда свойство изоляции ослаблено. В ANSI SQL говорят: если уровень изоляции слабее, то SERIALIZABLE. Но когда уровень изоляции SERIALIZABLE, свойство изоляции на самом деле не представляет интереса.
Я написал больше об этом в сообщении в блоге: «КИСЛОТА не имеет смысла».
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Грей] Концепция транзакции, Джим Грей, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Хаердер] Принципы транзакционно-ориентированного восстановления баз данных, Хаердер и Рейтер, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
источник
Транзакция может быть определена как набор задач, которые рассматриваются как минимальная единица обработки. Каждый минимальный блок обработки не может быть разделен дальше.
Все транзакции должны содержать четыре свойства, которые обычно называются свойствами ACID. т.е. ACID - это группа свойств любой транзакции.
источник