Deductive database systems

advertisement
Tomisław Krężelewski
informatyka, IV rok
Deductive database systems
Powstanie technologii dedukcyjnych baz danych
Teoria bazy danych to kluczowe zagadnienie w dziedzinie systemów informacyjnych.
Ich rozwój determinuje postęp większości technologii informatycznych.
Początkowo dane w aplikacjach, będących systemami przechowującymi informacje,
zapisywane były na taśmach magnetycznych, czy kartach perforowanych. Dostęp do nich
polegał na tym, że program czytał pliki, nanosił odpowiednie zmiany w ich zawartości i
zapisywał je ponownie w nowej wersji. Gdy upowszechniła się technologia twardych dysków,
stało się możliwe dokonywanie zmian w treści plików bez kopiowania ich całości. Jednakże
struktura plików i sposób dokonywania w nich zmian była wciąż osadzona w programach
dokonujących tychże modyfikacji.
Kolejnym ważnym krokiem było wypracowanie technologii: początkowo
hierarchicznych, później sieciowych baz danych. Innowacja względem starszych rozwiązań
polegała na tym, że opis danych stał się niezależny od aplikacji korzystających z nich. Odtąd
na bazę danych można patrzeć, jak na wyodrębniony zasób. Wiele detali związanych z
procedurami dostępu i administrowania danymi zostało powierzonych bazie danych i
ukrytych przed twórcami aplikacji zewnętrznych.
Najbardziej znaczącą koncepcją, zmieniająca całkowicie podejście do zagadnienia,
okazała się technologia relacyjnych baz danych. We wcześniejszych rozwiązaniach, struktura
i zawartość rekordu w bazie było niezależna od sposobów jego przechowywania, modyfikacji
i dostępu do niego, przy czym powiązania pomiędzy rekordami zasadniczo były
reprezentowane za pomocą wskaźników, więc aplikacja korzystająca z bazy musiała wiedzieć
jak poruszać się po takiej strukturze danych – stad nazwa: nawigacyjne bazy danych.
W myśl technologii relacyjnych baz danych, wszystkie rekordy są identyfikowane
poprzez ich zawartość. Co więcej, relacyjne bazy danych zorganizowane według prawideł
matematycznej teorii relacji, która jest ściśle powiązana z teorią rachunku predykatów
pierwszego rzędu.
Od chwili, gdy relacyjne bazy danych zostały zorganizowane zgodnie z matematyczną
strukturą, stało się możliwe przekształcanie poszczególnych zapytań tak, by zapytanie
pierwotne i otrzymane w wyniku transformacji dawały takie same rezultaty. Ten fakt stał się
podstawa do rozwoju prac nad zagadnieniem optymalizacji zapytań. Gdy zapytanie zostaje
utworzone w nawigacyjnej bazie danych, program żądający dostępu do informacji musi znać
wiele szczegółów technicznych związanych z przechowywaniem danych (np. ścieżki dostępu
itp.) oraz znać strategie znajdowania właściwych informacji w rozsądnym czasie. W
zoptymalizowanym relacyjnym systemie bazodanowym, jednym z zadań systemu zarządzania
bazą danych, jest konstruowanie ekonomicznych strategii realizacji zapytań.
Można więc stwierdzić, że nawigacyjne bazy danych są bardziej deklaratywne niż sam
system plików, gdyż detale związane ze strukturą rekordów i ich zawartością są
zadeklarowane w systemie zarządzania bazą i są niezależne od aplikacji zewnętrznych.
Analogicznie, relacyjne systemy baz danych są w większym stopniu deklaratywne niż
systemy nawigacyjne, gdyż strategie dostępu do danych z reguły są określane przez system
zarządzania bazą, a nie aplikację zewnętrzną.
Prosta i precyzyjne określona struktura relacyjnych baz danych zawiera w sobie kilka
pomocniczych obiektów, czy też specyficznych właściwości. Należą do nich:

