ACID
ACID (ад англ.: atomicity, consistency, isolation, durability) — набор патрабаванняў да транзакцый у сістэмах кіравання базамі даных, якія забяспечваюць найбольш надзейную і прадказальную яе працу — атамарнасць, узгодненасць, ізаляцыю, устойлівасць; сфармуляваны ў канцы 1970-х гадоў Джымам Грэем[1].
Набор патрабаванняў лічыцца фактычным стандартам для высоканадзейных сістэм, перш за ўсё, рэляцыйных СКБД, пры гэтым з сярэдзіны 2000-х гадоў для пабудовы размеркаваных СКБД дапускаецца адмова ад часткі патрабаванняў ACID (для абгрунтавання чаго выкарыстоўваюцца тэарэма CAP, тэарэма PACELC) або зніжэнне строгасці патрабаванняў (BASE).
Атамарнасць
Атамарнасць гарантуе, што ніякая транзакцыя не будзе зафіксавана ў сістэме часткова. Будуць альбо выкананы ўсе яе падаперацыі, альбо не выканана ніводнай. Паколькі на практыцы немагчыма адначасова і атамарна выканаць усю паслядоўнасць аперацый ўнутры транзакцыі, ўводзіцца паняцце «адкату» (rollback): калі транзакцыю не атрымліваецца цалкам завяршыць, вынікі ўсіх яе да гэтага часу зробленных дзеянняў будуць адмененыя і сістэма вернецца ва «вонкава зыходнага» стану — будзе здавацца, што транзакцыі і не было (натуральна, лічыльнікі, індэксы і іншыя ўнутраныя структуры могуць змяніцца, але, калі СКБД запраграмавана без памылак, гэта не паўплывае на знешнія яе паводзіны).
Узгодненасць
Транзакцыя, якая дасягае свайго нармальнага завяршэння (англ.: end of transaction, EOT) і тым самым фіксуе свае вынікі, захоўвае ўзгодненасць базы даных. Іншымі словамі, кожная паспяховая транзакцыя па вызначэнні фіксуе толькі дапушчальныя вынікі. Гэта ўмова з’яўляецца неабходным для падтрымкі чацвёртай уласцівасці.
Узгодненасць з’яўляецца больш шырокім паняццем. Напрыклад, у банкаўскай сістэме можа існаваць патрабаванне роўнасці сумы, якая спісваецца з аднаго рахунку, суме, якая залічваецца на іншы. Гэта — бізнес-правіла, і яно не можа быць гарантавана толькі праверкамі цэласнасці, яго павінны выканаць праграмісты пры напісанні кода транзакцый. Калі якая-небудзь транзакцыя зробіць спісанне, але не зробіць залічэння, то сістэма застанецца ў некарэктным стане і ўласцівасць ўзгодненасці будзе парушана.
Пры гэтым у ходзе выканання транзакцыі ўзгодненасці не патрабуецца: паміж залічэннем і спісаннем з прыкладу, хутчэй за ўсё, унутры транзакцыі будзе прамежкавы няўзгоднены стан сістэмы, але дзякуючы патрабаванню ізаляванасці ніякім іншым транзакцыям гэтая няўзгодненасць не будзе бачная. Атамарнасць жа гарантуе, што транзакцыя альбо будзе цалкам завершана, альбо ні адна з аперацый транзакцыі не будзе выканана. Тым самым гэтая прамежкавая няўзгодненасць з’яўляецца схаванай.
Ізаляцыя
Падчас выканання транзакцыі паралельныя транзакцыі не павінны аказваць уплыву на яе вынік. Ізаляванасць — патрабаванне дарагое, таму ў рэальных базах даных існуюць рэжымы, якія не цалкам ізалююць транзакцыю (ўзроўні ізаляванасці, якія дапускаюць фантомнае чытанне).
Устойлівасць
Незалежна ад праблем на ніжніх узроўнях (да прыкладу, абясточванне сістэмы або збоі ў абсталяванні) змены, зробленыя паспяхова завершанай транзакцыяй, павінны застацца захаванымі пасля вяртання сістэмы ў працу. Іншымі словамі, калі карыстальнік атрымаў пацверджанне ад сістэмы, што транзакцыя выканана, ён можа быць упэўнены, што зробленыя ім змены не будуць адменены з-за якога-небудзь збою.
Крыніцы
- ↑ Jim Gray The Transaction Concept: Virtues and Limitations // Proceedings of the 7th International Conference on Very Large Databases. — 1981. — Чэрвень Архівавана з першакрыніцы 4 ліпеня 2020.
Літаратура
- P. A. Bernstein, N. Goodman, V. Hadzilacos. Concurrency Control and Recovery in Database Systems. — Addison-Wesley, 1986.
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.