Obiektowe Bazy Danych kontra Relacyjne Bazy Danych

advertisement
Obiektowe Bazy Danych
kontra
Relacyjne Bazy Danych
Kazimierz Subieta
Instytut Podstaw Informatyki PAN
Warszawa
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 1
Model relacyjny -rys historyczny
1970 Najbardziej znany, najczęściej cytowany artykuł E.F.Codd’a z IBM proponujący oparcie się na
teorii relacji jako podstawie ideologicznej i teoretycznej architektury, języków i interfejsów systemów
zarządzania bazami danych. Koncepcja została określona jako “relacyjny model danych”, RDM.
1971 - 1975 Zażarta walka ideologiczna pomiędzy zwolennikami RDM a zwolennikami koncepcji
sieciowych baz danych opartych o propozycję grupy DBTG komitetu CODASYL. Walka toczy się o
pieniądze rzędu 100 miliardów $ w skali 20 lat.
1971 - 1985 Intensywny rozwój teorii związanych z RDM. RDM stał się ulubionym konikiem grup
teoretycznych na całym świecie (kilka tysięcy publikacji).
1975-1989 Intensywny rozwój technologii opartych o RDM. Kariera wielu systemów zarzadzania
relacyjnymi bazami danych, takich jak: DB2, Oracle, Ingres, dBase; następnie Informix, Progress,
Sybase, i wiele innych. Szerokie zastosowania na skalę przemysłową, ogromna popularność i pieniądze.
1975 Pierwsze publikacje na temat języka Sequel, poprzednika SQL, autorów z IBM (Chamberlin).
1986 Pierwszy standard języka SQL zaaprobowany przez ANSI. Wykazuje liczne odstępstwa od RDM.
1989, 1992 Następne standardy SQL.
1987 E.F.Codd, sfrustrowany odstępstwami od RDM, publikuje słynne 12 reguł “prawdziwego” systemu
relacyjnego. Żaden z istniejących systemów nie jest “prawdziwym” systemem relacyjnym. Ma rację, ale
nikt tym się nie przejmuje. “Prawdziwego” systemu relacyjnego chyba już nigdy nie będzie.
1985-1997 Intensywna krytyka wad RDM. Świat naukowy zredukował swoje zainteresowanie RDM
praktycznie do zera. Świat komercyjny rozbudowuje systemy bez jakiejkolwiek troski o ideologię RDM.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 2
Model relacyjny - podstawowe założenia
Baza danych składa się z prostokątnych tablic, każda o określonej liczbie kolumn i dowolnej
liczbie wierszy. Takie tablice sa okreslane jako relacje. Wiersz relacji jest nazywany krotką.
Elementy krotek są atomowe (niepodzielne) i są bezpośrednio wartościami. Niedozwolone
jest tworzenie wskaźników prowadzących do innych krotek. Niedozwolone jest, aby element
krotki był zbiorem wartości. Jest to tzw pierwsza forma normalna (1NF).
Porządek krotek nie ma znaczenia. Porządek kolumn również nie ma znaczenia.
Jakiekolwiek cechy odnoszące się do reprezentacji relacji lub usprawnienia dostępu do relacji
są ukryte przed użytkownikiem.
Relacje i ich kolumny posiadają nazwy. Nazwy kolumn są określane jako atrybuty.
Każda relacja posiada wyróżniony atrybut lub grupę atrybutów określną jako klucz. Wartość
klucza w unikalny sposób identyfikuje krotkę relacji. Jakakolwiek inna identyfikacja krotki
(np. wewnętrzny identyfikator) jest niewidoczna dla użytkownika.
Manipulacja relacjami odbywa się w sposób makroskopowy przy pomocy operatorów algebry
relacji lub innego tego rodzaju języka. Przetwarzanie “krotka po krotce” jest niedozwolone.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 3
SQL: podstawowy format zdania select
select [all | distinct] expression {, expression}
from table_name [corr_name] {.table_name [corr_name] }
[where search_condition1]
[group by column {, column}]
[having search_condition2]
Zapytania SQL moga być bardzo złożone.
Semantyka jest dość często niejasna (“SQL puzzles”).
Oprócz zdania select SQL wprowadza:
• zdania definicji danych
• zdania manipulacji danymi (update, insert, delete )
Mimo to, SQL nie jest pełnym językiem programowania, w związku z czym wymaga:
• Zanurzenia zdań SQL w uniwersalny język programowania
• Zdań pośredniczących, które umożliwiają takie zanurzenie
Konsekwencją połączenia dwóch róznych języków jest niekorzystny efekt określany jako
niezgodność impedancji.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 4
SQL: proste zdania select
Zakładamy tablice: PRACOWNIK( NR, NAZWISKO, ZAROBEK, NRDZ)
DZIAŁ( NRDZ, NAZWA, LOKALIZACJA )
Podaj nazwiska pracowników zarabiających mniej niż 1000:
select NAZWISKO from PRACOWNIK where ZAROBEK > 1000
Podaj nazwiska i nazwy działów pracowników pracujących w Radomiu:
select P.NAZWISKO, D.NAZWA from PRACOWNIK P, DZIAŁ D
where P.NRDZ = D.NRDZ and D.LOKALIZACJA = ‘Radom’
Semantyka
Zaczynamy od from: Specyfikujemy tablice do przeszukania oraz ew. ich lokalne
synonimy (ściślej: zmienne krotkowe). Tworzymy iloczyn kartezjański tablic.
Następnie where: Usuwamy z tablicy lub iloczyny kartezjańskiego takie krotki, które nie
spełniają warunku.
Na końcu select: Bierzemy z każdej wynikowej krotki to, co jest potrzebne.
SQL
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 5
Na bazie tego prostego pomysłu utworzono gigantyczną
odwróconą piramidę (setki stron specyfikacji)
Co to jest “niezgodność impedancji”? (1)
Zespół niekorzystnych zjawisk towarzyszących formalnemu połączeniu języka zapytań
(np. SQL) z uniwersalnym językiem programowania (np. C, Cobol lub PL/I) .
Objawia się niezgodnościami w zakresie:
Składni: Programista musi w jednym tekście programu używać dwóch stylów językowych i przestrzegać
reguł dwóch różnych gramatyk.
Systemu typów: Język zapytań operuje na typach zdefiniowanych w schemacie bazy danych, m.in.
relacjach, natomiast język programowania posiada zwykle odmienny system typów, w którym nie
występuje typ relacja. Większość języków programowania ma wbudowaną statycznej kontrolę typów,
podczas gdy SQL takiej kontroli nie przewiduje.
Semantyki i paradygmatów języków: Koncepcja semantyki jezyków jest zasadniczo różna. Język zapytań
bazuje na stylu deklaracyjnym (co wyszukać, a nie jak) podczas gdy języki programowania bazują na stylu
imperatywnym (jak zrobić, a nie co).
Pragmatyki użycia: Język zapytań uwalnia programistę od wielu szczegółów organizacji i implementacji
danych (np. organizacji zbiorów, obecności lub nieobecności indeksów, itd.), podczas gdy w języku
programowania te szczegóły muszą być oprogramowane explicite.
Faz i mechanizmów wiązania: Języki zapytań są oparte o późne wiązanie (są interpretowane) podczas gdy
języki programowania zakładają wczesne wiązanie (podczas kompilacji i konsolidacji). Stwarza to
problemy m.in. dla programów odpluskwiających (debugger).
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 6
Co to jest “niezgodność impedancji”? (2)
Dodatkowo objawia się niezgodnościami w zakresie:
Przestrzeni nazw i reguł zakresu: Język zapytań i język programowania posiadają własne przestrzenie
nazw, które mogą zawierać identyczne nazwy o różnych znaczeniach. Odwzorowania pomiędzy
przestrzeniami nazw wymagają dodatkowych środków syntaktycznych i semantycznych. Przestrzeń nazw
języka programowania jest zbudowana hierarchicznie i podlega regułom zakresu opartym o zasadę stosu.
Te reguły są ignorowane przez język zapytań powodując wiele trudności.
Schematów iteracyjnych: W języku zapytań iteracje są wtopione w semantykę operatorów takich jak
selekcja, projekcja i złączenie. W języku programowania iteracje muszą być organizowane explicite przy
pomocy pętli for, while, repeat lub innych. Przetwarzanie wyników zapytań przy pomocy języka
programowania wymaga specjalnych udogodnień takich jak kursory i iteratory.
Traktowania cechy trwałości danych: Języki zapytań przetwarzają wyłącznie trwałe dane (znajdujące się
na dysku), podczas gdy języki zapytań przetwarzają wyłącznie dane nietrwałe znajdujące się w pamięci
operacyjnej. Połączenie języków wymaga od programisty użycia specjalnych środków językowych do
parametryzacji zapytań przez zmienne języka programowania oraz środków językowych i
architektonicznych służących do transmisji danych z dysku do pamięci operacyjnej i odwrotnie.
Środków programowania ogólnego (generic): Środki te w języku zapytań są oparte o refleksję (patrz np.
dynamiczny SQL). Użycie podobnego środka w języku programowania jest zazwyczaj niemożliwe z
powodu wczesnego wiazania. Stosowane są inne środki, takie jak funkcje wyższego rzędu, casting,
przejście na niższy poziom językowy, polimorfizm lub szablony.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 7
Co to jest niezgodność pomiędzy modelem
pojęciowym i modelem implementacyjnym?
Celem jest uzyskanie jak najmniejszej luki pomiędzy myśleniem o rzeczywistości
a myśleniem o danych i procesach, które zachodzą na danych.
Mentalna percepcja
świata rzeczywistego
Model
pojęciowy
Schemat relacyjnej
struktury danych
W modelu relacyjnym model pojęciowy jest budowany w oparciu o model encja-związek.
Model encja-związek stara się odwzorować świat rzeczywisty, lecz nie może być bezpośrednio
zaimplementowany, gdyż relacyjna baza danych na to nie pozwala. W rezultacie,
- schemat struktury danych gubi znaczną część semantyki danych,
- użytkownik musi kojarzyć dane explicite w zdaniach SQL, co zwiększa ich złożoność
i powoduje wzrost czasów wykonania.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 8
Niezgodność modelu pojęciowego i relacyjnego(1)
Departament
NrD
NazwaD
Lokacja *
Zatrudnia
Pracownik
Pracuje_w NrPrac
Zawód *
Wypłaty *
Szef
Osoba
Nazwisko
Adres *
RokUrodz
Mama
Dziecko
Dziecko
Tata
Ile schematów relacyjnych potrzeba, aby zaimplementować tę strukturę?
Departament( NrD, NazwaD )
Lokacja( NrLokacji, NazwaLok, NrD )
Szef( NrD, NrPrac)
Pracownik( NrPrac, NrOsoby)
PracDept( NrPrac, NrD)
Zawód( IdZawodu, NazwaZawodu, NrPrac )
Wypłata ( IdWypłaty,Wysokość, NrPrac )
Osoba( NrOsoby, Nazwisko, RokUrodz )
Adres( NrAdresu, Miejsce, NrOsoby )
Mama( NrOsoby, NrOsoby )
Tata( NrOsoby, NrOsoby )
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 9
Czytelna pojęciowa struktura zamieniła się
na 11 nieczytelnych schematów relacji
Pojawiły się nowe atrybuty - klucze
Semantyka wyrażona poprzez liczności
została częściowo zgubiona
Semantyka dziedziczenia została zgubiona
Odtworzenie semantyki - użytkownik musi
zrobić explicite poprzez zapytania SQL
Niezgodność modelu pojęciowego i relacyjnego(2)
Firma
Nazwa
Miejsce *
FZ
Zatrudnienie
Wypłata *
Ocena *
PZ
Osoba
Nazwisko
Imię *
Adres *
Pracownik
Zawód *
Firma( NrF, Nazwa)
Lokal( NrF, Miejsce)
Zatrudnienie( NrF, NrP)
Pracownik( NrP, NrOs)
Oceny( NrOceny, Ocena, NrF, NrP)
Dochód( NrDochodu, Wypłata, NrF, NrP)
Osoba( NrOs, Nazwisko)
Wyszkolenie( Zawód, NrP)
Imiona( NrOs, Imię)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 10
Adresy( NrOs, Adres)
Zapytania w OQL i SQL
Podaj adresy pracowników zatrudnionych w firmach zlokalizowanych w Radomiu:
OQL:
select z.Adres
from Firma as x, x.FZ as y, y.PZ as z
where “Radom” in x.Miejsce
(26 jednostek leksykalnych)
SBQL:
(Firma where “Radom” in Miejsce).FZ.Zatrudnienie.PZ.Pracownik.Adres
(17 jednostek leksykalnych)
SQL:
select a.Adres
from Lokal as k, Zatrudnienie as z, Pracownik as p, Osoba as s, Adresy as a
where k.Miejsce = “Radom” and k.NrF = z.NrF and z.NrP = p.NrP
and p.NrOs = s.NrOs and s.NrOs =a.NrOs
(62 jednostki leksykalne)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 11
Garby modelu relacyjnego
Z góry ustalony konstruktor typu danych (relacja), rozszerzany ad hoc przez wytwórców
systemów relacyjnych. Brak złożonych obiektów. Informacje o pojęciach wyróżnialnych
i manipulowalnych w rzeczywistości są rozproszone w krotkach wielu tablic.
Skojarzenie tych informacji następuje w zapytaniach SQL, przez co wzrasta ich
złożoność oraz czas wykonania (optymalizacja zapytań tylko częściowo to rozwiązuje).
Brak wyspecjalizowanych środków do realizacji powiązań pomiędzy danymi.
Brak środków do przechowywania danych proceduralnych. Wszelkie informacje
wykraczające poza strukturę relacyjną (perspektywy, procedury bazy danych, BLOBy,
aktywne reguły,...) są implementowane ad hoc.
Brak środków hermetyzacji i modularyzacji: wykroczenie przeciwko zasadom
abstrakcji i oddzielenia implementacji od specyfikacji.
Brak uniwersalności środków dostępu do danych, powodujący konieczność zanurzenia ich
w uniwersalne języki programowania, znacznie niższego poziomu; niezgodność impedancji
(impedance mismatch). Niespełnione obietnice przetwarzania makroskopowego
(wiele-w-tym-samym-czasie); powrót do niewygodnej techniki jeden-w-tym-samym-czasie.
Niespójne mechanizmy wartości zerowych, brak wariantów, brak porządku w relacjach.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 12
Obiektowe bazy danych
Teza: bazy danych zawsze były obiektowe, chociaż nie realizowały wszystkich
pojęć obiektowości, takich jak klasy, metody i dziedziczenie.
Podstawowy wyróżnik: trwałe
obiekty + identyfikatory obiektów
Zmniejszenie dystansu pomiędzy fazami analizy, projektowania i implementacji
Zwiększenie poziomu abstrakcji w myśleniu programistów i użytkowników
Uwzględnienie informacji proceduralnej (metody)
Stworzenie nowego potencjału dla ponownego użycia
Docelowa tendencja - ortogonalna trwałość:
Programista podczas programowania nie musi nic wiedzieć o bazie danych,
operując na jej obiektach tak jak na obiektach/zmiennych programu.
Baza danych powinna być niewidoczna (przezroczysta).
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 13
Co zdarzyło się w systemach po przejściu na
technologie obiektowe?
Część informacji semantycznej, która tradycyjnie tkwiła w bibliotekach, typach,
aplikacjach, modułach została umieszczona i usystematyzowana w ramach klas.
Relacyjna
struktura aplikacji
Obiektowa
struktura aplikacji
Powiązane obiekty
Pasywne dane
(relacje)
... ...
... ...
... ... ...
... ... ...
Klasy i typy
...
...
...
...
...
...
... ... ...
... ... ...
...
...
...
...
...
...
...
...
...
Biblioteki
procedur i funkcji
Słowniki,
katalogi
Typy
Moduły
aplikacyjne
Procedury bazy danych,
perspektywy, reguły
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 14
Biblioteki
procedur i funkcji
Słowniki,
katalogi
...
...
...
Moduły
aplikacyjne
Procedury bazy danych,
perspektywy, reguły
Obiektowy SZBD jest to SZBD
Klasyczne funkcje SZBD:
 Zarządzanie pamięcią zewnętrzną
 Zarządzanie schematem
 Sterowanie współbieżnością
 Zarządzanie transakcjami
 Odtwarzalność
 Przetwarzanie zapytań
 Kontrola dostępu
