Professional Documents
Culture Documents
Rozdzial 1
Rozdzial 1
Rozdzial 1
aktualizowania danych, za pomoc odpowiedniego jzyka nazywanego jzykiem zapyta (query language)
lub jzykiem operowania danymi (data - manipulation language).
3. Zapewnienia moliwoci przechowywania ogromnej iloci danych, mierzonej w gigabajtach lub nawet
wikszych jednostkach, przez dugi czas, chronic je przed przypadkowym, lub niepowolanym dostpem, a
take umoliwiajc efektywny dostp do danych z poziomu jzyka zapyta i operacji na danych.
4. Sterowania jednoczesnym dostpem do danych przez wielu uytkownikw, z zapewnieniem bezkolizyjnoci
oraz ochrony danych przed przypadkowym uszkodzeniem.
21
2. Informacje dotyczce rejsu: miejsce odlotu, port przeznaczenia, czas odlotu i czas przylotu oraz na przykad
typ samolotu.
3. Dane o dostpnoci biletw i wariantach cen.
Typowe zapytania dotycz rejsw midzy okrelonymi portami w okrelonym terminie, dostpnoci i
cenach odpowiednich miejsc. Rutynowe aktualizacje obejmuj rezerwacj rejsu dla klienta, przydzia miejsca i
okrelenie upodoba kulinarnych. Systemy musz zapewnia jednoczesny dostp do danych w dowolnej chwili
dla wielu agencji. Nie mog rwnie dopuci do tego, by na przykad dwie agencje przydzieliy to samo
miejsce w tym samym rejsie, ani do utraty informacji w przypadku usterek systemu komputerowego.
Systemy bankowe
Wrd elementw danych wyrnia si: nazwiska i adresy klientw, konta, kredyty i bilans na koncie oraz
powizanie klienta z jego kontem i kredytem, tzn. autoryzowanie podpisem danego konta. Wrd operacji
dominuj zapytania o bilans na koncie i, jeszcze czstsze od nich, aktualizacje dotycz ce wpyww i wypat z
kont.
Podobnie jak w przypadku systemw rezerwacji lotniczych, tak i tutaj naley oczekiwa, e wielu
klientw i urzdnikw bdzie jednoczenie korzysta z danych i aktualizowa je (poprzez bankomaty). Tego
typu transakcje nie mog by pod adnym pozorem utracone, tutaj bdw si nie toleruje. Na przykad, w
chwili gdy bankomat dokona wypaty, system musi ten fakt zanotowa, nawet jeli w tym momencie nastpi
awaria zasilania. Tak samo jest niedopuszczalne, eby zaksigowa wypat, a nie wypaci pienidzy, bo akurat
zasilanie zostao przerwane. Poprawna obsuga podobnych operacji nie jest atwa ani oczywista i naley jej
implementacj uzna za jedno z najbardziej znaczcych osigni architektury systemu DBMS.
Dokumentowanie dziaania przedsibiorstw
Wiele wczesnych wdroe dotyczy dokumentowania dziaalnoci przedsibiorstw, zapisu kadej
sprzeday, wpat i wypat z kont czy te ewidencji pracownikw: ich nazwisk, adresw, pac, jak rwnie
nagrd, podatkw itp. Zapytania dotycz raportowania wysokoci wpyww do kasy czy te wypat
pracowniczych. Kada sprzeda, zakup, rachunek, patno, zwolnienie lub zatrudnienie wyraaj si przez
aktualizacj danych.
Pierwsze systemy DBMS, powstae z systemw plikw, wymagay od uytkownika tworzenia obrazw
danych zgodnych z ich struktur w bazie. W tych systemach uywano kilku rnych modeli danych do opisu
struktury danych w bazie, prym wiody tutaj modele hierarchiczny, inaczej drzewiasty, oraz sieciowy, nazywany
take grafowym. Ten drugi mia nawet standard utworzony pod koniec lat szedziesitych w raporcie komitetu
CODASYL
ZZ 1. DZIEDZINA SYSTEMW BAZ DANYCH
(Komitet ds. systemw i jzykw danych (Committee on Data System and languages)~. W podrozdziale 2.7
Czytelnicy bd mieli sposobno pozna oba te modele: hierarchiczny i sieciowy, mimo e obecnie maj one
ju tylko historyczne znaczenie.
Kopot z uywaniem pierwszych modeli i systemw polega na tym, e nie daway one moliwoci
korzystania z jzykw zapyta wysokiego poziomu. Na przykad jzyk opracowany przez CODASYL
dostarcza instrukcje poruszania si pomidzy elementami danych w postaci grafa wskanikw do nich. Trzeba
byo nie lada wysiku, aby napisa w tym jzyku program, obsugujcy nawet bardzo proste zapytania.
" CODASYL Data Base Task Group Apil 1971 Report, ACM, New York.
"` Codd E.F.: A relational model for (arge shared data banks. Comna. ACH, 13 : 6, s. 377
387.
1.1. EWOLUCJA SYSTEMW BAZ DANYCH 23
W nagwkach kolumn wystpuj trzy atrybuty: nr konta, bilans oraz typ. Pod nazwami atrybutw znajduj si
wiersze nazywane knotkami. Zostay wypisane dwie knotki, wielokropki umieszczone pod nimi sugeruj, e jest
o wiele wicej knotek, po jednej dla kadego konta w banku. Pierwsza knotka informuje o tym, e na koncie o
numerze 12345 zgromadzono tysic dolarw i e jest to rachunek oszczdnociowy. Dane z drugiej knotki
dotycz konta rozliczeniowego o numerze 67890 z bilansem w wysokoci 2846,92$.
Zamy, e chcemy z bazy danych otrzyma informacj o biecym bilansie konta nr 67890. Zapytanie w
SQL wyglda nastpujco:
SELECT bilans EROM Konta WHERE nr konta = 67890;
W nastpnym przykadzie pokaemy, w jaki sposb zapyta o konta
oszczdnociowe z bilansem ujemnym:
SELECT nr konta EROM Konta
WHERE typ = `oszczdnociowe' AND bilans < 0;
Nie oczekujemy oczywicie, e podanie dwch przykadw wystarczy, aby Czytelnicy stali si ekspertami
w zakresie programowania w SQL. Powinno to jednak umoliwi zrozumienie istoty zapisu instrukcji selectfromwhere tego jzyka. W zasadzie w przykadach tych zleca si systemowi baz danych przeprowadzenie
nastpujcych operacji:
1. Sprawdzenie wszystkich knotek relacji Konta, wymienionej w klauzuli EROM.
2. Wyszukanie wszystkich tych knotek, ktre speniaj warunek opisany w klauzuli WHERE.
3. Sformuowanie odpowiedzi zawierajcej wybrane knotki z uwzgldnieniem atrybutw wskazanych w
klauzuli sELECT.
W praktyce system musi zapewni optymalizacj" zapytania i znale wydajny sposb znalezienia odpowiedzi,
nawet jeli relacje, ktrych dotyczy zapytanie, s bardzo obszerne.
0
Najwczeniej na rynku pojawiy si relacyjne i przedrelacyjne" systemy DBMS, produkowane w firmie
IBM. Poza tym, aby tworzy i sprzedawa relacyjne systemy DBMS, specjalnie powstaway nowe firmy.
Niektre z nich znajduj si obecnie wrd najwikszych producentw oprogramowania na wiecie.
24 I DZIEDZINA SYSTEMW BAZ DANYCH
Najwiksze wspczesne bazy danych potrzebuj czego wicej ni dyski. Urzdzenia trzeciego poziomu, z
ktrych kade moe przechowa terabajt danych, wymagaj duszego czasu dostpu do wybranego elementu,
ni ma
1.2. ARCHITEKTURA SYSTEMU DBMS 2S
jce przy projektowaniu DBMS, przeznaczonych do obsugi wielkich zasobw danych i szybkiego
przetwarzania zapyta. Jednak technologia implementowania DBMS nie jest tematem wiodcym w naszej
ksice, dlatego te skoncentrujemy uwag na tym, w jaki sposb projektowa bazy danych i korzysta z nich w
efektywny sposb.
umoliwia odnalezienie waciwej krotki relacji, majcej zadane wartoci pewnych atrybutw. Na przykad
relacja obejmujca numery kont i bilans moe mie indeks zaoony na numerach kont, wwczas odnalezienie
bilansu konta o podanym numerze odbywa si byskawicznie. Indeksy s przechowywane razem z danymi, a
informacja o tym, ktry atrybut ma zaoone indeksy, naley do metadanych.
Jak s zaimplementowane indeksy
Z wykadu dotyczcego struktur danych Czytelnicy zapewne dowiedzieli si, e bardzo skutecznym sposobem
tworzenia indeksu s tablice haszowania. Byy one szeroko stosowane we wczesnych systemach DBMS.
Obecnie najbardziej rozpowszechnion struktur danych s B-drzewa, gdzie B" oznacza balanced zrwnowaony". B-drzewo stanowi uoglnienie zrwnowaonego binarnego drzewa przeszukiwa. Rnica
polega na tym, e kady wierzchoek drzewa binarnego ma co najwyej dwch potomkw, a wierzchoki Bdrzewa mog mie ich wicej. Z zaoenia B-drzewo jest zapisywane na dysku, zamiast w pamici operacyjnej,
i jest tak projektowane, aby jeden wierzchoek zajmowa cay jeden blok na dysku. Poniewa w typowym
systemie bloki dyskowe zajmuj okoo 2I2 bajtw (4096 bajtw), wic daje to sposobno zapisania setek
wskanikw do potomkw w jednym bloku B-drzewa. Std te przeszukiwanie B-drzewa rzadko kiedy wymaga
wicej ni trzech dostpw do dysku.
Rzeczywisty koszt przeszukiwania dysku w zasadzie jest proporcjonalny do liczby dostpw do dysku.
Std te przeszukiwania B-drzewa, ktre zwykle polegaj na sprawdzeniu trzech blokw na dysku, s znacznie
bardziej wydajne ni przeszukiwania drzew binarnych, ktre wymagaj zazwyczaj odszukania wierzchokw
znajdujcych si w wielu ronych blokach na dysku. Rnica midzy B-drzewami a drzewami binarnymi jest
jednym z wielu przykadw tego, e struktury danych bardzo odpowiednie dla danych przechowywanych na
dysku s zupenie inne ni struktury danych uywane w algorytmach operujcych wycznie na danych,
znajdujcych si w pamici operacyjnej.
Na rysunku 1.1 mona take dostrzec modu zarzc~dzania pami4cict, ktry ma za zadanie wybiera
waciwe dane z pamici i w razie potrzeby dostosowa je do wymaga moduw z wyszych poziomw
systemu. Wida tam take skadow, ktr nazwalimy moduem przetwarzania zapyta, mimo e taka nazwa
moe wprowadza w bd, bowiem obsuguje on nie tylko zapytania, ale rwnie aktualizacje danych oraz
metadanych. Jego zadanie polega na znalezieniu najlepszego sposobu wykonania zadanych operacji i na
wydaniu polece do moduu zarzdzania pamici, ktry je wykona.
Modus zarzcidzania transakcjami odpowiada za spjno systemu. Musi on gwarantowa, e kilka
jednoczenie przetwarzanych zapyta nie bdzie
28
1. DZIEDZINA SYSTEMW BAZ DANYCH
sobie wzajemnie przeszkadza oraz e adne dane nie zostan utracone, nawet jeli nastpi awaria systemu.
Wspdziaa on z moduem obsugi zapyta, poniewa musi mie dostp do szczegw dotyczcych tych
danych, na ktrych przetwarza si biece zapytania (w celu uniknicia konfliktw). Moe si zdarzy, e cz
przetwarzania bdzie musiaa zosta opniona, aby nie powsta konflikt.
U gry rysunku 1.1 mona zobaczy trzy rodzaje wej do systemu DBMS: 1. Zapytania. S to pytania o dane.
Mog one by sformuowane dwojako:
a) Poprzez interfejs zapyta bezporednich. Na przykad relacyjny DBMS umoliwia wprowadzenie zapyta
w SQL, ktre s nastpnie przekazywane do moduu przetwarzania zapyta, ktry z kolei tworzy
odpowied.
b) Poprzez interfejsy programw uytkowych. Typowy DBMS umoliwia programicie utworzenie programu
uytkowego, ktry poprzez wywoania procedur DBMS tworzy zapytania do bazy danych. Na przykad
agent posugujcy si systemem rezerwacji lotniczych uruchamia program uytkowy, ktry tworzy
zapytanie do bazy danych dotyczce dostpnoci rejsw. Zapytania mog by formuowane dziki
specjalizowanemu interfejsowi, ktry na og skada si z formularzy z pustymi polami, przeznaczonymi
do wypenienia konkretnymi danymi, np. nazw miasta, terminem itp. Nie mona w ten sposb zada
zupenie dowolnego pytania, ale jest znacznie atwiej sformuowa typowe zapytanie poprzez taki interfejs, ni formuowa zapytanie bezporednio w jzyku SQL.
2. Aktualizacje. S to operacje zmiany danych. Tak jak w przypadku zapyta mona je wprowadza do systemu
poprzez interfejsy zapyta bezporednich lub poprzez interfejsy programw uytkowych.
3. Modyfikacje schematu. Polecenia tego rodzaju wydaje specjalnie uprawniona osoba nazywana
administratorem bazy danych, ktrej wolno zmienia schemat bazy danych i tworzy nowe bazy danych. Na
przykad, jeli agencje rzdowe wezw banki do udokumentowania wypaty odsetek zgodnie z numerami
ubezpieczenia spoecznego klientw, to bank moe zada dodania do relacji opisujcej klientw nowego
atrybutu o nazwie nrUbezpieczenia.
efektywnoci. Modu zarzdzania pamici skada si z dwch czci: moduu zarzdzania buforami oraz
moduu zarzdzania plikami.
1. Modul zarzdzania plikami przechowuje dane o miejscu zapisania plikw na dysku i na polecenie moduu
zarzdzania buforami przesya zawarto bloku lub blokw, gdzie jest zapamitany dany plik. Prosz sobie
przypomnie, e dyski zazwyczaj s zorganizowane w postaci blokw dyskowych, czyli spjnych obszarw o
stosunkowo duej pojemnoci 2'2 lub 2'4 bajtw (od 4000 do 16000 bajtw).
2. Modu zarzdzania buforami obsuguje pami operacyjn. Modu zarzdzania plikami przekazuje bloki
danych z dysku, a modu zarzdzania buforami wybiera w pamici operacyjnej strony, ktre zostan
przydzielone dla wybranych blokw. Blok z dysku moe by przez chwil przechowany w pamici
operacyjnej, ale musi zosta przesany z powrotem na dysk, gdy tylko pojawi si potrzeba zapisania w to
miejsce pamici operacyjnej innego bloku. Powrt bloku na dysk moe nastpi rwnie w wyniku dania
moduu obsugi transakcji (zob. p. 1.2.4).
zarzdzania zapytaniami musi okreli dla tego zapytania plan, ktrego wykonanie doprowadzi do utworzenia
poprawnej odpowiedzi. Im mniej jest krokw w trakcie tworzenia odpowiedzi, tym plan jest lepszy. W zasadzie
kosztowne s te operacje, ktre prowadz do kopiowania blokw dysku do pamici lub kopiowania stron
pamici operacyjnej na dysk, angaujce modu zarzdzania pamici. Z tego powodu warto przy okrelaniu
kosztu planu zapytania bra pod uwag tylko operacje przesyania danych midzy pamiciami operacyjn a
pomocnicz.
Utworzenie odpowiedzi wymaga przeszukania relacji Klienci w celu odnalezienia numeru polisy nalecej
do Anny Nowak (zakadamy, e w bazie wystpuje tylko jedna klientka o takim nazwisku, jednak w praktyce
moe ich by wicej). Potem trzeba przeszuka relacj Konta i odnale wszystkie konta o waciwym numerze
polisy, a nastpnie wydrukowa bilanse z tych kont.
Prosty, ale kosztowny plan polega na przejrzeniu wszystkich krotek (wierszy) relacji Klienci, a do
odnalezienia tej, zawierajcej nazwisko Anna Nowak. redni koszt takiej operacji wymaga przejrzenia poowy
krotek zanim napotkamy waciw. Poniewa bank ma wielu klientw, wic tabela Klienci zajmuje duo
blokw dysku i koszt bdzie wysoki. A odnalezienie numeru polisy Anny Nowak nie koczy zadania. Teraz
trzeba przeglda krotki relacji Konta i wybra te wszystkie, w ktrych wystpuje znaleziony uprzednio numer
polisy. W typowym banku jest wiele kont, a zatem relacja Konta rwnie musi zajmowa wiele blokw dysku.
Sprawdzenie ich wszystkich musi te by kosztowne.
Jeeli jednak zosta zaoony indeks dla relacji Klienci na atrybucie nazwiska, to istnieje lepszy plan.
Zamiast przeszukiwa ca relacj Klienci skorzystamy z indeksu, ktry wskae blok, zawierajcy krotk
waciw dla Anny Nowak. Jak ju wspomniano w p. 1.2.1, odnalezienie waciwego bloku za pomoc
typowego indeksu, zbudowanego jako B-drzewo, wymaga przejrzenia trzech blokw indeksu. Jeszcze jeden
dostp do dysku pozwala otrzyma krotk odpowiadajc Annie Nowak.
Oczywicie nadal pozostaje do zrobienia drugi krok: znalezienie kont z odpowiednim numerem polisy w
relacji Konta. Zazwyczaj wymaga to wielokrotnego dostpu do dysku. Jeli jednak dla relacji Konta zaoono
indeks na atrybucie numer polisy, to moemy wedug tego indeksu przeszukiwa tylko te bloki, w ktrych
wystpuj poszukiwane krotki, zawierajce odnaleziony uprzednio numer polisy. Trzeba wwczas wykona 2
lub 3 operacje dyskowe, przegldajc indeks, podobnie jak w przypadku indeksowanego dostpu do relacji
Klienci. Jeli wszystkie potrzebne krotki sw rnych blokach dysku, to trzeba dosta si do kadego z tych
blokw. Ale prawdopodobnie jedna oso
" W rzeczywistoci poniewa kade przeszukania B-drzewa wymaga przjrzenia korzeuia, wic ten blok
przewanie jest na stalce w pamici operacyjnej, zajmujc jedn stron pamici. Std te tak naprawd
skorzystanie z tego rodzaju indeksu wymaga zazwyczaj tylko dwch operacji dostpu do dysku.
1.2. ARCHITEKTURA SYSTEMU DBMS 3 1
ba nie ma zbyt wielu kont, wic cae dziaanie sprowadzi si pewnie do niewielu operacji dyskowych. Jeli
zostay zaoone oba indeksy, to mona utworzy odpowied na zapytanie, angaujc w to od 6 do 10 operacji
dostpu. Jeli ktry z nich, albo aden, nie istnieje i musimy korzysta z gorszych planw zapyta, to operacj i
dostpu do dysku moe by potrzebnych setki, a nawet tysice, poniewa trzeba sprawdza wwczas ca,
obszern relacj.
0
Na podstawie przykadu 1.2 mona odnie wraenie, e optymalizacja zapyta polega wycznie na
korzystaniu z indeksw, o ile takie istniej. Jednak w rzeczywistoci takie procedury s duo bardziej zoone.
Skomplikowane zapytanie umoliwia na przykad zmian kolejnoci wykonywania operacji, co z kolei stwarza
moliwo utworzenia wielu planw wykonania takiego zapytania, ich liczba moe rosn w stosunku do
wielkoci zapytania nawet wykadniczo. Czsto mamy do wyboru dwa indeksy i trzeba wybra ktry z nich.
Rozwizania na temat implementacji tego wanego elementu DBMS s jednak ju poza zakresem naszej ksiki
z warunkw spjnoci dla bazy danych linii lotniczych okrela, e jedno miejsce w konkretnym rejsie nie
zostanie przydzielone dwm rnym klientom. Taki warunek moe zosta naruszony tylko na krciutk chwil
podczas przetwarzania transakcji, gdy przydziela si miejsca dla pasaerw, ale modu zarzdzania transakcjami
musi zagwarantowa, e po zakoczeniu przetwarzania transakcji baza danych spenia wszystkie warunki
niesprzecznoci.
Izolacja (isolation). Gdy dwie transakcje s przetwarzane jednoczenie, ich dziaania nie mog na siebie
wzajemnie wpywa. To oznacza, e w wyniku jednoczesnego dziaania dwch transakcji nie moe zdarzy si
nic, co nie stao by si, gdyby dziaay jedna po drugiej, sekwencyjnie. Na przykad, jeli dwie agencje lotnicze
sprzedaj bilety na ten sam rejs, a zostao tylko jedno miejsce, to tylko jedno danie powinno zosta obsuone,
a drugie nie. Jednoczesno przeprowadzania transakcji nie moe spowodowa sprzeday tego samego biletu
dwm rnym osobom.
Trwalo (durability). Jeli transakcja si zakoczy, to jej wynik nie moe zosta utracony z powodu awarii
systemu, nawet jeli awaria nastpuje natychmiast po zakoczeniu transakcji.
Sposb implementowania transakcji, ktry zapewnia zachowanie waciwoci ACID, moe by tematem
zupenie oddzielnej ksiki i nie zamierzamy nawet prbowa pomieci tutaj stosownych treci. W czci 7.2
opisujemy natomiast w jaki sposb, w jzyku SQL, okreli transakcje i waciwe dla nich operacje oraz jakie
gwarancje uzyskuje programista, ktry korzysta z moliwoci grupowania operacji w transakcje. Poza tym
bardzo skrtowo przedstawimy tam popularne rozwizania techniczce zapewniajce transakcjom waciwoci
ACID.
Granulacja blokad
Systemy DBMS rni si rozmiarami elementw danych, ktre s poddawane blokowaniu. Na przykad mona
zastosowa blokad na poziomie pojedynczych krotek, poszczeglnych blokw dysku lub nawet na poziomie
caych relacji. Im wiksze s elementy, ktre blokujemy, tym bardziej jest prawdopodobne, e jedna transakcja
bdzie musiaa czeka na inn, nawet jeli nie potrzebuj dostpu do tych samych danych. Jednake, im
mniejsze s blokowane elementy, tym wikszy i bardziej skomplikowany musi by mechanizm obsugi blokad.
Blokady
Najczstsz przyczyn nierozcznoci transakcji jest konieczno czytania lub zapisu tych samych danych
w bazie danych. Na przykad, jeli dwie
1.2. ARCHITEKTURA SYSTEMU DBMS 3 3
transakcje prbuj jednoczenie zapisa nowe wartoci bilansu na tym samym koncie, to jedna z transakcji
zniszczy zapis wykonany przez drug z nich. Dlatego w wikszoci DBMS modul zarzdzania transakcjami
potrafi zablokowa element, ktrego dotyczy wykonywana wanie transakcja. Po zaloeniu blokady dane s
niedostpne dla innych transakcji. Mechanizm blokad w naszym przykadzie poskutkuje w ten sposb, e
transakcja, dla ktrej zostanie zablokowana krotka z bilansem konta 12345, bdzie moga odczytywa wartoci
tej krotki i zmienia je, zanim druga transakcja uzyska dostp do tej krotki. Druga transakcja uzyska zatem
dostp do nowych wartoci bilansu, co oznacza, e transakcje nie przeszkadzaj sobie.
Logi
Modul zarzdzania transakcjami dokumentuje wszystkie operacje, tzn. rozpoczcie kadej transakcji,
zmiany w bazie danych dokonane przez transakcje oraz zakoczenie transakcji. Zapis taki nazywa si logiem.
Log jest przechowywany w pamici stalej, tzn. na noniku danych takim jak dysk, ktry zapewni przetrwanie
danych w przypadku awarii zasilania. Zasadnicze przetwarzanie transakcji odbywa si w ulotnej pamici
operacyjnej, ale dane o przebiegu jej wykonania s natychmiast zapisywane na dysku. Log wszystkich operacji
jest wanym czynnikiem zapewniajcym systemowi trwao.
Zatwierdzanie transakcji
Z powodu koniecznoci zagwarantowania transakcjom niepodzielnoci i trwaloci s one najpierw
wstpnie przetwarzane, co oznacza, e aktualizacje s wyliczane, ale nie s zapisywane w bazie danych. W
chwili gdy transakcja koczy dziaanie, jest gotowa do zatwierdzenia, zmiany s kopiowane do logu. Log jest
pierwszym zapisem dokonanym na dysku przez transakcj. Dopiero potem nastpujaktualizacje danych.
Nawet jeli awaria systemu nastpi w trakcie przetwarzania operacji, to po przywrceniu funkcjonowania
mona przeczyta logi i stwierdzi, ktre zmiany trzeba jeszcze wprowadzi do bazy danych. Jeli awaria
systemu nastpi przed zapamitaniem logu, trzeba powtrzy ca transakcj, co zagwarantuje, e na przykad
nie przydzielono dwukrotnie tego samego miejsca w samolocie lub nie obciono dwukrotnie konta t sam
wypat.
W najprostszych systemach typu klient/serwer cay DBMS stanowi serwer, a tylko interfejs zapyta
wspdziaa z uytkownikiem przy definiowaniu zapytania i przesya je jako klient do obsugi serwerowi. Na
przykad relacyjne systemy baz danych zlecenia klienta do serwera przedstawiaj w formie programw w
jzyku SQL. Serwer bazy danych przesya nastpnie odpowied w postaci tabeli lub formularza do klienta.
Zwizek midzy klientem a serwerem moe si bardziej komplikowa, szczeglnie jeli odpowiedzi s
ekstremalnie wielkie. Wicej na ten temat bdzie mona dowiedzie si po przeczytaniu p. 1.3.3. Od kiedy
dostp do serwera, z powodu wielu jednoczenie dziaajcych uytkownikw baz danych, stal si wskim
gardem, zarysowaa si tendencja rozbudowy zada klienckich.
Obecnie w dziedzinie baz danych obserwuje si wiele nowych prdw, ktre powoduj zmiany kierunkw jej
rozwoju. Niektre z nich s zwizane z nowymi technologiami, takimi jak na przykad programowanie
zorientowane obiektowo, wizy i wyzwalacze lub dane multimedialne, albo ze zjawiskami, ktre cakiem
zmieniaj natur DBMS, jak stao si za przyczyn wiatowej sieci WWW. Inne prdy, takie jak hurtownie
danych lub integracja danych, s zwizane z nowymi aplikacjami. W biecej czci przedstawimy gwne
trendy rozwoju przyszych systemw baz danych.
zazwyczaj liczby cakowite i rzeczywiste, wartoci logiczne i znaki, mona tworzy nowe typy pochodne,
korzystajc w tym celu z konstruktorw typw. Zazwyczaj konstruktory umoliwiajtworzenie:
1. Rekordw (record structures). Zalmy, e dane s typy Tl, T2, ..., T, a odpowiadajce im pola (nazywane w
Smalltalku zmiennymi indywidualnymi) maj nazwy f~, fZ, ..., fn. Mona wwczas utworzy nowy typ przez
struktur rekordu zloonego z n skadowych. I-ta skladowa jest typu T;, a mona si do niej odwola przez
nazw f. W jzykach C i C++ rekordy s deklarowane sowem struct".
2. Kolekcji (collection types). Z danego typu T mona tworzy typy pochodne, stosujc w tym celu operator
kolekcji. W rnych jzykach operatory kolekcji rni si, ale cz z nich, na przykad tablice, li sty i
zbiory, jest charakterystyczna dla wielu jzykw. Oznacza to, e gdy typ cakowity jest okrelony jako
bazowy, to mona tworzy na przykad nastpujce kolekcje: tablica typu calkowitego", lista typu
calkowitego" lub zbir typu calkowitego".
3. Referencje (references types). Referencja (odniesienie) do typu T jest typem, ktrego wartoci s odpowiednie
do przechowywania wartoci typu T. W jzykach C i C++ referencja jest wskanikiem" do wartoci, to
znaczy jest to miejsce, w ktrym przechowywany jest adres wirtualny wskazywanej wartoci. Model
wskanikw zazwyczaj wystarcza do zrozumienia referencji. Jednak w systemach baz danych, tam gdzie da ne przechowuje si na wielu dyskach i czsto bywaj one rozproszone pomidzy wiele komputerw, pojcie
referencji jest bardziej zoone ni wskanika. Obejmuje ono wwczas rwnie systemow nazw
komputera, numer dysku, numer bloku, a w kocu pozycj w bloku, gdzie jest przechowywana wskazywana
warto.
Oczywicie operatory kolekcji i rekordw mona wielokrotnie na siebie nakada i tworzy w ten sposb
coraz bardziej zoone typy. Na przykad mona zdefiniowa rekord, ktrego pierwsza skadowa, o nazwie
klient, jest typu znakowego, druga natomiast jest zbiorem elementw typu cakowitego (czyli typem
pochodnym) i nazywa si konta. Taki typ jest bardzo odpowiedni przy wizaniu informacji o klientach i
numerach ich kont bankowych.
Klasy i obiekty
Klasa stanowi polczenie typu oraz jednej lub kilku funkcji albo procedur, (nazywanych
metodami), ktre mona wykonywa na obiektach danej klasy. Obiekty klasy s albo wartociami
danego typu (tzw. obiekty niemutowalne), albo zmiennymi o wartociach danego typu (tzw. obiekty
mutowalne). Na przykad, jeli zdefiniujemy klas C, ktrej typem jest zbir wartoci cakowitych, to f
2, S, 7) bdzie niemutowalnym obiektem klasy C, podczas gdy
3 C) 1. DZIEDZINA SYSTEMW BAZ DANYCH
zmienna s moe otrzyma typ C, a tylko jej chwilowa warto bdzie rwna konkretnemu zbiorowi {2, 5, 7}.
Identyfikator obiektu
Zakada si, e obiektom przysluguje identyfikator (object identity OID). adne dwa obiekty nie mog
mie tego samego identyfikatora, ani aden obiekt nie moe mie wicej ni jednego identyfikatora.
Identyfikatorem jest warto, ktr przyjmuje odniesienie do obiektu. Mona czsto utosamia identyfikator
obiektu ze wskanikiem do obiektu w pamici wirtualnej, ale, jak ju wspomniano przy okazji omawiania typu
odniesienie, identyfkator moe w przypadku bazy danych by czym znacznie bardziej zoonym: cigiem
bitw pozwalajcym na dokadne umiejscowienie obiektu w pamici drugiego lub trzeciego poziomu na jednym
z wielu rnych komputerw. A poza tym, poniewa dane maj charakter trway, wic identyfikator musi mie
waciw warto przez cay czas ich istnienia.
Metody
Z klasami s zazwyczaj powizane pewne funkcje, czsto nazywane metodami. Metoda klasy C ma co
najmniej jeden argument, jest nim obiekt klasy C. Jeli na przyklad zdefiniujemy klas, ktrej typem jest zbir
liczb calkowitych", to mona mie metod sluc do wyliczenia zbioru potgowego danego zbioru, sumy
dwch zbiorw lub tak, ktra zwraca warto logiczn suc do sprawdzenia, czy zbir nie jest pusty.
Abstrakcyjne typy danych
W wielu przypadkach klasy s take abstrakcyjnymi typami danych, co znaczy, e ograniczaj dostp do
obiektu tylko dla metod, ktre s specjalnie dla tych klas zdefiniowane, a z kolei tylko te metody umoliwiaj
aktualizowanie obiektw danej klasy. Taka waciwo nazywa si hermetyzacja. Jej przestrzeganie gwarantuje,
e obiekty danej klasy nie bd zaktualizowane w sposb, ktrego nie zaplanowal implementator. Ocenia si, e
jest to obecnie podstawowy mechanizm tworzenia niezawodnego oprogramowania.
Hierarchie klas
Mona zadeklarowa klas C jako podklas innej klasy D. W takim przypadku klasa C dziedziczy wszystkie
cechy klasy D, to znaczy jej typ i wszystkie funkcje. Jednak klasa C moe mie take dodatkowe elementy.
Mona na przykad definiowa nowe metody dla obiektw klasy C i mog to by zupeknie nowe, dodatkowe
metody albo takie, ktre zastpi metody klasy D. Istniej nawet pewne sposoby rozszerzenia typu klasy D.
Gwny z nich dotyczy rekordw
13. PRZYSZO SYSTEMW BAZ DANYCH 3
i polega na tym, e jeli podstawowym typem klasy D jest rekord, to mona doczy nowe pola, ktre bd
wystpowa tylko w obiektach typu C.
PRZYKAD 1.3
Rozwamy klas obiektw kont bankowych. Nieformalnie moemy opisa typ tej klasy w nastpujcy sposb:
CLASS Konto = {Nrkonta: integer;
bilans: real; waciciel: REF Klient;
Typem klasy Konta jest rekord z trzema polami: calkowitym numerem konta, bilansem typu rzeczywistego oraz
wacicielem, ktry wskazuje na obiekt klasy Klient (innej klasy potrzebnej do obiektowego projektu bazy kont
bankowych, ale ktrej typu nie bdziemy definiowa).
Dlaczego obiekty?
Programowanie zorientowane obiektowo oferuje szereg moliwoci o szczeglnym znaczeniu dla baz danych.
Dziki rozbudowanemu systemowi typw moemy mie do czynienia z formatem danych bardziej naturalnym
ni relacje lub wczeniejsze modele danych. Naley zauway, e model relacyjny ma do ograniczony system
typw. Relacje s zbiorami rekordw, a rekordy s zoone z pl (nazywanych w relacyjnym modelu atry butami), ktrych typ musi nalee do jednego z typw podstawowych.
Dziki klasom i ich hierarchiom mona wielokrotnie korzysta z gotowych fragmentw oprogramowania
znacznie czciej ni wystpuje to w przypadku konwencjonalnych systemw.
Dziki abstrakcyjnym typom danych mona chroni dane przed niewlaciwym uyciem poprzez ograniczenie
dostpu do nich, ktry staje si moliwy tylko za porednictwem pewnych specjalnie w tym celu
zaprojektowanych funkcji.
Mona by zdefiniowa take jakie metody dla tej klasy. Niech to bdzie na przykad metoda
wpata( a: Konto, m: real)
ktra powoduje dodanie do wartoci bilansu obiektu a typu Konto wartoci m.
13. PRZYSZO SYSTEMW BAZ DANYCH 3%
i polega na tym, e jeli podstawowym typem klasy D jest rekord, to mona doczy nowe pola, ktre bd
wystpowa tylko w obiektach typu C.
PRZYKAD 1.3
Rozwamy klas obiektw kont bankowych. Nieformalnie moemy opisa typ tej klasy w nastpujcy sposb:
CLASS Konto = {Nrkonta: integer; bilans: real; waciciel: REF Klient;
Typem klasy Konta jest rekord z trzema polami: cakowitym numerem konta, bilansem typu rzeczywistego oraz
wacicielem, ktry wskazuje na obiekt klasy Klient (innej klasy potrzebnej do obiektowego projektu bazy kont
bankowych, ale ktrej typu nie bdziemy definiowa).
Dlaczego obiekty?
Programowanie zorientowane obiektowo oferuje szereg moliwoci o szczeglnym znaczeniu dla baz danych.
Dziki rozbudowanemu systemowi typw moemy mie do czynienia z formatem danych bardziej naturalnym
ni relacje lub wczeniejsze modele danych. Naley zauway, e model relacyjny ma do ograniczony system
typw. Relacje s zbiorami rekordw, a rekordy s zoone z pl (nazywanych w relacyjnym modelu atry butami), ktrych typ musi nalee do jednego z typw podstawowych.
Dziki klasom i ich hierarchiom mona wielokrotnie korzysta z gotowych fragmentw oprogramowania
znacznie czciej ni wystpuje to w przypadku konwencjonalnych systemw.
Dziki abstrakcyjnym typom danych mona chroni dane przed niewaciwym uyciem poprzez ograniczenie
dostpu do nich, ktry staje si moliwy tylko za porednictwem pewnych specjalnie w tym celu
zaprojektowanych funkcji.
Mona by zdefiniowa take jakie metody dla tej klasy. Niech to bdzie na przykad metoda
wpata( a: Konto, m: real)
ktra powoduje dodanie do wartoci bilansu obiektu a typu Konto wartoci m.
3 g 1. DZIEDZINA SYSTEMW BAZ, DANYCH
W kocu zayczymy sobie kilku podklas klasy Konta. Na przykad konto depozytw terminowych moe
mie dodatkowe pole termin, w ktrym zapisze si dat, po upywie ktrej waciciel bdzie mg dokonywa
wypat. Dla tej podklasy, nazwanej na przykad DepozytTerminowy, mona zdefiniowa metod:
kara (a: DepozytTerminowy)
ktra dla konta a wylicza obcienie karne wynike z tytuu zbyt wczesnej wypaty, a ktre jest moliwe do
wyliczenia na podstawie daty biecej oraz wartoci pola termin obiektu a. Dat biecotrzymuje si z systemu
operacyjnego komputera.
0
Zorientowane obiektowo aspekty baz danych bdziemy omawia bardzo obszernie w niniejszej ksice. W
podrozdziale 2.1 wprowadzimy zorientowany obiektowo jzyk projektowania baz danych ODL (object-oriented
database-design language). Z kolei rozdzia 8 powicilimy zorientowanym obiektowo jzykom zapyta,
zarwno jzykowi OQL, ktry staje si standardem dla baz danych zorientowanych obiektowo, jak i
obiektowym waciwociom jzyka SQL - standardu zapyta w relacyjnych bazach danych.
39
nywalna reguy moe polega na przetworzeniu zapytania o numery telefoniczne pasaerw odwoywanego
rejsu po to, by mona ich byo powiadomi. Bardziej skomplikowane przetwarzanie moe polega na
automatycznej rezerwacji w poczeniach alternatywnych.
Elementy aktywne nie s nowym pomysem. Wystpoway ju w jzyku PL/I pod nazw ON-conditions".
Pojawiay si rwnie przez wiele lat w systemach sztucznej inteligencji, a take maj wiele wsplnego z
demonami" wystpujcymi w systemach operacyjnych. Jednak efektywna implementacja elementw
aktywnych staje si powanym problemem technicznym w przypadkach, gdy trzeba operowa na duych
zbiorach danych lub gdy samych elementw aktywnych zaczyna by duo. Z tego powodu elementy aktywne
nie pojawiy si w systemie DBMS a do pocztku lat dziewidziesitych. Omwimy je w rozdziale 6.
liczb rzeczywist 0,0. Nie jest natomiast wykonalne przeszukanie bazy danych zawierajcej zdjcia w celu
wyszukania twarzy, ktra wyglda jak" pewien okrelony obraz. Dlatego w systemie DBMS musia powsta
mechanizm umoliwiajcy uytkownikom doczanie wasnych funkcji, ktre mog operowa na danych
multimedialnych. Do takich rozszerze czsto stosuje si podejcie zorientowane obiektowo, nawet w
systemach relacyjnych.
Rozmiary obiektw multimedialnych, konieczno zorganizowania pamici dla obiektw i krotek
zajmujcych gigabajty pamici, lub nawet wiksze jej obszary, wymuszaj rwnie zmiany w moduach
zarzdzania pamici. Jednym z wielu kkopotliwych zada jest utworzenie odpowiedzi na zapytanie. W
zwykkych relacyjnych systemach odpowied jest zbiorem krotek. Klient otrzymuje tak odpowied w caoci
od serwera.
Wyobramy sobie jednak, e odpowied jest wideoklipem o objtoci gigabajta. Serwer nie jest
w stanie przekaza takich danych klientowi w caoci.
4O 1. DZIEDZINA SYSTEMW BAZ DANYCH
Trwaoby to zbyt dugo i uniemoliwio serwerowi obsug innych zada. Poza tym klient moe potrzebowa
tylko fragmentu filmu, ale nie moe dokadnie okreli czego chce, zanim nie zobaczy pocztku. Trzeci powd
koniecznoci nowego podejcia do obsugi zada w przypadku danych multimedialnych wynika std, e nawet
jeli klient potrzebuje caego wideoklipu po to na przykad, by odtworzy go na ekranie, wystarczy dostarcza
go w kawakach o ustalonej dugoci rytmicznie w cigu okoo godziny (tyle mniej wicej czasu trwa
wywietlenie filmu skompresowanego w jednym gigabajcie). Dlatego system zarzdzania pamici w
przypadku multimedialnych baz danych musi by przygotowany do przesyania odpowiedzi w trybie interakcyjnym, przesyania waciwych fragmentw odpowiedzi na dania klienta albo w ustalonych odstpach czasu.
umoliwiajce jednolity sposb przedstawienia klientom tych wszystkich danych, ktre dotycz ogu
dostarczanych towarw i usug.
Jeden z rozpowszechnionych sposobw polega na tworzeniu hurtowni danych, baz centralnych, do ktrych
kopiuje si, po uprzednim przetumaczeniu, dane z baz spadkowych". Hurtownie danych s aktualizowane
zgodnie ze zmianami, wprowadzanymi do baz spadkowych, ale nie dzieje si to natychmiast. Najczciej
hurtownie rekonstruuje si w nocy, gdy bazy spadkowe s mniej obcione przetwarzaniem.
Dziki takiemu rozwizaniu spadkowe bazy danych mog nadal dziaa zgodnie ze swoim
przeznaczeniem. Natomiast nowe funkcje, takie jak na przykad utrzymywanie katalogw w sieci, spenia
hurtownia danych. Czsto obserwujemy rwnie korzystanie z hurtowni danych do analiz i planowania. Na
przykad analitycy przedsibiorstwa mog tworzy zapytania do hurtowni danych, ktrych wyniki uatwi
okrelenie trendu sprzeday, a to z kolei umoliwi stworzenie lepszego planu produkcji i inwestycji. Hurtownie
danych su take przy wybieraniu danych (data mining), poszukiwaniu pord danych ciekawych i
niezwykych wzorcw i syszy si stwierdzenia, e zastosowanie odkrytych w ten sposb wzorcw dao efekt w
postaci zwikszenia sprzeday.
Zakres zagadnie zwizanych z bazami danych mona podzieli na trzy obszerne grupy:
1. Projektowanie baz danych. Jak zbudowa uyteczn baz danych? Jakie rodzaje danych umieszcza si w
bazach danych? Jaka jest struktura danych? Jakie zaoenia naley przyjmowa o typach i wartociach
poszczeglnych elementw w bazie danych? W jaki sposb te elementy s ze sob powizane?
2. Programowanie baz danych. W jaki sposb wyrazi zapytania i inne operacje na bazie danych? W jaki
sposb skorzysta z innych waciwoci baz danych, na przykad z wyzwalaczy lub transakcji?
3. Implementacja baz danych. Jak zbudowa DBMS, uwzgldniajc takie zagadnienia jak przetwarzanie
zapyta, przetwarzanie transakcji oraz efektywny system zarzdzania pamici?
Implementacje baz danych stanowi gwny segment rynku oprogramowania, dlatego liczba osb
zatrudnionych przy projektowaniu i korzystaniu z baz danych znacznie przewysza liczb tych, ktrzy buduj
systemy baz danych. Niniejsza ksika jest pomylana jako podrcznik do pierwszego wykadu z baz danych,
wic waciwym wydaje si skupienie uwagi na
42 I. DZIEDZINA SYSTEMW BAZ DANYCH
1.4.2. Programowanie
Rozdziay od 4 do 8 obejmuj zagadnienia zwizane z programowaniem baz danych. Zaczniemy w
rozdziale 4 od abstrakcyjnego potraktowania zapyta w modelu relacyjnym, polegajcego na wprowadzeniu
okrelonej na relacjach rodziny operatorw, ktra tworzy algebr relacji". Omwimy take tzw. Datalog" alternatywny sposb opisywania zapyta, w ktrym stosuje si wyraenia logiczne.
1.5. PODSUMOWANIE 43
programu. Take w tym rozdziale znajdziemy sposoby opisywania w SQL transakcji, czenia klienta z
serwerem i autoryzowania dostpu do baz danych dla osb spoza grona wacicieli.
W rozdziale 8 zwrcimy uwag na powstajce wanie zorientowane obiektowo standardy programowania
baz danych. Wyrnimy tutaj dwa kierunki. Pierwszy z nich, OQL (object query language) mona traktowa
jako prb dopasowania jzyka C++ do wymaga wysoko poziomowego programowania baz danych. W
drugim, ktry sprowadza si do obiektowych elementw SQL3, mona dopatrzy si prby przeksztacenia
SQL i baz relacyjnych do postaci kompatybilnej z programowaniem zorientowanym obiektowo. Do pewnego
stopnia oba te podejcia s podobne. Jednak jest wiele aspektw, ktre rni je zasadniczo.
1.5. Podsumowanie
Systemy zarzc~dzania bazami danych: (DBMS - database management systems): su projektantom do
strukturalizacji danych, uytkownikom do wyszukiwania i aktualizowania danych, a take uatwiaj
organizowanie wielkich iloci danych oraz wielu jednoczesnych operacji na nich.
Jzyki baz danych (database languages): S to bd jzyki, bd ich skadowe, przeznaczone do definiowania
struktur danych (jzyki definiowania danych - data-definition languages) i do wyszukiwania
44
1. DZIEDZINA SYSTEMW BAZ DANYCH
45
1 Przyszo systemw: Glwne trendy systemw baz danych obejmuj takie zjawiska jak bardzo due obiekty multimedialne", na
przykkad wideo lub obrazy oraz integrowanie danych z wielu oddzielnych rde w jednbaz danych.
Pozycje [2], [4] oraz [6] dotycz zorientowanych obiektowo systemw baz danych. Teori baz danych przedstawiono w [1], [9] oraz
[10]. W [8] mona znale wiele opracowa naukowych, ktre miay wpyw na ksztatowanie si dziedziny baz danych.
1. Abiteboul S., Hull R., Vianu V.: Foundations of Databases. Addison-Wesley, Reading MA. 1995.
2. Bancilhon F., Delobel C., Kanellakis P.: Building an Object-Oriented Database System. Morgan-Kaufman, San Francisco, 1992.
3. Bernstein P.A., Hadzilacos V., Goodman N.: Concurrency Control and Recovery in Database Systen2s. Addison-Wesley, Reading, MA,
1987.
4. Cattell R.G.G.: Object Data Management. Addison-Wesley, Reading, MA, 1994.
5. Gray J.N., Reuter A.: Transaction Processing: Concepts and Technigues. Morgan-Kaufman, San Francisco, 1993.
6. Kim W. (ed.): Modern Database Systems: The Object Model, Interoperability and Beyond. ACM Press, New York, 1994.
7. Oszu M. T., Valduriez P.: Principles of Distributed Database Systems. Prentice Hall, Englewood Cliffs, NJ, 1991.
8. Stonebraker M. (ed.): Readings in Database Systems. Morgan-Kaufman, San Francisco, 1994.
9. Ullman J.D.: Principles in Database and Knowledge-Base Systems, t. I. Computer science Press, New York, 1988.
10. Ullman J.D.: Principles in Database and Knowledge-Base Systems, t. II. Computer science Press, New York, 1989.
11. Wiederhold G.: Database Design. McGraw-Hill, New York, 1983.