Який взаємозв'язок між ACID та транзакцією бази даних?
Чи дає ACID транзакції бази даних чи це те саме?
Може хтось просвітить цю тему.
Який взаємозв'язок між ACID та транзакцією бази даних?
Чи дає ACID транзакції бази даних чи це те саме?
Може хтось просвітить цю тему.
Відповіді:
ACID - це набір властивостей, які ви хочете застосувати під час зміни бази даних.
Транзакція - це сукупність пов'язаних змін, яка використовується для досягнення деяких властивостей ACID. Транзакції - це інструменти для досягнення властивостей кислоти.
Атомізм означає, що ви можете гарантувати, що вся транзакція відбудеться, або нічого з цього не відбувається; ви можете робити складні операції як один єдиний блок, все або нічого, а аварія, відключення електроенергії, помилка чи щось інше не дозволять вам опинитися в стані, в якому відбулися лише деякі пов'язані з цим зміни.
Послідовність означає, що ви гарантуєте, що ваші дані будуть відповідні; жодне з обмежень, пов’язаних із суміжними даними, не буде порушено.
Ізоляція означає, що одна транзакція не може прочитати дані з іншої транзакції, яка ще не завершена. Якщо дві транзакції виконуються одночасно, кожна з них побачить світ так, ніби вони виконують послідовно, і якщо потрібно прочитати дані, записані іншим, доведеться почекати, поки інша закінчиться.
Довговічність означає, що після завершення транзакції гарантується, що всі зміни були записані на міцний носій (наприклад, на жорсткий диск), а також записується той факт, що транзакція завершена.
Отже, транзакції - це механізм гарантування цих властивостей; вони є способом групування пов'язаних дій разом, таким чином, що в цілому група операцій може бути атомною, давати послідовні результати, бути ізольованою від інших операцій та бути довготривалою реєстрою.
Кислотні кислоти - бажані властивості будь-якого двигуна обробки операцій.
СУБД є (якщо це є корисним) певним видом механізму обробки транзакцій, який виявляє, як правило, дуже велику міру, але не зовсім ці властивості.
Але існують і інші двигуни, які також можуть виявити ці властивості. Програмне забезпечення, яке раніше називалося "моніторами TP", є конкретним випадком (сьогодні еквівалент переважно веб-серверів).
Такі монітори TP можуть отримувати доступ до інших ресурсів, ніж СУБД (наприклад, принтер), і все ще гарантують ACID своїм користувачам. Як приклад того, що може означати ACID під час участі принтера в транзакції:
Я трохи змінив приклад принтера, щоб зробити його більш зрозумілим
1 документ, який містив 2 сторінки вмісту, був відправлений на принтер
Транзакція - документ, надісланий принтеру
Сподіваюсь, це допомагає комусь зависати від концепції кислоти
Який взаємозв'язок між ACID та транзакцією бази даних?
У реляційній базі даних кожен оператор SQL повинен виконуватись в межах транзакції.
Без чіткого визначення меж транзакцій база даних збирається використовувати неявну транзакцію, яка обертається навколо кожного окремого висловлювання.
Неявна транзакція починається до того, як оператор буде виконаний, і закінчується (фіксує або відкочує) після виконання оператора. Неявний режим транзакцій зазвичай відомий як автокомісія.
Як пояснено в цій статті , транзакція - це сукупність операцій читання / запису, які успішні лише в тому випадку, якщо всі операції, що містяться в ній, є успішними.
За своєю суттю транзакція характеризується чотирма властивостями (зазвичай їх називають ACID):
Чи дає ACID транзакції бази даних чи це те саме?
Для системи реляційних баз даних це справедливо, оскільки стандарт SQL визначає, що транзакція повинна надавати гарантії ACID:
Атомізм приймає окремі операції і перетворює їх на одиницю роботи, яка або нічого не робить, успішна, якщо і лише в тому випадку, якщо всі операції, що містяться в ній, досягають успіху.
Транзакція може інкапсулювати зміну стану (якщо тільки вона не є лише для читання). Транзакція завжди повинна залишати систему в послідовному стані, незалежно від того, скільки паралельних транзакцій переплетено в будь-який момент часу.
Послідовність означає, що обмеження застосовуються для кожної вчиненої транзакції. Це означає, що всі ключі, типи даних, перевірки та тригер є успішними і порушення порушення обмежень не ініціюється.
Операції потребують механізмів контролю за одночасністю, і вони гарантують коректність навіть при взаємопов'язаності. Ізоляція приносить нам користь приховувати неспроможні зміни стану від зовнішнього світу, оскільки невдалі транзакції ніколи не повинні корумповувати стан системи. Ізоляція досягається за рахунок контролю за одночасністю з використанням песимістичних або оптимістичних механізмів блокування.
Успішна транзакція повинна назавжди змінити стан системи, і перед її закінченням зміни стану записуються в постійний журнал транзакцій. Якщо наша система раптово постраждала від збою системи або відключення електроенергії, то всі незавершені вчинені транзакції можуть бути відтворені.
Щоб отримати докладніші відомості про довговічність та журнал Redo, ознайомтеся з цією статтею .
Властивості ACID - дуже давнє і важливе поняття теорії баз даних. Я знаю, що ви можете знайти безліч дописів на цю тему, але все ж я хотів би почати ділитися відповіддю на це, оскільки це дуже важлива тема RDBMS.
Система баз даних грає з безліччю різних видів транзакцій, де всі транзакції мають певні характеристики. Ця характеристика відома властивості кислоти. Властивості ACID приймають грантодавця за всі транзакції бази даних для виконання всіх завдань.
Атомність: або вчинити все, або нічого.
Послідовність: Зробіть послідовний запис з точки зору підтвердження всіх правил та обмежень транзакції.
Ізоляція: переконайтеся, що дві транзакції не знають одна про одну.
Довговічність: віддані дані зберігаються назавжди. Довідка взята з цієї статті:
Щоб цитувати Вікіпедію :
Кислотна кислота (атомність, консистенція, ізоляція, довговічність) - це сукупність властивостей, які гарантують, що транзакції бази даних обробляються надійно.
СУБД, яка підтримує транзакції, буде прагнути підтримувати всі ці властивості - будь-які комерційні СУБД (а також кілька СУБД з відкритим кодом) забезпечують повну підтримку ACID - хоча це часто можливо (наприклад, з різними рівнями ізоляції в MSSQL) знижують кислотність - тим самим втрачаючи гарантію повністю трансакційної поведінки.
[Грей] представив властивості ACD для транзакції в 1981 році. У 1983 році [Haerder] додав властивість Isolation. На мою думку, властивості ACD мали б більш корисний набір властивостей для обговорення. Одне тлумачення Atomicity (що транзакція має бути атомною, як це видно у будь-якого клієнта в будь-який час) насправді передбачає властивість ізоляції. Властивість "ізоляції" корисна, коли транзакція не є ізольованою; коли властивість ізоляції розслаблена. У ANSI SQL говорять: якщо рівень ізоляції слабший, то СЕРІАЛІЗАЦІЙНИЙ. Але коли рівень ізоляції СЕРІАЛЬНИЙ, властивість ізоляції насправді не представляє інтересу.
Про це я писав більше в публікації в блозі: "Кислота не має сенсу".
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
[Haerder] Принципи відновлення даних, орієнтованих на транзакції, Haerder and Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
Трансакція може бути визначена як сукупність завдань, які розглядаються як мінімальний блок обробки. Кожен мінімальний блок обробки не можна розділити далі.
Усі транзакції повинні містити чотири властивості, які зазвичай відомі як властивості ACID. тобто ACID - це група властивостей будь-якої транзакції.