Jaka jest zależność między ACID a transakcją w bazie danych?
Czy ACID podaje transakcję w bazie danych, czy to to samo?
Mógłby ktoś oświecić ten temat.
Jaka jest zależność między ACID a transakcją w bazie danych?
Czy ACID podaje transakcję w bazie danych, czy to to samo?
Mógłby ktoś oświecić ten temat.
Odpowiedzi:
ACID to zestaw właściwości, które chcesz zastosować podczas modyfikowania bazy danych.
Transakcja to zestaw powiązanych zmian, który jest używany do uzyskania niektórych właściwości ACID. Transakcje to narzędzia do osiągnięcia właściwości ACID.
Niepodzielność oznacza, że możesz zagwarantować, że nastąpi cała transakcja lub żadna z nich się nie wydarzy; możesz wykonywać złożone operacje jako jedna jednostka, wszystko albo nic, a awaria, awaria zasilania, błąd lub cokolwiek innego nie pozwoli ci być w stanie, w którym nastąpiły tylko niektóre z powiązanych zmian.
Spójność oznacza, że gwarantujesz, że Twoje dane będą spójne; żadne z Twoich ograniczeń dotyczących powiązanych danych nigdy nie zostanie naruszone.
Izolacja oznacza, że jedna transakcja nie może odczytać danych z innej transakcji, która nie została jeszcze zakończona. Jeśli dwie transakcje są wykonywane jednocześnie, każda z nich będzie postrzegać świat tak, jakby wykonywała się po kolei, a jeśli trzeba będzie odczytać dane zapisane przez inną, będzie musiała poczekać, aż druga zostanie zakończona.
Trwałość oznacza, że po zakończeniu transakcji gwarantuje się, że wszystkie zmiany zostały zapisane na trwałym nośniku (takim jak dysk twardy), a fakt zakończenia transakcji jest również odnotowany.
Zatem transakcje są mechanizmem gwarantującym te właściwości; są one sposobem grupowania powiązanych działań razem w taki sposób, że jako całość grupa operacji może być niepodzielna, dawać spójne wyniki, być odizolowana od innych operacji i trwale rejestrowana.
ACID są pożądanymi właściwościami dowolnego mechanizmu przetwarzania transakcji.
DBMS jest (jeśli jest dobry) szczególnym rodzajem silnika przetwarzania transakcji, który zwykle w bardzo dużym stopniu, ale nie do końca, udostępnia te właściwości.
Ale istnieją inne silniki, które również mogą ujawniać te właściwości. Przykładem jest rodzaj oprogramowania, które kiedyś nazywane było „monitorami TP” (obecnie odpowiednikiem są głównie serwery WWW).
Takie monitory TP mają dostęp do zasobów innych niż DBMS (np. Drukarka) i nadal zapewniają ACID swoim użytkownikom. Jako przykład tego, co ACID może oznaczać, gdy drukarka bierze udział w transakcji:
Lekko zmodyfikowałem przykład drukarki, aby był bardziej zrozumiały
Do drukarki został wysłany 1 dokument o zawartości 2 stron
Transakcja - dokument wysłany do drukarki
Mam nadzieję, że to pomoże komuś zrozumieć koncepcję KWASU
Jaka jest zależność między ACID a transakcją w bazie danych?
W relacyjnej bazie danych każda instrukcja SQL musi być wykonywana w ramach transakcji.
Bez jawnego definiowania granic transakcji baza danych użyje niejawnej transakcji, która będzie otaczać każdą indywidualną instrukcję.
Niejawna transakcja rozpoczyna się przed wykonaniem instrukcji i kończy (zatwierdzenie lub wycofanie) po wykonaniu instrukcji. Niejawny tryb transakcji jest powszechnie znany jako automatyczne zatwierdzanie.
Jak wyjaśniono w tym artykule , transakcja jest zbiorem operacji odczytu / zapisu, które kończą się pomyślnie tylko wtedy, gdy wszystkie zawarte w niej operacje zakończą się pomyślnie.
Nieodłącznie transakcja charakteryzuje się czterema właściwościami (powszechnie określanymi jako ACID):
Czy ACID podaje transakcję w bazie danych, czy to to samo?
W przypadku systemu relacyjnej bazy danych jest to prawdą, ponieważ standard SQL określa, że transakcja powinna zapewniać gwarancje ACID:
Atomowość bierze poszczególne operacje i zamienia je w jednostkę pracy typu wszystko albo nic, która kończy się sukcesem wtedy i tylko wtedy, gdy wszystkie zawarte operacje zakończą się powodzeniem.
Transakcja może zawierać zmianę stanu (chyba że jest to transakcja tylko do odczytu). Transakcja musi zawsze pozostawać system w spójnym stanie, bez względu na to, ile współbieżnych transakcji jest przeplatanych w danym momencie.
Spójność oznacza, że ograniczenia są egzekwowane dla każdej zatwierdzonej transakcji. Oznacza to, że wszystkie klucze, typy danych, sprawdzenia i wyzwalacze są pomyślne i nie jest wyzwalane żadne naruszenie ograniczenia.
Transakcje wymagają mechanizmów kontroli współbieżności i gwarantują poprawność, nawet gdy są przeplatane. Izolacja przynosi nam korzyść w postaci ukrycia niezatwierdzonych zmian stanu przed światem zewnętrznym, ponieważ nieudane transakcje nie powinny nigdy uszkodzić stanu systemu. Izolację osiąga się poprzez kontrolę współbieżności przy użyciu pesymistycznych lub optymistycznych mechanizmów blokujących.
Pomyślna transakcja musi trwale zmienić stan systemu, a przed jej zakończeniem zmiany stanu są rejestrowane w utrwalonym dzienniku transakcji. Jeśli na nasz system nagle wpłynie awaria systemu lub awaria zasilania, wszystkie niedokończone zatwierdzone transakcje mogą zostać odtworzone.
Aby uzyskać więcej informacji na temat trwałości i dziennika powtórzeń, zapoznaj się z tym artykułem .
Właściwości ACID to bardzo stara i ważna koncepcja teorii baz danych. Wiem, że można znaleźć wiele postów na ten temat, ale mimo to chciałbym podzielić się odpowiedzią na ten temat, ponieważ jest to bardzo ważny temat RDBMS.
System bazy danych gra z wieloma różnymi typami transakcji, w których każda transakcja ma określoną charakterystykę. Ta cecha to znane właściwości ACID. ACID Properties ma grantee dla wszystkich transakcji bazy danych w celu wykonania wszystkich zadań.
Atomowość: albo popełnij wszystko albo nic.
Spójność: Stwórz spójny zapis pod względem walidacji wszystkich reguł i ograniczeń transakcji.
Izolacja: upewnij się, że dwie transakcje nie są sobie znane.
Trwałość: zaangażowane dane przechowywane na zawsze. Odniesienie zaczerpnięte z tego artykułu:
Cytując Wikipedię :
ACID (atomowość, spójność, izolacja, trwałość) to zestaw właściwości, które gwarantują niezawodne przetwarzanie transakcji w bazie danych.
DBMS obsługujący transakcje będzie starał się obsługiwać wszystkie te właściwości - każdy komercyjny DBMS (a także kilka systemów DBMS o otwartym kodzie źródłowym) zapewnia pełne wsparcie ACID - chociaż często jest to możliwe (na przykład przy różnych poziomach izolacji w MSSQL) zmniejszyć KWASOWOŚĆ - tym samym tracąc gwarancję w pełni transakcyjnego zachowania.
[Gray] wprowadził właściwości ACD do transakcji w 1981 r. W 1983 r. [Haerder] dodał właściwość Isolation. Moim zdaniem właściwości ACD miałyby bardziej przydatny zestaw właściwości do omówienia. Jedna interpretacja atomowości (że transakcja powinna być atomowa, jak widać z dowolnego klienta w dowolnym momencie) faktycznie implikowałaby właściwość izolacji. Właściwość „isolation” jest przydatna, gdy transakcja nie jest izolowana; kiedy właściwość izolacji jest złagodzona. W języku ANSI SQL mów: jeśli poziom izolacji jest słabszy, to SERIALIZABLE. Ale gdy poziom izolacji jest SERIALIZOWALNY, właściwość izolacji nie jest tak naprawdę interesująca.
Więcej na ten temat pisałem w poście na blogu: „ACID nie ma sensu”.
http://blog.franslundberg.com/2013/12/acid-does-not-make-sense.html
[Gray] The Transaction Concept, Jim Gray, 1981. http://research.microsoft.com/en-us/um/people/gray/papers/theTransactionConcept.pdf
[Haerder] Principles of Transaction Oriented Database Recovery, Haerder and Reuter, 1983. http://www.stanford.edu/class/cs340v/papers/recovery.pdf
Transakcję można zdefiniować jako zbiór zadań, które są uważane za minimalną jednostkę przetwarzania. Żadnej minimalnej jednostki przetwarzania nie można dalej podzielić.
Cała transakcja musi zawierać cztery właściwości, które są powszechnie znane jako właściwości ACID. czyli ACID to grupa właściwości dowolnej transakcji.