widoki, które są standardowymi zapytaniami przechowywanymi w bazie danych, a nie w
zewnętrznej aplikacji ;

ograniczenia integralnościowe, które są wymuszane przez bazę danych;

triggery działające niezależnie od tego, jaka aplikacja wykonała dane operacje na
zawartości bazy.
Przyjrzyjmy się bliżej tym trzem elementom technologii. To tutaj technologia
dedukcyjnych baz danych rozszerza możliwości oferowane przez systemy relacyjne.
Widoki są konstruowane z tabel. System zarządzający bazą danych przechowuje
zarówno reguły, według którego tworzone są poszczególne widoki, jak i ich schematy. Jest
możliwa sytuacja, w której w bazie mamy bardzo dużo widoków oraz widoki zbudowane z
innych widoków np. poprzez użycie operacji sumowania czy tez negacji. Słabością technik
bazodanowych jest fakt, że baza potrafi pracować z widokiem, ale nie nad widokiem. Jedną z
zalet dedukcyjnych baz danych, jest możliwość pracy nad widokami, przekształcanie ich
zależnie od zastosowania np. w celu optymalizacji.
Kolejnym brakiem jest fakt, ze relacyjne bazy danych nie dopuszczają do
rekursywnego definiowania widoków. Nie ma w nich miejsca także dla rekursywnych
zapytań, z których mogą być konstruowane widoki. Taka sytuacja powoduje, że wiele
interesujących problemów nie może być rozwiązywanych przy pomocy technologii
relacyjnych baz danych. Ważnym, bo obrazującym problem przykładem, jest centralna baza
danych opisująca stan posiadania przedsiębiorstwa, która składa się z baz danych (np. z
poszczególnych oddziałów firmy).
Odkąd dedukcyjne bazy danych oferują znacznie lepsze narzędzia do zarządzania
widokami i pozwalają na tworzenie bardziej użytecznych widoków, pozwalają na lepsza
pracę z ograniczeniami integralnościowymi, włączając w to ich optymalizację.
Wachlarz możliwości triggerów w relacyjnych bazach danych jest ograniczony,
między innymi: triggery mogą być definiowane tylko dla znajdujących się w bazie tabel, na
raz może być aktywowany tylko jeden trigger. Dedukcyjne systemy bazodanowe zezwalają
na implementowanie bardziej zaawansowanych – aktywnych – baz danych, w których
triggery mogą być definiowane dla widoków i w których możliwe jest równoległe
wykonywanie wielu współpracujących triggerów.
Dedukcyjne bazy danych – budowa
Dedukcyjna baza danych jest podzielona na dwie części.

Pierwsza z nich, to tradycyjna baza danych, zawierająca fakty (EDB – extensional
database). Przez fakty rozumiemy definicje pewnych relacji. Relacje składające się na
bazę faktów (EDB), są zdefiniowane wprost poprzez wymienienie wszystkich obiektów
spełniających te relacje.

Druga część to tak zwana baza wiedzy (IDB – intensional database), będąca zbiorem
reguł wnioskowania. Na reguły te można patrzeć jak na definicje zależności zachodzących
pomiędzy relacjami z EDB. Zawarte tutaj są widoki i ograniczenia integralnościowe.
Uzupełnieniem tych dwu elementów jest tak zwany inference engine. Jest to mechanizm,
który pozwala dedukować nowe fakty i reguły na podstawie tych umieszczonych już w bazie
danych.
Dedukcyjne systemy bazodanowe używają deklaratywnego języka programowania
(jakim jest np. Prolog) do definiowania reguł i faktów. Wówczas wnioskowanie odbywa się
zgodnie z regułami dedukcji takiego języka.
Należy pamiętać, że dedukcyjna baza danych, to obiekt opisany przez zbiór faktów i
reguł – wiele reguł definiujących tę samą relację musi być odbierane jako alternatywne
podejście do tejże relacji.
Użytkownik zadaje pytanie poprzez wskazanie celu: Czy cel jest logiczną konsekwencją
faktów i reguł bazy danych?
Datalog
Technologia dedukcyjnych baz danych leży pomiędzy zagadnieniami teorii baz
danych, programowaniem logicznym a systemami eksperckimi. Najwygodniejszym językiem
do pracy z dedukcyjnymi bazami danych zdaje się być Datalog. W dużym skrócie można
stwierdzić, że jest to język Prolog z dodatkowymi ograniczeniami:

