Uproszczoną klasyczną transakcję bazy danych można wyświetlić jako:
- czytanie M. pozycji
- wykonanie pewnych obliczeń na podstawie tych odczytów
- zapisywanie niektórych wyników N na podstawie tych obliczeń, które mogą obejmować pierwotnie odczytane elementy.
Podczas wykonywania tych transakcji (jednocześnie) należy zachować właściwości ACID .
Dokładnie takie same wymagania (N aktualizacji na podstawie M czyta transakcyjnie) istnieją w innych współbieżnych systemach innych niż DBMS.
Chciałbym dowiedzieć się, jakie algorytmy istnieją do wykonywania / rozwiązywania tych transakcji oraz jakie są względne mocne i słabe strony tych algorytmów. Czy mógłbyś polecić trochę lektury? Mogą to być książki lub referencje / tutoriale online.
Wyjaśnienie:
Na przykład naiwnym algorytmem może być każda transakcja, która przyjmuje jedną globalną blokadę, w efekcie wymuszając pojedyncze wątki i usuwając współbieżność. Nieco bardziej skomplikowanym algorytmem byłyby blokady odczytu / zapisu poszczególnych elementów z uporządkowaniem w celu uniknięcia zakleszczenia). Itp. Czy istnieje dobre źródło dokumentujące różne algorytmy rozwiązywania tego problemu. Przydałaby się nawet odpowiedź, która wskazywała tylko na jeden algorytm z jego siłą i słabościami.