[ Pobierz całość w formacie PDF ]
Wprowadzenie do kursu:
Zaawansowane systemy baz danych
Zbyszko KRÓLIKOWSKI
Politechnika Poznańska, Instytut Informatyki
ul. Piotrowo 2, 60-965 Poznań
e-mail: Zbyszko.Krolikowski@cs.put.poznan.pl
1. Wstęp
Organizacja nowoczesnego społeczeństwa opiera się na szerokim zastosowaniu systemów
informatycznych. Stanowią one podstawę systemów bankowych, systemów rezerwacji lotniczej,
hotelowej i kolejowej, systemów administracyjnych, gospodarki materiałowej i magazynowej,
systemów ewidencji ludności, systemów wspomagania projektowania, itp.
Powszechnie stosowanym narzędziem do tworzenia różnego rodzaju systemów
informatycznych są
systemy baz danych
(
SBD
) składające się z
bazy danych
(
BD
) i
systemu
zarządzania bazą danych
(
SZBD
).
Najogólniej rzecz biorąc
baza danych
jest komputerową reprezentacją wybranego fragmentu
świata rzeczywistego. Przykładami takiego fragmentu są stany kont i dane personalne klientów
banku, lub projekt nowego samochodu. Dane w bazie danych reprezentują stan
poszczególnych obiektów świata rzeczywistego. Baza danych oprócz właściwych danych
zawiera również ich interpretację odzwierciedlającą semantykę obiektów świata rzeczywistego.
Do modelowania semantyki świata rzeczywistego w bazie danych są wykorzystywane pewne
abstrakcyjne pojęcia składające się na
model danych
bazy danych.
System zarządzania bazą danych
jest implementacją konkretnego modelu danych, która
powinna charakteryzować się następującymi własnościami funkcjonalnymi.:
•
gwarantowanietrwałości i spójności danych w bazie danych,
•
zapewnieniewspółbieżnego dostępu do nich,
•
autoryzacjadostępu do bazy danych,
•
efektywnydostęp do danych w środowisku scentralizowanym i rozproszonym.
Historię rozwoju systemów baz danych przedstawiono na rys. 1. Początki baz danych sięgają
lat 60-tych ubiegłego stulecia, kiedy to pojawiły się pierwsze implementacje baz danych w
bankowości. Systemy te były budowane w oparciu o hierarchiczny lub sieciowy model danych.
Modele te były bardzo złożone. Dane były ściśle powiązane z programami, które na nich
„operowały”. Wykorzystywano, tak „egzotyczne” z dzisiejszego punktu widzenia języki
programowania jak Cobol czy Fortran. Wszystko to powodowało, że bazy danych były dziedziną
zastrzeżoną wyłącznie dla odpowiednio przygotowanych specjalistów.
Zaawansowane systemy baz
danych
Zarządzanie danymi
czas rzeczywisty
Aplikacje
wieloprocesorowość
4GL
rozproszenie
COBOL
Lata 80-te
FORTRAN
wielodostęp
Modele danych
sieciowy
relacyjny
postrelacyjny
hierarchiczny
obiektowy
obiektowo - relacyjny
Lata 70-te
Lata 90-te
Rys. 1. Historia rozwoju systemów baz danych.
Przełom nastąpił w roku 1970, kiedy to Codd opublikował swoją pierwszą pracę poświęconą
założeniom relacyjnych baz danych. Zaproponowany nowy, relacyjny model danych był
znacznie prostszy w swoich założeniach w porównaniu z modelem sieciowym czy
hierarchicznym, łatwy w interpretacji i implementacji. Przede wszystkim te właśnie cechy
relacyjnego modelu danych, spowodowały gwałtowny rozwój tej dyscypliny informatyki. Kilka lat
później pojawiły się pierwsze komercyjne SZBD firm IBM i Oracle. W tym samym okresie
zaproponowano język SQL dostępu do relacyjnych baz danych. Od tego momentu
obserwujemy gwałtowny wzrost implementacji systemów baz danych w różnych dziedzinach
zastosowań.
Biorąc pod uwagę historię rozwoju zastosowań baz danych, aplikacje konwencjonalnych
relacyjnych
SBD
, które powstały w latach siedemdziesiątych,
można scharakteryzować
następująco. W latach siedemdziesiątych i osiemdziesiątych podstawową dziedziną
zastosowań były aplikacje administracyjno-finansowe. Przykładem aplikacji tego typu są
systemy informatyczne dla banków i towarzystw ubezpieczeniowych, systemy rezerwacji miejsc
oraz systemy wspomagające gospodarkę finansową i magazynową przedsiębiorstw o
dowolnym profilu działalności. Zastosowania te wiąże charakterystyka występujących w nich
danych, które cechuje prosta struktura, standardowe typy danych oraz, w ogólności, brak
własności dynamicznych. Zastosowania te łączy również model interakcji z bazą danych, który
polega na realizacji krótkich, w większości niezależnych, zapytań.
Ekspansja informatyki we współczesnym świecie powoduje rozszerzanie się dziedzin
zastosowań
SBD
. W latach osiemdziesiątych, a szczególnie dziewięćdziesiątych, pojawiły się
nowe zastosowania o zupełnie odmiennej charakterystyce. Różnią się one nieraz istotnie
semantyką odpowiadającego im fragmentu świata rzeczywistego. Na przykład systemy
wspomagania projektowania różnią się od systemów bankowych dużo większą złożonością
strukturalną danych, większą złożonością własności dynamicznych i innym sposobem interakcji
między użytkownikami bazy danych. W ogólności cechą tych nowych zastosowań jest złożona
struktura danych, liczne typy związków między danymi, niestandardowe typy danych oraz
złożone własności dynamiczne. Interakcja użytkownika z systemem ma znacznie bardziej
złożony charakter niż w systemach konwencjonalnych. To już nie krótkie, niezależne zapytania,
lecz wiele skomplikowanych, długich
−
a tym samym czasochłonnych, wzajemnie powiązanych
zapytań. Oprócz systemów wspomagania projektowania, przykładami takich zastosowań są
2
Zaawansowane systemy baz
danych
magazyny danych, systemy wspomagania decyzji i produkcji, systemy wspomagania inżynierii
oprogramowania, systemy z bazami wiedzy, systemy medyczne i kartograficzne, w których są
pamiętane obrazy, zdjęcia i mapy.
Pojawiające się nowe zastosowania baz danych pociągnęły za sobą konieczność poszukiwania
nowych modeli danych lub rozszerzeń modeli istniejących, i co za tym idzie nowych rozwiązań
w ramach
SZBD
. W ostatnich kilkunastu latach, wychodząc naprzeciw wymogom tych nowych
aplikacji, są prowadzone intensywne badania nad wprowadzeniem do
SBD
różnego rodzaju
rozszerzeń. Badania te zaowocowały powstaniem tzw.
zaawansowanych systemów baz
danych
(ZSBD)
(ang.
Advanced DBS
).
Niniejszy tekst stanowi wstęp do cyklu wykładów, w ramach których zostaną szczegółowo
przedstawione systemy baz danych zaliczane do grupy zaawansowanych. W ramach kursu
przedstawimy Państwu wybrane grupy systemów zaawansowanych baz danych. Natomiast w
ramach niniejszego wprowadzającego tekstu zostaną omówione generacje systemów baz
danych i wymagania stawiane wobec zaawansowanych systemów baz danych oraz zostanie
przedstawiona krótka charakterystyka niektórych systemów omawianych w trakcie kursu i
systemów, które ze względu na ograniczenia czasowe, w trakcie tego cyklu wykładów
omawiane nie będą (post-relacyjne, mobilne). Studiując ten tekst możecie Państwo odnieść
wrażenie, że jest on trochę chaotyczny. To prawda. Jednakże moim celem nie było
usystematyzowanie tej problematyki, a jedynie prezentacja wybranych, najciekawszych
problemów badawczych i implementacyjnych, aby Państwa zachęcić do podjęcia dogłębnych
studiów z tej dziedziny.
2. Generacje systemów baz danych
Zarówno w teorii jak i w praktyce, tj. na rynku komercyjnym, zaproponowano wiele systemów
baz danych. Z pewnym uproszczeniem, jeszcze kilkanaście lat temu można było wyróżnić ich
dwie podstawowe generacje:
relacyjną i obiektową
(rys. 2). Można powiedzieć, że te dwie
grupy systemów, tj. relacyjne i obiektowe stanowią obecnie „klasykę”, jeśli chodzi o systemy baz
danych.
Relacyjne
Obiektowe
Postrelacyjne
Rozproszone
Sfederowane
Wielo-bazy
Rozszerzalne Aktywne
Relacyjno -
obiektowe
Aktywne
Dedukcyjne
Temporalne
Multimedialne
Dedukcyjne Mobilne
Przestrzenne Multimedialne
. . . .
Magazyny danych
Czasu rzeczywistego
Temporalne
Zaawansowane systemy baz danych
Rys. 2. Generacje systemów baz danych
Systemy relacyjnych baz danych, jako „klasyka” doczekały się bardzo bogatego piśmiennictwa i
w tym miejscu nie ma potrzeby ich bliższej prezentacji – są szeroko omawiane w ramach
pierwszego stopnia studiów.
3
4
Zaawansowane systemy baz
danych
Próby zastosowania w latach osiemdziesiątych systemów baz danych do komputerowego
wspomagania projektowania (ang.
Computer Aided Design – CAD
), komputerowego
wspomagania wytwarzania (ang.
Computer Aided Manufacturing – CAM
), systemów
wspomagania inżynierii oprogramowania (ang.
Computer Aided Software Engineering – CASE
),
geograficznych systemów informacyjnych (ang.
Geographical Information Systems – GIS
) oraz
systemów komputerowego wspomagania prac zespołowych (ang.
Computer Supported
Cooperative Work – CSCW
), zaowocowały
systemami obiektowych baz danych
. Są one
oparte na obiektowo-zorientowanym modelu danych (ang.
object-oriented data model
), w
którym kluczowym pojęciem jest pojęcie
obiektu
, który integruje strukturalne i operacyjne
własności modelu danych. Obiektowe bazy danych stwarzają możliwość modelowania
złożonych typów danych, hierarchii typów i własności dynamicznych.
Po pierwszym okresie rozwoju systemów baz danych, w trakcie którego zasadniczo uporano się
z problemami zarządzania dużymi zbiorami danych, efektywnej realizacji żądań użytkowników,
niezawodności oraz ochrony, obecnie poszukuje się lepszych sposobów modelowania świata
rzeczywistego oraz zwiększania "inteligencji" systemów zarządzania bazami danych. W ramach
tego cyklu wykładów zajmiemy się przede wszystkim rozszerzeniami wprowadzanymi do
systemów baz danych, które wychodzą naprzeciw wymogom współczesnych nie-
standardowych aplikacji i mają na celu zwiększanie "inteligencji"
SBD
.
Wprowadzenie wymienionych niżej rozszerzeń pozwala mówić o zwiększonej inteligencji
systemu i jego zakwalifikowaniu do generacji systemów zaawansowanych:
•
zapewnienieobsługi obiektów o złożonej strukturze;
•
obsługa niesformatowanej informacji, np. tekstów, obrazów, map, video;
•
dodatkowe funkcje odpowiednie dla różnych dziedzin zastosowań;
•
przechowywanie wiedzy o modelowanym świecie, wyrażonej nie tylko za pomocą faktów
(danych), lecz także w postaci reguł,
•
umiejętność wnioskowania opartego na zapamiętanych regułach i faktach.
Przedstawimy obecnie krótką charakterystykę wybranych grup zaawansowanych systemów baz
danych, w których wymienione powyżej rozszerzenia wprowadzono.
3. Systemy post-relacyjnych baz danych
Systemy post-relacyjnych baz danych nie będą szczegółowo omawiane w ramach naszego
kursu. Warto jednak zapoznać się z ich krótką charakterystyką, ponieważ rozwiązania
zaproponowane swego czasu w ramach badań nad tą grupą systemów, można obecnie znaleźć
w wielu współczesnych, komercyjnych SZBD. Innymi słowy, od systemów post-relacyjnych
wszystko się zaczęło.
Próba rozszerzenia relacyjnego modelu danych o elementy ułatwiające modelowanie z natury
coraz bardziej skomplikowanej rzeczywistości nowych dziedzin zastosowań zaowocowała
powstaniem
systemów post-relacyjnych baz danych
. Były one próbą odparcia bardzo
mocnej konkurencji ze strony obiektowych baz danych. Systemy post-relacyjne najczęściej nie
były tworzone od podstaw, lecz przez wzbogacenie określonych systemów relacyjnych.
Klasycznym przykładem może być tutaj system
Postgres
stanowiący rozszerzenie znanego
systemu relacyjnego
Ingres
. W uproszczeniu można powiedzieć, że model danych systemów
post-relacyjnych jest „nadzbiorem” koncepcji stosowanych w klasycznym modelu relacyjnym.
Systemy post-relacyjne oferowały kilka dodatkowych konstrukcji, powiększających w znaczący
sposób siłę wyrazu ich modelu danych. Są to: abstrakcyjne typy atrybutów i złożone struktury
danych, zagnieżdżone relacje, atrybuty proceduralne (wirtualne), dziedziczenie (ang.
inheritance
) zapytania historyczne i rozszerzalne funkcje. Omówimy obecnie te nowe,
dodatkowe elementy oferowane swego czasu przez systemy post-relacyjne.
5
Zaawansowane systemy baz
danych
W tego typu systemach (na przykład w systemie
Postgres
) nie używano pojęcia relacji lecz
znacznie szerszego pojęcia
klasy
. Klasa jest zbiorem
wystąpień
(inaczej, instancji) obiektów,
posiadającym określoną nazwę. Formalnie przez
obiekt
rozumie się dwójkę:
o = (oid, v)
, gdzie
oid
jest unikalnym identyfikatorem obiektu, a
v
jest wartością obiektu. Wartość obiektu, w
zależności od jego struktury, może być wartością atrybutu, krotką wartości lub zbiorem wartości.
Struktura obiektu jest określona przez zbiór nazwanych atrybutów.
Atrybuty
przyjmują wartości
z odpowiednich dziedzin, które są zbiorami wartości elementarnych, takich jak liczby naturalne,
rzeczywiste czy łańcuchy znaków. Każde wystąpienie obiektu ma taki sam zbiór atrybutów
określonego typu.
Jak pamiętamy, konwencjonalne relacyjne bazy danych oferują bardzo ubogi zestaw typów
danych, często zredukowany do liczb, łańcuchów znaków i dat. Jest to wystarczające w
przypadku tworzenia prostych aplikacji ewidencyjnych, natomiast zdecydowanie
niewystarczające w przypadku nowoczesnych dziedzin zastosowań baz danych, takich jak np.
komputerowe wspomaganie projektowania. W post-relacyjnych bazach danych istniała
możliwość rozszerzenia zestawu predefiniowanych typów danych o nowe typy -
abstrakcyjne
typy danych
(ang.
abstract data types (ADT)
). Możliwość definiowania
ADT-ów,
a następnie
wskazywania ich przy definicji pól krotek, odpowiada w pewnym stopniu możliwości
dynamicznego rozszerzania schematu obiektowej bazy danych o nowe klasy. Pojęcie
ADT-u
wiąże się również z tzw. osłonowaniem (ang.
encapsulation
) z obiektowych baz danych.
Zgodnie z nim dostęp do struktury danych odbywa się wyłącznie poprzez operatory (takie jak
np.
push, pop
, dla struktury danych zwanej stosem). W ogólności, abstrakcyjny typ danych
składa się z definicji struktury oraz definicji operatorów, które mogą być stosowane wyłącznie
dla tej struktury.
Relacje posiadają płaską, jednowymiarową strukturę. Utrudnia to modelowanie złożonych encji,
takich jak np. samochód lub przedsiębiorstwo. W post-relacyjnych bazach danych istniała
możliwość definiowania atrybutów złożonych, które rekurencyjnie mogą składać się ze zbioru
innych atrybutów prostych i złożonych. Dostęp do atrybutów zagnieżdżonych odbywa się
poprzez pełną specyfikację ścieżki zawierania, tak jak to ma miejsce w przypadku rekordów
języka Pascal, lub struktur języka C.
Mechanizm zagnieżdżonych relacji jest szczególnym przypadkiem złożonych struktur danych.
W post-relacyjnych bazach danych wartością atrybutu może być relacja, która z użytkowego
punktu widzenia jest traktowana podobnie jak relacja zewnętrzna. W szczególności zatem,
relacja zagnieżdżona może zawierać atrybuty, których wartościami są kolejne relacje.
Prostym przykładem wykorzystania relacji zagnieżdżonych może być encja
Człowiek
,
modelowana jako krotka o atrybutach prostych, takich jak
imię, nazwisko, data urodzenia,
oraz
atrybutu
Dzieci
będącego zagnieżdżoną relacją o krotności odpowiadającej liczbie dzieci
określonego człowieka.
W systemach post-relacyjnych istniała możliwość definiowania relacji na bazie innych,
wcześniej utworzonych relacji przez wskazanie rozszerzeń i/lub różnic. Jest to mechanizm
podobny do mechanizmu dziedziczenia obiektowych baz danych.
W ujęciu klasycznym pojęcie dziedziczenia odnosi się przede wszystkim do koncepcji
obiektowości w językach programowania i bazach danych. Obiekty programistyczne są
grupowane w klasy. Pomiędzy klasami ustanawia się związek hierarchiczny określający zasady
dziedziczenia. Przykładowo klasa obiektów
Osoba
posiada podklasy
Pracownik
,
Klient
,
Emeryt
,
podklasa
Pracownik
może posiadać podklasy
Pracownik_etatowy
,
Pracownik_na_zlecenie
.
Dziedziczenie polega na tym, że pewne wspólne cechy (inwarianty) obiektów należących do
klas bardziej ogólnych są dziedziczone przez obiekty należące do klas bardziej szczegółowych.
W językach programowania (np. C++ i Smalltalk) takimi inwariantami są definicje atrybutów
obiektów (np. fakt występowania i definicja atrybutu
nazwisko
wewnątrz klasy
Osoba
są
dziedziczone przez pozostałe wymienione podklasy), oraz tzw. metody, czyli procedury, które
można stosować do elementów danej klasy. W obiektowych bazach danych zestaw tych
inwariantów ulega rozszerzeniu: dziedziczyć można także wspólne wartości pewnych
[ Pobierz całość w formacie PDF ]