Skip to main content

Model ACID dla systemów zarządzania bazami danych

"Transakcyjność – co to właściwie znaczy w 2019?" Maciej Próchniak, TouK (Może 2025)

"Transakcyjność – co to właściwie znaczy w 2019?" Maciej Próchniak, TouK (Może 2025)
Anonim

Model tworzenia bazy danych ACID jest jedną z najstarszych i najważniejszych koncepcji teorii baz danych. Określa cztery cele, które każdy system zarządzania bazami danych musi osiągnąć: atomowość, spójność, izolacja i trwałość. Relacyjna baza danych, która nie spełnia żadnego z tych czterech celów, nie może być uznana za wiarygodną. Baza danych, która posiada te cechy, jest uznawana za zgodną z ACID.

Określone ACID

Przyjrzyjmy się dokładnie każdej z tych cech:

  • Atomowość stwierdza, że ​​modyfikacje bazy danych muszą być zgodne z zasadą "wszystko albo nic". Każda transakcja jest nazywana "atomową". Jeśli jedna część transakcji się nie powiedzie, cała transakcja zakończy się niepowodzeniem. Bardzo ważne jest, aby system zarządzania bazami danych utrzymywał atomową naturę transakcji pomimo dowolnego systemu DBMS, systemu operacyjnego lub awarii sprzętu.
  • Konsystencja stwierdza, że ​​tylko poprawne dane zostaną zapisane w bazie danych. Jeśli z jakiegoś powodu zostanie wykonana transakcja naruszająca zasady spójności bazy danych, cała transakcja zostanie wycofana, a baza danych zostanie przywrócona do stanu zgodnego z tymi regułami. Z drugiej strony, jeśli transakcja zostanie pomyślnie wykonana, pobierze bazę danych z jednego stanu zgodnego z regułami do innego stanu, który jest również zgodny z regułami.
  • Izolacja wymaga, aby wielokrotne transakcje odbywające się w tym samym czasie nie wpływały na realizację drugiej strony. Na przykład, jeśli Joe wystawi transakcję przeciwko bazie danych w tym samym czasie, kiedy Mary wyemituje inną transakcję, obie transakcje powinny działać w bazie danych w sposób izolowany. Baza danych powinna albo wykonać całą transakcję Joego przed wykonaniem Mary's, albo odwrotnie. Zapobiega to sytuacji, w której transakcja Joe nie odczytuje danych pośrednich, które są efektem ubocznym części transakcji Mary, która ostatecznie nie zostanie zatwierdzona do bazy danych. Zauważ, że właściwość izolacji nie zapewnia, która transakcja zostanie wykonana jako pierwsza - tylko że transakcje nie będą się ze sobą ingerować
  • Trwałość zapewnia, że ​​każda transakcja zatwierdzona do bazy danych nie zostanie utracona. Trwałość jest zapewniona dzięki wykorzystaniu kopii zapasowych i dzienników transakcji, które ułatwiają przywrócenie zatwierdzonych transakcji pomimo wszelkich kolejnych awarii oprogramowania lub sprzętu.

Jak działa ACID w praktyce

Administratorzy baz danych używają kilku strategii wymuszania ACID.

Jednym z nich jest wymuszanie atomowości i trwałości rejestracja z wyprzedzeniem (WAL), w którym szczegóły transakcji są najpierw zapisywane w dzienniku, który zawiera zarówno informacje o powtórzeniu, jak i cofnięciu. Zapewnia to, że w przypadku awarii bazy danych, baza danych może sprawdzić dziennik i porównać jego zawartość ze stanem bazy danych.

Inną metodą używaną do adresowania atomowości i wytrzymałości jest shadow-paging, w którym strona cienia jest tworzona, gdy dane mają zostać zmodyfikowane. Aktualizacje zapytania są zapisywane na stronie cienia, a nie w rzeczywistych danych w bazie danych. Sama baza danych jest modyfikowana tylko po zakończeniu edycji.

Inna strategia nazywa się zatwierdzanie dwufazowe protokół, szczególnie przydatny w rozproszonych systemach baz danych. Ten protokół oddziela żądanie modyfikacji danych na dwie fazy: fazę zatwierdzenia żądania i fazę zatwierdzenia. W fazie żądania wszystkie DBMS w sieci, których dotyczy transakcja, muszą potwierdzić, że je otrzymały i mają zdolność do przeprowadzenia transakcji. Po otrzymaniu potwierdzenia od wszystkich odpowiednich SZBD, kończy się faza zatwierdzenia, w której dane są faktycznie modyfikowane.