Do tych funkcji dołożone są:
 Złożone obiekty
 Typy definiowane przez użytkownika
 Tożsamość obiektów
 Powiązania pomiędzy obiektami
 Hermetyzacja, interfejsy do obiektów
 Typy i/lub klasy oraz hierarchia dziedziczenia
 Przełanianie/przeciążanie/późne wiązanie
 Kompletność obliczeniowa (pragmatyczna)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 15
Manifest obiektowych baz danych
połowa 1989
M.Atkinson, F.Bancilhon, D.DeWitt, K.Dittrich, D.Maier, S. Zdonik
Cechy obowiązkowe
 złożone obiekty
 przesłanianie z dynamicznym wiązaniem
 tożsamość obiektów
 rozszerzalność
 hermetyzacja
 kompletność obliczeniowa
 dziedziczenie
 zarządzanie pamięcią pomocniczą
 typy lub klasy
 współbieżność, odtwarzanie
 trwałość
 udogodnienia dla zapytań ad hoc
Cechy opcyjne
Cechy otwarte
wielokrotne dziedziczenie, kontrola typów,
rozproszenie, transakcje projektowe, wersje
paradygmat programowania, metody reprezentacji obiektów,
system typów, jednolitość (kompatybilność)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 16
Manifest baz danych “trzeciej generacji” (3GBD)
początek 1990
Doktryny:
M.Stonebraker, L.Rowe, B.Lindsay, J.Gray, M.Carey, M.Brodie, P.Bernstein, D.Beach
 3GBD mają wspomagać bogatsze struktury danych i reguły
 3GBD muszą posiadać wszystkie pozytywne cechy 2GBD
 3GBD muszą być otwarte dla innych systemów
