ACID


ACID (англ. Atomicity, Consistency, Isolation, Durability) — це набір властивостей, що гарантують надійну роботу транзакцій бази даних: атомарність, узгодженість, ізольованість, довговічність. В контексті баз даних, послідовність операцій з базою даних, яка задовольняє властивостям ACID, можна розглядати як одну логічну операцію над даними. Така послідовність операцій називається транзакцією. Наприклад, переказ коштів з одного банківського рахунку на інший, містить численні операції, але є єдиною транзакцією.


В 1983 році Андреа Рейтер[en] і Тео Хардер[en] ввели акронім ACID[1], ґрунтуючись на вимогах[2], які були сформульовані раніше науковцем Джимом Ґреєм.




Зміст





  • 1 Вимоги

    • 1.1 Atomicity — Атомарність


    • 1.2 Consistency — Узгодженість


    • 1.3 Isolation — Ізольованість


    • 1.4 Durability — Довговічність



  • 2 Примітки


  • 3 Див. також


  • 4 Література




Вимоги |



Atomicity — Атомарність |


Атомарність (англ. Atomicity) гарантує, що жодна транзакція не буде виконана частково. Будуть або виконані всі операції, що беруть участь у транзакції, або не виконано жодної. Якщо протягом роботи однієї з операцій виникне помилка і операцію буде відхилено, то будуть відхилені також усі інші зміни, здійснені в межах транзакції.



Consistency — Узгодженість |


Відповідно до вимоги узгодженості (англ. Consistency), система повинна перебувати в узгодженому, несуперечливому стані до початку дії транзакції і по її завершенню. При цьому вона може перебувати в неузгодженому стані протягом виконання транзакції, проте ця неузгодженість завдяки іншим властивостям — атомарності та ізольованості — не буде видимою за межами транзакції.


Наприклад, при переведенні коштів з рахунка на рахунок, кошти можуть спочатку зніматись з першого рахунку, після чого нараховуватись на другий. Відповідно, після зняття коштів, але до їх нарахування система перебуває в неузгодженому стані — коштів немає на жодному з рахунків. Але після завершення транзакції повна сума перебуватиме на другому (або першому у випадку скасування транзакції) рахунку.



Isolation — Ізольованість |


Ізольованість (англ. Isolation) означає, що жодні проміжні зміни не будуть видимі за межами транзакції аж до її завершення. Питання ізоляції стає актуальним при одночасній роботі багатьох транзакцій з одними й тими самими даними. Згідно з цією вимогою, якщо дві транзакції намагатимуться змінити одні й ті самі дані, то одну з них буде відхилено або призупинено до завершення другої.



Durability — Довговічність |


Довговічність (англ. Durability) гарантує, що незалежно від інших проблем після відновлення працездатності системи результати завершених транзакцій будуть збережені. Іншими словами, якщо користувач отримав повідомлення про успішне завершення транзакції, то він може бути впевнений, що дані будуть збережені та відновлені у випадку збоїв.



Примітки |




  1. Haerder, T.; Reuter, A. (1983). Principles of transaction-oriented database recovery. ACM Computing Surveys 15 (4): 287. doi:10.1145/289.291. 


  2. Gray, Jim (September 1981). The Transaction Concept: Virtues and Limitations (PDF). Proceedings of the 7th International Conference on Very Large Databases. Cupertino, CA: Tandem Computers. с. 144–154. Процитовано 19 квітня 2018. 



Див. також |


  • Теорема CAP


Література |



  • Ґрей, Джим; Рейтер, Андреас (30 вересня 1992). Transaction Processing: Concepts and Techniques (англійською) (вид. 1-е). 340 Pine Street, Sixth Floor, Сан-Франциско, CA 94104: Morgan Kaufmann Publishers[ru]. ISBN 9781558601901. (англ.)




Popular posts from this blog

AWS Lex not identifying response if by a variable The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) The Ask Question Wizard is Live! Data science time! April 2019 and salary with experienceEnforcing custom enumeration in AWS LEX for slot valuesHow to give response based on user response in Amazon Lex?Intercepting AWS Lambda Response to a AWS Lex QueryLex chat bot error: Reached second execution of fulfillment lambda on the same utteranceamazon lex showing invalid responseLambda response send back to Lex slot?Response card in Amazon lexAmazon Lex - Lambda response return HTML to botHow can I solve 424 (Failed Dependency) (python) obtained from Amazon lex?

Алба-Юлія

Захаров Федір Захарович