BD-2st-1.2-w10.tresc-1.1-Slajd2
Ziarnistość blokad
Jak już wspomnieliśmy na zakończenie poprzedniego wykładu, nie istnieje żaden mechanizm blokowania, realizowany na poziomie blokad rekordów, który gwarantowałby rozwiązanie problemu rekordów „duchów”. Rozwiązanie tego problemu wymaga wprowadzenia mechanizmu, który pozwalałby zakładać blokady na różnych poziomach organizacji danych – innymi słowy, pozwalałby zakładać blokady o różnej ziarnistości (baza danych, relacja, strona, rekord). Z drugiej strony może to rodzić pewien problem. Załóżmy, że dana jest relacja Pracownicy i że założyliśmy blokadę dla odczytu rekordu opisującego pracownika o nazwisku „Dziandziak”. Z drugiej strony, inny użytkownik postanowił założyć blokadę do zapisu całej relacji Pracownicy , gdyż zamierza uaktualnić adres zamieszkania pracownika o nazwisku „Nowak”. Czy te dwie blokady są kompatybilne czy tez nie? Rozwiązaniem tego problemu jest połączenie mechanizmu blokad fizycznych, zakładanych na poziomie rekordów (krotek) bazy danych, z blokadami intencyjnymi, nazywanymi również blokadami predykatowymi, zakładanymi na poziomie bazy danych i relacji. Algorytm, który łączy te dwa typy blokad nazywamy hierarchicznym algorytmem blokowania dwufazowego. Wykorzystuje on immanentną cechę organizacji bazy danych jaką jest hierarchia ziarnistości danych. Zauważmy, że baza danych posiada strukturę drzewa. Korzeniem tej struktury jest baza danych, która składa się ze zbioru relacji, które, z kolei, składają się ze zbioru krotek.
Hierarchiczna struktura bazy danych pozwala na stosunkowo efektywną implementację hierarchicznego algorytmu blokowania.