ACID

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Ten artykuł dotyczy baz danych. Zobacz też: test Acid1, test Acid2, test Acid3.

ACID – zbiór właściwości gwarantujących poprawne przetwarzanie transakcji w bazach danych. ACID jest skrótowcem od angielskich słów atomicity, consistency, isolation, durability, czyli niepodzielność[a], spójność, izolacja, trwałość[1].

  • Niepodzielność transakcji oznacza, że każda transakcja albo zostanie wykonana w całości, albo w ogóle – na przykład jeśli w ramach jednej transakcji odbywać się ma przelew bankowy (zmniejszenie wartości jednego konta i powiększenie innego o tę samą kwotę), to nie może dojść do sytuacji, że z jednego konta ubędzie pieniędzy, a kwota na koncie docelowym będzie bez zmian.
  • Spójność transakcji oznacza, że po wykonaniu transakcji system będzie spójny, czyli nie zostaną naruszone zasady integralności.
  • Izolacja transakcji oznacza, że jeśli dwie transakcje wykonują się współbieżnie, to zwykle (w zależności od poziomu izolacji) nie widzą wprowadzanych przez siebie zmian. Poziom izolacji w bazach danych jest zazwyczaj konfigurowalny i określa, jakich anomalii możemy się spodziewać przy wykonywaniu transakcji. Przykładowe typy izolacji to (model ANSI)[2]:
  1. read uncommitted – jedna transakcja może odczytywać wiersze, na których działają inne transakcje (najniższy poziom izolacji)
  2. read committed – transakcja może odczytywać tylko wiersze zapisane
  3. repeatable read – transakcja nie może czytać ani zapisywać na wierszach odczytywanych lub zapisywanych w innej transakcji
  4. serializable (szeregowalne) – wyniki współbieżnie realizowanych zapytań muszą być identyczne z wynikami tych samych zapytań realizowanych szeregowo (pełna izolacja).

Nie zawsze wszystkie poziomy są implementowane przez producentów; czasami producent wprowadza własne rozwiązania. Na przykład silnik Oracle wspiera tylko izolacje read commited i serializable, a w IDS istnieje poziom izolacji cursor stability, którego nie ma w modelu ANSI.

  • Trwałość danych oznacza, że system potrafi uruchomić się i udostępnić spójne, nienaruszone i aktualne dane zapisane w ramach zatwierdzonych transakcji, na przykład po nagłej awarii zasilania.

Zobacz też[edytuj]

Uwagi

  1. Niekiedy spotyka się kalkowe tłumaczenie z języka angielskiego: „atomowość” (rzadziej: „atomiczność”).

Przypisy

  1. Mike Keith: Pro JPA 2. Apress, 2013, s. 48–49. ISBN 978-1-4302-4926-9.
  2. Information Technology – Database Language SQL (ang.). Carnegie Mellon University. [dostęp 2015-01-22].