13 postulatów:
 3GBD muszą posiadać bogaty system typów
 Dziedziczenie jest dobrym pomysłem
 Funkcje (włączając zapamiętane procedury i metody) + hermetyzacja są dobrymi pomysłami.
 Unikalne identyfikatory powinny być stosowane wtedy, gdy nie są dostępne klucze pierw.
 Reguły (wyzwalacze, więzy) staną sie główną cechą przyszłych systemów
 Cały dostęp do bazy danych powinien odbywać się poprzez nieproceduralny język wys.poz.
 Kolekcje powinny być specyfikowane zarówno przez ich wyliczenie jak i poprzez zapytanie
 Aktualizowanle perspektywy są istotne
 Własności fizyczne nie mają związku z modelem danych i powinny być z niego usuniete
 3GBD muszą być dostępne z wielu języków wysokiego poziomu
 Języki te powinny być wyposazone w cechę trwałości i możliwości języków zapytań
 Na lepsze i gorsze, SQL jest intergalaktycznym językiem danych
 Zapytania i odpowiedzi na zap. powinny być dolnym poziomem komunikacji klient-serwer
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 17
Systemy obiektowo-relacyjne
Powstają w wyniku ostrożnej ewolucji systemów relacyjnych w kierunku obiektowości,
liczą na pozycję systemów relacyjnych na rynku i odwołują się do ich wiernej klienteli.
Nacisk dwóch tendencji:
Rynek domaga się cech pozwalających zniwelować niedostatki relacyjnej technologii,
szczególnie w zakresie danych multimedialnych, związania z danymi informacji
behawioralnej (reguł, metod), modelowania pojęciowego i środków programowania
aplikacji.
Pokusa wprowadzenia wielu cech obiektowości, takich jak klasy, metody, dziedziczenie,
abstrakcyjne typy danych, pozwalających na twierdzenia o „częściowej obiektowości”
systemów relacyjnych.
Podejście jest określane jako „hybrydowe” lub „obiektowo-relacyjne”.
Ostatnio karierę robi także termin „uniwersalny serwer” (universal server)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 18
Kluczowe systemy obiektowo-relacyjne
Informix Universal Server,
DB2 Universal Database (IBM),
Oracle8,
UniSQL/X,
OSMOS (Unisys),
OpenIngres (Computer Associates),
Sybase Adaptive Server,
Montage,
Omniscience,
Raima Database Manager,
Total ORDB
....
Przystosowanie do multimediów (duże obiekty BLOB, CLOB i pliki binarne),
Dane przestrzenne (spatial),
Abstrakcyjne typy danych (ADT),
Metody (funkcje i procedury) definiowane przez użytkownika w różnych językach (C++, VisualBasic, Java)
Kolekcje (zbiory, wielozbiory, sekwencje, zagnieżdżone tablice, tablice o zmiennej długości),
Typy referencyjne,
Przeciążanie funkcji,
Późne wiązanie
....
Zachowują wiele technologii, które sprawdziły się w systemach relacyjnych, takie jak:
architektura klient/serwer,
mechanizmy buforowania i indeksowania,
przetwarzanie transakcji,
optymalizacja zapytań
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 19
Po co systemy obiektowo-relacyjne?
Szybki i pewny zysk
Komercyjny sukces nie jest jednak sprawą pewną:
Informix osiągnął w 1997 r. wynik finansowy o 100 mln.$ niższy niż zakładał plan,
Dobre wyniki osiąga Oracle8,
prawdopodobnie wskutek zintegrowania produktu z ogromnym pakietem usług i udogodnień.
Ideologiczne zalety obiektowo-relacyjnych baz danych są nieprzekonywujące:
z koncepcyjnego punktu widzenia obiektowe bazy danych włączają struktury relacyjne jako
przypadek szczególny.
Galimatias komercyjnej retoryki powodujący mnóstwo nieporozumień.
Mnożenie bytów ponad potrzebę wskutek relacyjnej „spuścizny”
Brak bazy intelektualnej, a raczej jej rozmydlenie i rozbełtanie
Totalnie niekompatybilne: muszą odejść od standardu SQL-92 (nowe struktury danych)
Powołują się na standard SQL3, który będzie gotowy (?) za 3-5 lat
Systemy obiektowo-relacyjne mają wyraźny posmak dekadencji,
eklektyzmu i kryzysu koncepcji - cech swoistych dla granicy epok.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 20
SQL 3
Nowy standard języka SQL, opracowywany przez ANSI oraz ISO,
następca i rozszerzenie SQL-92.
W założeniu, uniwersalny język programowania dla relacyjnych baz danych z obiektowością.
Kompatybilność „w dół” ze standardem SQL-92.
Abstrakcyjne typy danych (ADT),
Metody pisane w SQL3 lub w innych językach.
Identyfikatory obiektów
Podtypy
Dziedziczenie,
Polimorfizm,
Integracja z językami zewnętrznymi
Usprawnienia konstrukcji definiujących tablice
typy wierszy,
identyfikatory wierszy
mechanizm dziedziczenia.
Struktury sterujące
Typy parametryczne
Tablica ma kolumnę IDENTITY, która zawiera TID.
Atrybuty obliczane (metody funkcyjne)
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 21
Dla dowolnej zadeklarowanej
tablicy można zadeklarować
podtablicę, która zawiera
wszystkie kolumny macierzystej
tablicy plus niektóre nowe
kolumny.
SQL3 -charakterystyka
Jak dotąd, rozszerzenia w SQL3 są redundantne i niezbyt spójne.
Standard znajduje się w fazie opracowywania i będzie gotowy przypuszczalnie w
latach 2000-2002.
Kontrowersje wzbudza ogromna objętość tego standardu, powodowana przez
nagromadzenie różnych pomysłów bez klarownie wyartykułowanego modelu
danych i podstawy ideologiczno-teoretycznej. Mówi się, ze już ma 1200 - 1500
stron, a ciągle rośnie
Kontrowersyjne jest podjęcie prac badawczo-rozwojowych w zakresie konstrukcji
języka programowania baz danych przez ciało standaryzacyjne, statutowo
powołane do innych celów i posiadające inne kompetencje.
Istnieje koncepcja integracji języków SQL3 i OQL wg standardu ODMG, chociaż
wobec zupełnie innych założeń hasła integracji chyba nikt nie traktuje poważnie.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 22
Obiektowość kontra model relacyjny
Warstwa technologii (1)
Sprzymierzeńcem wszystkich wdrożonych technologii baz danych, w tym relacyjnych,
jest ogromna bezwładność rynku zastosowań, który niechętnie zmienia swoje
preferencje, szczególnie jeżeli zostały zainwestowane duże pieniądze i czas.
Jeżeli jakaś koncepcja technologiczna opanowała pewną dziedzinę zastosowań i/lub teren
geograficzny, wówczas trudno zastąpić ją inną koncepcją, nawet jeżeli jest ona lepsza.
Klient baz danych nie lubi kosztownych zmian i musi mieć pewność, że nie pozostanie sam
i może liczyć na środowisko specjalistów jak i ogólną kulturę techniczną wytworzoną w
związku z daną technologią.
Systemy relacyjne opanowały dużą grupę „nisz ekologicznych” i można przyjąć, że
pozostaną w nich przez kilka, kilkanaście, lub nawet kilkadziesiąt lat.
Systemy obiektowe muszą poszukiwać innych nisz, które nie są zagospodarowane przez
wcześniejsze technologie. Potencjalnym polem zastosowań obiektowych baz danych są
multimedia, dziedziny wymagające bardziej rozbudowanych struktur danych, takie jak CAD
(Computer Aided Design), CAM (Computer Aided Manufacturing), CASE, lub dziedziny
implikujące nieregularne, niesformatowane struktury danych, takie jak zastosowania pełnotekstowe, hurtownie danych, zastosowania biurowe.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 23
Obiektowość kontra model relacyjny
Warstwa technologii (2)
Prawie wszystkie systemy relacyjne przechodzą etap radykalnych modernizacji (m.in., a
może przede wszystkim) w związku z wyzwaniem jakie stawiają technologie obiektowe.
Następuje wzmocnienie struktur danych przechowywanych w systemach relacyjnych o
nowe możliwości. Rozszerzenia te wprowadzają wiele elementów obiektowości.
Wiele systemów relacyjnych jest wyposażane w możliwość współdziałania z innymi
systemami (w tym nie-relacyjnymi) według standardu obiektowego OMG CORBA.
Ponad 90% programów rzekomo „zgodnych” ze standardem SQL-92 nie daje się przenieść
na inne platformy SZBD, głównie ze względu na niepełność tych standardów oraz
niekompatybilne rozszerzenia implementowane w poszczególnych systemach.
Specjaliści powątpiewają co do implementowalności SQL3
Nie istnieje własność systemów relacyjnych, która nie mogłaby być równie dobrze
zrealizowana w systemach obiektowych
Wbrew rozpowszechnianym mitom, obiektowość sprzyja wydajności m.in. poprzez
technikę przemiany wskaźników (pointer swizzling), indeksy ścieżkowe (path indices),
oraz poprzez nowe mechanizmy indeksacji i buforowania umożliwiającymi istotne
przesunięcie przetwarzania na stronę klienta w architekturze klient-serwer.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 24
Obiektowość kontra model relacyjny
Warstwa ideologii
Model relacyjny przegrał konfrontację z obiektowością w warstwie ideologicznej.
Dzisiaj nie jest widoczny liczący się ośrodek naukowy, który aktywnie rozwijałby
model relacyjny od strony ideologiczno-naukowej.
Główną wadą koncepcyjną modelu relacyjnego jest to, co miało być jego zaletą, mianowicie
prostota struktur danych. Informacje o pojęciach wyróżnialnych w rzeczywistości są
rozproszone w krotkach wielu tablic, co burzy związek pomiędzy pojęciowym obrazem
świata, a pojęciowym obrazem struktur danych modelujących ten świat.
Model relacyjny nie zajmuje się informacją proceduralną, która często jest istotną składową
obrazu pojęciowego danych. Wobec braku systematycznych środków, wszelkie informacje
wykraczające poza strukturę relacyjną są implementowane ad hoc.
Ideologia relacyjna jest oparta na naiwnych poglądach co do środków przetwarzania
informacji. Trzonem tych środków miały być operatory algebry relacji lub rachunku
relacyjnego; niestety, okazały się one zbyt mało uniwersalne. Duża część tego
przetwarzania musiała być oddelegowana do uniwersalnych języków programowania, co
doprowadziło do niekorzystnego efektu niezgodności impedancji. W konsekwencji
postulowane przez model relacyjny przetwarzanie makroskopowe wróciło do niesławnego
przetwarzania niskiego poziomu, np. poprzez kursory w zagnieżdżonym SQL.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 25
Obiektowość kontra model relacyjny
Warstwa teorii
Nieautentyczny, dekoracyjny charakter relacyjnych teorii. Są pseudo-naukowymi fasadami.
Zastosowanie teorii zależności funkcjonalnych, wielowartościowych i innych, sprowadza się
do definicji kilku pojęć (2NF, 3NF,...) o znaczeniu marginalnym dla praktyki projektowania.
Oparcie semantyki języków zapytań takich jak SQL o algebrę relacji lub rachunek relacyjny
jest pomysłem całkowicie nieudanym. Teorie te są niedostatecznie uniwersalne dla SQL.
Mitem są twierdzenia, że metody optymalizacji zapytań są konsekwencją odkrytych własności
algebry relacji.
Całkowite fiasko badań nad niekompletną informacją (setki publikacji!) . Rozwiązania w tym
zakresie są pozbawione logiki i konsekwencji. Całkowite fiasko rozszerzeń teoretycznych
takich jak uniwersalne relacje i dedukcyjne bazy danych (setki publikacji!).
W systemach „post-relacyjnych” lub „obiektowo-relacyjnych” termin „relacyjny” ma
wyłącznie znaczenie tradycyjno-dekoracyjne. Systemy te, poprzez rozbudowę własności
struktur danych i języków przetwarzania danych, nie są w stanie skorzystać z własności
matematycznego pojęcia relacji w duchu relacyjnego modelu danych.
Twierdzenia, że model relacyjny posiada „solidne podstawy matematyczne” zaś
obiektowość ich nie posiada są fałszywymi stereotypami i popisami demagogów.
Zarówno systemy relacyjne, jak SQL, jak i systemy obiektowe nie mają istotnej teorii.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 26
Częste mity przy porównaniach (1)
W odróżnieniu od systemów obiektowych, systemy relacyjne i SQL posiadają solidne podstawy
matematyczne. Nieprawda. Struktury danych implementowane w systemach relacyjnych (tablice)
odbiegają od matematycznych relacji. Jakakolwiek teoria słuszna dla relacji nie musi obowiązywać dla tych
struktur. Semantyka SQL odbiega od ram formalnych takich jak algebra relacji i rachunek relacyjny. SQL
posiada wiele operatorów nie rozpatrywanych przez relacyjne teorie, np. operatory aktualizacyjne,
uporządkowanie, grupowanie, eliminacja duplikatów, operatory arytmetyczne, funkcje zagregowane, itd.
SQL jest oparty na logice matematycznej. Przekręt w wykonaniu J. Ullmana.
Nie można zagnieżdżać obiektowych zapytań, ponieważ nie są one oparte na własności domkniętości
(closure property). Argument dowodzi kompletnego niezrozumienia tematu. Zapytania w OQL można
zagnieżdżać pomimo (pozornego) nie spełnienia własności domkniętości.
Można skonstruować kompletny język zapytań/programowania oparty wyłącznie o algebrę relacji.
Tę demagogię propaguje utwór „The Third Manifesto” H.Darwena i C.J.Date.
Operatory algebry relacji spełniają tę samą rolę dla systemów baz danych jak operatory
arytmetyczne dla komputera. Demagogia. Operatory algebry relacji są daleko nie wystarczające do
realizacji nawet najprostszych aplikacji w systemach relacyjnych. Wewnętrzny mechanizm baz danych jest
oparty o bardzo szeroki zestaw operatorów, z reguły znacznie odbiegających od operatorów algebry relacji.
Systemy obiektowe nie mogą być (nie są) wyposażone w języki zapytań. Nieprawda. Mogą być i są
wyposażane np. w OQL.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 27
Częste mity przy porównaniach (2)
Systemy relacyjne umożliwiającą matematyczną weryfikację poprawności zaprojektowanej bazy
danych. Nie umożliwiają. Projektowanie relacyjnych baz danych jest z reguły oparte o całkowicie
nieformalny model encja-związek. Pojęcia takie jak 2NF, 3NF, 4NF, BCNF oraz związane z nimi teorie
zależności funkcjonalnych i wielowartościowych mają dla praktyki znaczenie marginalne i służą prawie
wyłącznie jako pseudo-naukowy muł zapychający programy nauczania i podręczniki dla studentów.
Projektant instynktownie unika sytuacji, które nie są zgodne z 3NF, 4NF, itd.. Są sytuacje, kiedy projektant
podejmuje świadomą decyzję prowadzącą do niezgodności z 3NF i 4NF; nie przewiduje ich teoria.
Standard SQL-92 zapewnia pełną przenaszalność oprogramowania pomiędzy różnymi systemami
relacyjnych baz danych. Nie zapewnia. Są opinie, że ponad 95% programów zgodnych z SQL-92 nie jest
przenaszalna. Istnieje kilka powodów: (1) Semantyka SQL-92 jest wyspecyfikowana nieprecyzyjnie i
pozostawia wiele luk, np. w zakresie dostępu do katalogów; (2) SQL musi być zanurzony w język
programowania (np. C), którego standaryzacja jest zwykle wątpliwa; (3) Dostawcy systemów nie traktują
poważnie kwestii zgodności ze standardem, czyniąc dość dowolne odstępstwa i rozszerzenia; (4) Wiele
oprogramowania bazuje na mutacjach SQL (np. ODBC, JDBC, PL/SQL systemu Oracle lub OpenRoad
systemu Ingres).
Systemy relacyjne umożliwiają realizację dowolnego zastosowania. Nieprawda. Dla wielu zastosowań
struktury relacyjne okazują się zbyt sztywne. Odwzorowanie struktur pojęciowych (np. struktury klas i
asocjacji) na struktury relacyjne wiąże się ze znacznym wzrostem złożoności, która może podważyć
osiągalność celów projektu.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 28
Częste mity przy porównaniach (3)
Obecność wskaźników w strukturach obiektowych cofa rozwój do czasów CODASYLu (lat 70siątych). Demagogia. W starych systemach sieciowych programista posługiwał się wskaźnikami
fizycznymi explicite, co miało liczne wady. W systemach obiektowych wskaźniki mają charakter
pojęciowych asocjacji, które poprawiają percepcję schematów baz danych, znacznie upraszczają zapytania i
programy, upraszczają pielęgnację oprogramowania, redukują zapotrzebowanie na pamięć i umożliwiają
znaczną poprawę czasów wykonania poprzez bezpośrednią nawigację wzdłuż wskaźników lub np. poprzez
technikę przemiany wskaźników (pointer swizzling).
Model relacyjny i systemy relacyjne w unikalny sposób sprzyjają implementacji rozproszonych baz
danych. Mit uzasadniany powierzchownymi cechami, takimi jak możliwość „łatwej” dekompozycji
relacyjnej bazy danych na składowe lub dekompozycji relacji na pod-relacje. Te cechy nie są w stanie
uprościć zasadniczych problemów rozproszenia danych, takich jak przezroczystość rozproszenia,
rozproszone transakcje, przetwarzanie zapytań w sytuacji rozproszenia, replikacje, autonomia lokalnych
baz danych, osłony, mediatory i perspektywy do spadkowych baz danych, itd. Nie widać powodów, dla
których w obiektowych bazach danych te problemy miałyby być cięższe. Pojawienie się standardów takich
CORBA, DCOM i JavaBeans sugeruje, że dalszy rozwój rozproszonych baz danych będzie odbywał się w
oparciu o technologie obiektowe.
Obiektowe bazy danych sprowadzają się do dodania cechy trwałości do obiektowych języków
programowania. Nieprawda. Obiektowe bazy danych są wyposażane we wszystkie niezbędne
mechanizmy baz danych takie jak: zarządzanie pamięcią zewnętrzną, schematem, współbieżnością,
odtwarzaniem i transakcjami, środki bezpieczeństwa i prywatności, przetwarzanie zapytań, interfejsy do
szybkiego tworzenia aplikacji, środki wspomagające rozproszone bazy danych, i inne.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 29
Częste mity przy porównaniach (4)
Hermetyzacja jest zła, bo bezsensownie ogranicza bezpośredni dostęp do danych i uniemożliwia
realizację języka zapytań. Nieporozumienie wynikające ze złej definicji hermetyzacji. Hermetyzacja,
polegająca na oddzieleniu specyfikacji od implementacji i ukryciu nieistotnych szczegółów
implementacyjnych, jest podstawową zasadą nie tylko obiektowości, ale całej inżynierii oprogramowania.
Hermetyzacja w duchu języków Modula-2, C++, Java i Eiffel nie stwarza jakichkolwiek trudności
koncepcyjnych z językami zapytań lub konieczności naruszenia reguł hermetyzacji.
Obiektowe języki zapytań nie posiadają sprawnych metod optymalizacyjnych. Demagogia, z kilku
powodów: (1) Podstawowym celem metod optymalizacyjnych w systemach relacyjnych jest kosztowna
operacja złączenia. Ponieważ w systemach obiektowych złączenie jest najczęściej zmaterializowane w
postaci wskaźników (asocjacji), zapotrzebowanie na tę operację jest znacznie zredukowane; (2) Jak
wykazują testy, optymalizacja relacyjnych języków zapytań nie zawsze jest tak sprawna, jak to jest
podkreślane w literaturze; (3) Metody oparte na przepisywaniu (rewriting), np. przesuwanie selekcji i
projekcji przed złączenie, działają tak samo dla języków relacyjnych jak i obiektowych; (4) Nie można
wskazać powodów, dla których metod sprawnych w systemach relacyjnych nie można zastosować w
systemach obiektowych; (5) Ortogonalność i bardziej precyzyjna semantyka OQL (w stosunku do SQL)
stwarza większy potencjał dla metod optymalizacyjnych; (6) Systemy obiektowe są o ok. 15 lat młodsze od
relacyjnych, a mimo to wiele testów pokazuje, że są znacznie od nich sprawniejsze (niekiedy tysiące razy).
Obiektowe bazy danych mają małą wydajność. Twierdzenie dowolne. Patrz wyżej.
Obiektowe bazy danych uniemożliwiają implementację perspektyw, aktywnych
zapamiętanych procedur. Twierdzenie dowolne. Ustala stan dzisiejszy jako niezmienialny.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 30
reguł
i
Częste mity przy porównaniach (5)
Obiektowość jest teorią, która jak dotąd nie wyszła poza mury uniwersytetów. Odwrotnie,
obiektowość wynikła z praktyki, zaś uniwersytety dość często nastawiły się wrogo do tej idei, m.in. ze
względu na brak „podstaw matematycznych” (t.j. osłabionych możliwości budowy „teorii”, których
jedynym praktycznym celem są szybkie akademickie kariery).
Obiektowość jest dobra na etapie analizy i projektowania, ale jest mało przydatna dla implementacji.
Twierdzenie to wynika z nieprzystosowania zastosowanych narzędzi implementacyjnych (np. relacyjnych
baz danych, baz dokumentów typu Lotus Notes, itp.) do pojęć i technik obiektowych.
Obiektowość jest drugorzędną cechą niektórych języków programowania. Tak od dawna nie jest.
Obiektowość stała się uniwersalną ideą, przerastającą cały system myślenia i technologie realizacji
systemów informacyjnych.
Obiektowe systemy baz danych nie zapewniają skalowalności. Twierdzenie dowolne. Bazuje na
następującej „regule wnioskowania”: jeżeli jakiś obiektowy system X nie ma cechy Y, to wszystkie
obiektowe systemy nie mają cechy Y.
Nikt nie używa systemów obiektowych dla rzeczywistych zastosowań. Dawno przestało być prawdą.
Obiektowe bazy danych nie zapewniają (nie mogą zapewnić) właściwych środków przetwarzania
transakcji. Nieprawda. Wszystkie liczące się systemy obiektowe zapewniają przetwarzanie transakcji.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 31
Obiektowość - potencjalne ryzyko
Nieopracowane mechanizmy zarządzania dużą bazą obiektów, sterowania
wersjami, rejestrowania zmian, zapewnienia stabilności interfejsów
Technologie obiektowe są jak dotąd stosowane przez małe i średnie organizacje.
Nie jest do końca pewne jak przeskalują się dla wielkich organizacji.
Duża liczba tematów znajduje się ciągle w fazie laboratoryjnej.
Szereg technologii jest mało stabilnych (np. metodyki projektowania).
Przejście na technologie obiektowe może zagrozić funkcjonowaniu obecnie
działających i sprawnych systemów, które są krytyczne dla misji organizacji.
Zbyt mała liczba ekspertów jest wyszkolona w zakresie technologii obiektowych.
Nie jest jasne, jakie koszty pociągnie za sobą przejście na technologie obiektowe.
Standardy w zakresie obiektowości są niedopracowane i niestabilne.
Nie wiadomo w jakim zakresie będą one pełnić swoją funkcję.
K.Subieta. Obiektowe BD kontra Relacyjne BD, Folia 32
Download