Nie zawiera negacji

Zabronione jest używanie nazw funkcji jako parametrów predykatów
Takie obostrzenie zasad powoduje, że obliczenia są zawsze skończone oraz
umożliwiają jednoczesna pracę nad zbiorem wielu krotek.
Dzieje się tak między innymi dlatego, że w odróżnieniu od języka Prolog, w Datalogu
obliczenia wykonywane są metodą bottom-up.
Reprezentacja bazy danych za pomocą konstrukcji języka Prolog
Po pierwsze należy zauważyć, że procedura zawierająca niezanegowane klauzule jest
przedstawieniem relacji w relacyjnej bazie danych. Pojedyncza klauzula odpowiada krotce w
relacji. Poniżej znajduje się wykaz podstawowych konstrukcji Prologa analogicznych do
języka zapytań SQL.
Nazwa relacji:
STUDENT
Atrybuty:
NUMER_INDEKSU:NR:integer
NAZWISKO:NAZ:text
PRZEDMIOT:PRZ:text
Relacja:
NR=1001, NAZ=Kowalski,PRZ=Logika
NR=1002, NAZ=Nowak,PRZ=Algebra
Reprezentacja w postaci procedury Prologa:
Template
%student(Numer_Ind,Nazwisko,Przedmiot).
procedure
student(1001,Kowalski,Logika).
student(1002,Nowak,Algebra).
Selekcja
Zapytanie w SQL:
SELECT * FROM STUDENT WHERE NR = 1001
Zapytanie w Prologu zwracające te samą krotkę:
student(1001,Nazwisko,Przedmiot)?
Projekcja
Zapytanie w SQL:
SELECT PRZ FROM STUDENT
Zapytanie w Prologu:
przedmiot(Przedmiot) :- student(_,_,Przedmiot).
przedmiot(Przedmiot)?
Złączenie
Zapytanie w SQL:
SELECT * FROM STUDENT, PRZEDMIOT
WHERE STUDENT.PRZ = PRZEDMIOT.PRZ
Jeżeli relacja PRZEDMIOT jest opisana przez procedurę
przedmiot(Kod_Przedmiotu,Nazwa).
to zapytanie w Prologu ma postać:
student(Numer_Ind,Nazwisko,Kod), przedmiot(Kod,Nazwa).
Dedukcyjne bazy danych a systemy eksperckie
Dziedziny, w których wykorzystywane są zarówno baz danych jak i tradycyjne systemy
eksperckie to przede wszystkim:

Automatyzowanie zadań prawdziwych ekspertów

Testowanie hipotez dotyczących jakiegoś znanego zagadnienia

Znajdowanie nowych zależności pomiędzy zbadanymi zagadnieniami.
Różnice pomiędzy systemami eksperckimi a dedukcyjnymi bazami danych przejawiają się w:

sposobie wykorzystania bazy wiedzy – fakty i reguły w przypadku systemów eksperckich
są ładowane do pamięci operacyjnej, podczas gdy dedukcyjne systemy baz danych
korzystają z bazy danych (zazwyczaj przechowującej dane na dysku)

sposobie zdobywania wiedzy – systemy eksperckie czerpią reguły i fakty od prawdziwych
ekspertów w danej dziedzinie, podczas gdy dedukcyjne systemy bazodanowe budują
swoją wiedzę na podstawie właściwości zgromadzonych danych.
Download