Obiektowe języki zapytań 1..5

advertisement
Obiektowe języki zapytań
Wykładowca: Kazimierz Subieta
Polsko-Japońska Wyższa Szkoła
Technik Komputerowych, Warszawa
[email protected]
Wykład 1
Instytut Podstaw Informatyki PAN,
Warszawa
[email protected]
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 1
marzec 2004
Plan wykładów
Cel tej serii wykładów:
- objaśnienie formalnych aspektów obiektowych baz danych,
- objaśnienie podejścia stosowego do obiektowych języków zapytań









Generalne założenia podejścia stosowego
Wprowadzenie do języków zapytań
Pojęcia obiektowości w bazach danych - przypomnienie i dyskusja
Podstawy semantyczne języków zapytań
Modele składu obiektów - M0, M1, M2 i M3
Stos środowisk i wiązanie nazw
SBQL (Stack-Based Query Language)
Konstrukcje imperatywne w SBQL
Procedury, funkcje i metody w SBQL
Dalsze wykłady: perspektywy w SBQL, optymalizacja zapytań, mocna kontrola
typologiczna, aspektowe, rozproszone, federacyjne bazy danych – w przyszłym
semestrze.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 2
marzec 2004
Wykład 1
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 3
marzec 2004
Wprowadzenie do języków zapytań
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 4
marzec 2004
Ogólna charakterystyka języków zapytań (1)
query languages
 Języki zapytań są przyjaznymi dla użytkowników interfejsami do
bazy danych, umożliwiającymi jej przeszukiwanie według dowolnie
wybranych kryteriów i dowolnie określanego wyniku
wyszukiwania.
 Języki zapytań tworzą relatywnie nową dziedzinę informatyki, która
(jak dotąd) jest związana z tematyką baz danych.
 Językiem zapytań dla relacyjnych baz danych jest SQL. SQL jest
uważany za źródło komercyjnego sukcesu całej technologii
relacyjnych baz danych.
 Pozycja SQL jako czołowego języka dla relacyjnych baz danych
została wzmocniona przez standardy ANSI (American National
Standard Institute) oraz ISO (International Standard Organization):
SQL-89 oraz SQL-92. Zakończyły się także prace nad standardem
SQL3, który uzyskał nowe oznaczenie SQL-99.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 5
marzec 2004
Ogólna charakterystyka języków zapytań (2)
 SQL stał się podstawą lub uzupełnieniem wielu produktów, np.
języków czwartej generacji (4GL), narzędzi RAD, języków
programowania np. Oracle PL/SQL oraz różnych API, w
szczególności ODBC i JDBC.
 SQL podlegał licznym rozszerzeniom, m.in. poprzez konstrukcje
zmieniające bazę danych (update, insert, delete), w kierunku
języków programowania (np. Oracle PL/SQL), perspektyw (views),
procedur zapamiętanych w bazie danych (stored procedures), oraz
wyzwalaczy (triggers).
 Najbardziej znanym obiektowym językiem zapytań jest OQL
zaproponowany jako fragment standardu ODMG.
 OQL był omawiany w poprzednim semestrze, gdzie
przedyskutowane były jego zalety i (dość liczne) wady.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 6
marzec 2004
Teorie języków zapytań
 Wraz z językami zapytań pojawiły się różnorodne teorie, takie jak
algebra relacji, rachunek relacyjny i odmiany logiki matematycznej.
 Teorie języków zapytań są istotne z kilku względów, w
szczególności ustalają ich bazę koncepcyjną, semantyczną i
dydaktyczną, oraz zasadniczo wspomagają opracowanie metod
optymalizacyjnych.
 Pojawiło się także wiele metod empirycznych, w szczególności
dotyczących optymalizacji zapytań.
 Niestety, algebra relacji i rachunek relacyjny przykrywają kilka
procent konstrukcji SQL i nie są z nim do końca spójne
 Metody optymalizacyjne są zbytnio przywiązane do relacyjnego
modelu danych (którego czas minął) i do fizycznych własności
systemów, mają ograniczony zakres stosowalności, oraz mają luki i
niejasności koncepcyjne.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 7
marzec 2004
Chaos...
 Pojawienie się obiektowych i obiektowo-relacyjnych (object-relational)
baz danych stworzyło w tej dziedzinie nową jakość.
 Dotyczy to także technologii internetowych opartych o standard XML,
który jest ostatnio postrzegany jako nowy model bazy danych.
 Nowe modele danych, standardy, rozwiązania praktyczne, metody i teorie
spowodowały stan, który można określić jako totalny chaos:
• brak spójnych, jednorodnych podstaw teoretycznych,
• przypadkowość rozwiązań praktycznych.
 Dominują w tym względzie liczne rozszerzania operatorów obecnych w
SQL oraz rozszerzania i modyfikacje teorii takich jak algebra relacji,
rachunek relacyjny i innych.
 Świadectwem chaosu są wadliwe standardy SQL-99 i ODMG OQL.
 Świadectwem chaosu jest także stan języków zapytań dla XML, wśród
nich XQL, XPath, XLink, XPointer, XQuery i inne.
 Opakowanie składni w XML czyni je bardzo nieczytelnymi i jest bez
sensu. Niezrozumiałe jest dążenie do specjalizowania tych języków (np.
XPath, XLink, XPointer).
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 8
marzec 2004
Czy przyszłością języków zapytań jest SQL, OQL lub
XQuery?
 Propozycje są kontrowersyjne.
 SQL-99 jest krytykowany za eklektyzm, wszystkoizm i przypadkowość decyzji w
zakresie konstrukcji językowych, co owocuje monstrualną specyfikacją (ponad
1500 stron, plus dodatki, razem ponad 5000 stron).
 Jest wątpliwe, aby ktokolwiek zaimplementował ten język w całości.
 OQL jest językiem znacznie mniejszym, ze specyfikacją mieszczącą się na
kilkudziesięciu stronach, ale pozwala wyłącznie na wyszukiwanie danych.
Brakuje konstrukcji imperatywnych, perspektyw, procedur, itd.
 Co za tym idzie, programowanie w OQL wymaga zanurzenia zapytań w
uniwersalny język programowania: C++, Smalltalk i Java.
 Zanurzenie języka zapytań w uniwersalny język programowania ma złą sławę
określaną jako „niezgodność impedancji”.
 XQuery wzoruje się na OQL, ale wprowadza w sposób nieco chaotyczny dalsze
cechy, np. funkcje definiowane przez użytkowników.
 Wszystkie te propozycje cechuje niespójność (i w gruncie rzeczy, brak istotnej
koncepcji) w zakresie semantyki.
 Metody optymalizacyjne dla tych języków są w stanie embrionalnym.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 9
marzec 2004
Czy warto zabiegać o precyzyjną semantykę?
 Brak precyzyjnej semantyki jest powszechny dla nowo powstających
języków programowania.
 W przypadku języków zapytań sytuacja jest odmienna w porównaniu do
klasycznych języków programowania.
 Języki zapytań są dramatycznie nieefektywne (praktycznie
nieakceptowalne) w przypadku braku automatycznej optymalizacji.
 Optymalizacja oznacza zamianę zapytania q1, którego czas wykonania jest
dramatycznie długi (np. 300 lat), na semantycznie równoważne
zapytanie q2 posiadające akceptowalny czas wykonania (np. 5 sekund).
 Powoduje to konieczność ustalenia, co to znaczy „semantycznie
równoważne zapytanie”. Jest to niemożliwe bez precyzyjnej formalizacji
zarówno danych, na których operują zapytania, jak i semantyki
operatorów występujących w zapytaniach.
 Uzyskanie pełnej jasności i precyzji opisu semantyki obiektowych
języków zapytań jest celem tego wykładu.
 Wykład będzie opierać się o podejście stosowe do obiektowych języków
zapytań.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 10
marzec 2004
Generalne założenia podejścia stosowego
stack-based approach, SBA
 Podejście stosowe zakłada, że języki zapytań są szczególnym
przypadkiem języków programowania.
 Stąd teorie języków programowania są bardziej adekwatne niż podejścia
takie jak algebra relacyjna, rachunek relacyjny lub logika matematyczna.
 W podejściu stosowym kluczową rolę odgrywa stos środowisk
(environment stack), który jest podstawowym mechanizmem praktycznie
wszystkich popularnych języków programowania.
 Jego rolą jest określenie zakresów nazw (scoping), wiązanie nazw
(binding) oraz wprowadzenie dyscypliny w zakresie alokowania
dynamicznych bytów programistycznych, w szczególności lokalnych
danych (obiektów) i parametrów procedur.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 11
marzec 2004
Zalety podejścia stosowego
 Oparcie semantyki języków zapytań na mechanizmie stosu środowisk
umożliwia precyzyjne wyjaśnienie ich semantyki.
 Inne podejścia do semantyki obiektowych języków zapytań są wadliwe:
• Podstawy teoretyczne (np. algebra relacji, algebry obiektowe) nie obejmują
wszystkich konstrukcji spotykanych w językach zapytań.
• Posiadają zasadnicze wady koncepcji, są semantycznie nieprecyzyjne.
• Nie dają bezpośredniej możliwości rozszerzeń: uwzględnienia pojęć
obiektowości (klasy, dziedziczenie, hermetyzacja), konstrukcji
imperatywnych (update, insert, delete), abstrakcji BD (perspektywy,
procedury BD, funkcje, trygery, komunikowanie parametrów).
 SBA pozwala na włączenie do konstruowanego języka wszystkich pojęć
obiektowości oraz dowolnych konstrukcji i abstrakcji imperatywnych.
 Podejście jest bezpośrednio implementowalne. Przedstawiony będzie
SBQL (Stack-Based Query Language) oparty na SBA i zrealizowany w
prototypowym systemie Loqis oraz w dalszych implementacjach.
 Podejście jest optymalizowalne przy pomocy generalnych metod.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 12
marzec 2004
Podejście stosowe jako efektywna teoria
 Podejście stosowe jest konkurencją dla teorii znanych z modelu relacyjnego, takie
jak algebra relacyjna, rachunek relacyjny i logika matematyczna.
 Podejście stosowe jest samo-wystarczalne – w zakresie dowolnego tematu
dotyczącego obiektowych baz danych, włączając optymalizację zapytań nie
potrzebuje posiłkować się jakimikolwiek innymi teoriami, np. obiektowymi
algebrami.
 Podejście stosowe eksponuje braki i wady obecnych teorii w zakresie baz danych,
pokazując ich ograniczenia i nieadekwatność do problemu.
 Brak spójnej, całościowej i uniwersalnej teorii języków zapytań podczas
tworzenia standardów ODMG i SQL-99 jest podstawową przyczyną ich wad.
 W efekcie chaotycznych decyzji nie opierających się o jakąkolwiek spójną teorię,
standardy te są intelektualnymi i technicznymi bublami nie nadającymi się do
dydaktyki i do efektywnej całościowej implementacji.
 Dwóch zdolnych studentów znających podejście stosowe potrafi zaprojektować i
zaimplementować w ciągu roku lepszy i mocniejszy język zapytań niż duże
konsorcja specjalistów z renomowanych firm zachodnich. Ten eksperyment został
już 4-krotnie powtórzony w PJWSTK.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 13
marzec 2004
Konstrukcje bazujące na zapytaniach
 Zapytania są także podstawą abstrakcji programistycznych takich jak
procedury, metody, funkcje (procedury funkcyjne) i perspektywy.
 Znane z SQL perspektywy (views) są procedurami funkcyjnymi, których
ciało składa się z pojedynczego zapytania, w związku z czym ich
uniwersalność jest ograniczona.
 Podejście stosowe nie zmusza do tego rodzaju ograniczeń: dowolne
procedury i perspektywy mogą mieć pełną moc algorytmiczną.
 Dzięki mechanizmowi stosu środowiskowego wszystkie procedury,
metody i funkcje/perspektywy mogą być rekurencyjne oraz mogą mieć
parametry będące zapytaniami.
 W podejściu stosowym można bez trudu wyjaśnić mechanizmy
komunikacji parametrów, znane jako call-by-value, call-by-reference i
inne, w odniesieniu do parametrów będących zapytaniami.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 14
marzec 2004
Perspektywy i ich problemy
 Perspektywy są definiowane poprzez język zapytań i mogą być używane
(wywoływane) w zapytaniach. Umożliwiają one przystosowanie schematu
bazy danych do konkretnych wymagań użytkownika, ograniczają dostęp
do danych oraz mogą stanowić podstawę integracji rozproszonych,
heterogenicznych baz danych. Problemy związane z perspektywami:
• Koncepcyjna uniwersalność: język perspektyw powinien dawać możliwość
dowolnego odwzorowania zapamiętanych danych w dane wirtualne.
• Aktualizacja wirtualnych danych widzianych poprzez perspektywę. Istotne
jest zapewnienie przezroczystości aktualizacji wirtualnych danych polegającej
na tym, że z punktu widzenia użytkownika lub programisty nie występują
jakiekolwiek różnice w operowaniu na zapamiętanych i wirtualnych danych.
Problem aktualizacji danych wirtualnych jest znany od 1974 roku, ale
dotychczas nie doczekał się uniwersalnego rozwiązania.
• Optymalizacja: efektywna realizacja zapytań odwołujących się do
perspektyw. Bezpośrednia implementacja, poprzez zmaterializowanie wyniku
perspektywy dla konkretnego zapytania, prowadzi do nieakceptowalnych
czasów wykonania, zatem konieczne są mocne metody optymalizacyjne.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 15
marzec 2004
Optymalizacja zapytań
 Bezpośrednia implementacja semantyki, w sytuacji gdy bazy danych
zawierają miliony danych, prowadzi do nieakceptowalnego czasu
odpowiedzi na zapytanie.
 Radykalne skrócenie tego czasu, zwane optymalizacją, staje się więc
koniecznością, zaś język zapytań, który nie jest wspomagany przez
optymalizację, nie ma szans na akceptację ze strony klientów baz danych.
 Metody optymalizacyjne znane z systemów relacyjnych z trudem przenosi
się na modele obiektowe, ze względu na przywiązanie tych metod do cech
modelu relacyjnego oraz do fizycznej reprezentacji danych.
 Optymalizacja zapytań jest katalizatorem rozwoju teorii języków zapytań.
Optymalizacja najczęściej polega na tym, że zapytanie q1 jest
automatycznie zamieniane na semantycznie równoważne zapytanie q2,
które rokuje znacznie lepszy czas wykonania.
 Teoria jest niezbędna do tego, aby odpowiedzieć na pytanie: co to znaczy
„semantycznie równoważne”?
 Odpowiedź na to pytanie wymaga założenia, że każdy najdrobniejszy
problem semantyczny jest ogromnym problemem.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 16
marzec 2004
SBQL
 Podczas wykładu zostaną wyjaśnione założenia i semantyka języka
zapytań SBQL (Stack Based Query Language) opartego na podejściu
stosowym.
 SBQL jest pewną idealizacją opartą na abstrakcyjnej składni, pokazującą
istotę semantyki operatorów wprowadzonych w większości języków
zapytań.
 SBQL pełni on tę samą rolę, którą w relacyjnych językach zapytań pełni
algebra relacji i rachunek relacyjny.
 Zasadniczą nowością wprowadzoną w SBQL są operatory niealgebraiczne, takie jak operatory selekcji, projekcji/nawigacji, złączenia,
kwantyfikatory, operator tranzytywnego domknięcia i operator
porządkowania.
 Semantyka tych operatorów nie może być wyrażona w terminach algebry
podobnej do algebry relacji. Jak się okazało, ich semantykę można w
prosty sposób wyrazić poprzez operacje na stosie środowiskowym, przy
czym pewnym zaskoczeniem jest to, że semantyka tych wydawałoby się
bardzo różnych operatorów jest oparta o ten sam prosty mechanizm.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 17
marzec 2004
Dlaczego operatory są nie-algebraiczne?
 Twórcy i kontynuatorzy koncepcji modelu relacyjnego przez lata
przyzwyczaili nas, że operatory selekcji, projekcji i złączenia są
zwyczajnymi „operatorami algebraicznymi” w algebrze relacji.
 Nie potrzeba wielkiej wnikliwości matematycznej, aby pokazać, że ich
„algebraizacja” odbyła się kosztem niezbyt rzetelnej sztuczki formalnej, w
której część semantyki została przesunięta do nieformalnego meta-języka
tej algebry.
 Dotyczy to nazw atrybutów, operacji, funkcji i innych elementów
występujących w indeksach operatorów algebry relacji.
 Np. selekcja nie jest pojedynczym operatorem: jest to nieskończona
rodzina operatorów, gdzie konkretny egzemplarz jest wyznaczony poprzez
indeks tego operatora należący do meta-języka tej algebry.
Zar>1000( Prac )
 Indeksy nie należą do formalnej semantyki, są po prostu komentarzem.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 18
marzec 2004
Pojęcia formalne i nieformalne
 W ten sposób uniwersum semantycznych rozważań zostało podzielone na
dwa światy:
• świat formalny pojęć „pierwszej kategorii”, włączający nazwy relacji i
operatory takie jak selekcja, projekcja i złączenie,
• świat nieformalny pojęć „drugiej kategorii” występujący w nieformalnych
komentarzach, w tym w indeksach.
 Ten podział semantyki jest frustrujący, nieakceptowalny i niepotrzebny.
 Matematyka jest neutralna w stosunku do ideologicznych założeń i radzi
sobie nie tylko z relacjami i z algebrą relacji, lecz również z teoriami o
innych założeniach, w których opisana anomalia nie występuje.
 Podejście stosowe nie korzysta więc z teorii wypracowanych przez
społeczność baz danych.
 Wprowadza operatory nie-algebraiczne w taki sposób, aby wyeliminować
podział na w/w dwa światy.
 Podejście stosowe znacznie precyzyjniej formułuje te właśnie pojęcia,
które dotąd są przypisywane algebrze relacji, rachunkowi relacyjnemu lub
logice matematycznej.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 19
marzec 2004
Zapytania = wyrażenia
 W naszym podejściu zapytania będą pełnić rolę wyrażeń znanych z
języków programowania.
 Przyjęta przez nas zasada ortogonalnej trwałości nie różnicuje sposobów
dostępu do trwałych i nietrwałych danych.
 Wobec tego nasze zapytania będą również stosowane do nietrwałych
danych.
 Inaczej mówiąc przyjęliśmy, że w naszym hipotetycznym języku
programowania nie będzie innych wyrażeń niż zapytania.
 Zapytaniami będą więc także klasyczne wyrażenia takie jak 2+2, sin(x),
A[i+1], itd.
 To założenie jest pewną rewolucją w odniesieniu do języków zapytań.
 Tradycyjnie, np. w języku SQL zapytania (zagnieżdżone w język
programowania) mogły odwoływać się do zmiennych języka
programowania poprzez specjalną składnię.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 20
marzec 2004
Konstrukcje i abstrakcje programistyczne
 Podejście stosowe nie stwarza jakiejkolwiek granicy pomiędzy językiem
zapytań i językiem programowania.
 Jeżeli zaimplementowane są mechanizmy języka zapytań, wówczas
przystosowanie ich do konstrukcji imperatywnych i abstrakcji takich jak
moduły, klasy, procedury, funkcje, metody i perspektywy jest zadaniem
dość oczywistym.
 Podejście stosowe prowadzi również do prostych mechanizmów
przekazywania parametrów do procedur (funkcji, metod), w szczególności
mechanizmów znanych jako wołanie przez wartość (call-by-value) i
wołanie przez referencję (call-by-reference).
 Z natury rzeczy, definiowane w podejściu stosowym mechanizmy
umożliwiają dowolne wołania rekurencyjne procedur (funkcji, metod,
perspektyw).
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 21
marzec 2004
Kontrola typologiczna
 Przy rozpatrywaniu języków zapytań, szczególnie języków
zintegrowanych z językami programowania, nie można pominąć kwestii
mocnej kontroli typologicznej.
 Mechanizm mocnej kontroli typów chroni programistów przed ich
własnymi błędami i w związku z tym jest kluczowym czynnikiem
podwyższenia niezawodności oprogramowania.
 Istnieją szacunki pokazujące, że system kontroli typologicznej jest w
stanie wykryć 80% błędów semantycznych i koncepcyjnych.
• Bezpieczeństwo typologiczne (typing safety) jako podstawowa zasada języków
programowania.
• System typów ma również ogromne znaczenie dla modelowania pojęciowego,
gdyż odpowiednio dobrane nazwy typów pełnia rolę semantycznych
kwalifikatorów bytów programistycznych w dziedzinie przedmiotowej.
 Języki bez typów i bez mocnej kontroli typów są uważane za
niebezpieczne, prowadzące do niskiej jakości oprogramowania.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 22
marzec 2004
Co to są "języki zapytań"?
Istnieje na ten temat wiele poglądów, np.:
 Proste, przyjacielskie i naturalne interfejsy dla powszechnego
użytkownika do interakcyjnego formułowania zleceń wyszukiwania w
bazie danych lub jej aktualizacji przez mało doświadczonego
użytkownika. W tej roli znacznie lepsze od SQL są interfejsy graficzne
oparte o okienka, menu, formularze, tabele, przeglądanie, itp.
 Syntaktyczne warianty języków pewnych sławnych matematycznych
teorii, np. logiki. Ten punkt widzenia był lansowany przez teoretyków baz
danych. Obecne języki zapytań zaprzeczają tego rodzaju poglądom.
 Pod-języki bardzo wysokiego poziomu (API) zanurzane w typowe
języki programowania do wyszukiwania i aktualizacji bazy danych. W
tej roli najczęściej występuje SQL. Liczne wady tego podejścia.
 Wyrażenia programistyczne bardzo wysokiego poziomu zintegrowane
z językiem programowania. Tworzą kompletny interfejs do
programowania aplikacji. Przykładem jest PL/SQL systemu Oracle.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 23
marzec 2004
Języki zapytań jako wyrażenia programistyczne
 Ostatni punkt widzenia zakłada nowy rodzaj języka programowania, w
którym występują specyficzne wyrażenia (podobne do klasycznych
wyrażeń języka oprogramowania) zwane „zapytaniami”.
 Istotą tych nowych wyrażeń jest obsługa kolekcji.
 W tej roli języki zapytań są wyższym szczeblem abstrakcji nad
konstrukcjami organizującymi pętle (while, repeat, goto, for, loop, itp.),
iteratorami, kursorami i innymi tego rodzaju udogodnieniami.
 Zapytania koncepcyjnie „hermetyzują” pętle iteracyjne w języku
programowania przy pomocy operatorów takich jak selekcja (where),
projekcja, złączenie, unia, kwantyfikatory, grupowanie, sortowanie, itp.
 Słowo „koncepcyjnie” jest tu istotne, gdyż chodzi o taką hermetyzację,
która jest naturalna, zrozumiała i czytelna dla programisty; wspomagająca
procesy modelowania pojęciowego przy tworzeniu aplikacji.
 W tej koncepcji języki zapytań są tworami całkowicie ortogonalnymi w
stosunku do cechy trwałości danych (czyli bazy danych).
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 24
marzec 2004
Znaczenie języków zapytań
 Obniżenie poziomu profesjonalizmu niezbędnego do programowania
aplikacji baz danych. W tradycyjnych językach programowania aplikacje
te wymagają profesjonalnych, wysoko opłacanych programistów.
 Podwyższenie wydajności programistów poprzez dostarczenie do ich
dyspozycji pojęciowych, makroskopowych operacji, pozwalających
zapisać złożone przetwarzanie w zwartej, czytelnej i zrozumiałej formie.
• Jedno zdanie w SQL może zastąpić kilka stron programu napisanego w
językach takich jak Cobol, C lub Pascal.
• Ma to skutki dla tempa tworzenia oprogramowania, jego kosztu,
pielęgnacyjności i modyfikowalności.
 Podwyższenie niezawodności produktów programistycznych poprzez
zwartość zapisu programu i konceptualizację myślenia programisty.
 Zwolnienie projektanta i programisty z myślenia o mniej istotnych
sprawach implementacyjnych, umożliwienie skupienia się na tym co ma
być zrobione, a nie jak; myślenie w kategoriach problemu i dziedziny
zastosowań, a nie w w kategoriach detali i sztuczek implementacyjnych.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 25
marzec 2004
Zastosowania języków zapytań (1)
 Narzędzie dla powszechnego użytkownika umożliwiające interakcyjne
zapytania i aktualizacje (tzw. ad hoc), z generacją odpowiedzi lub
raportów w pewnych z góry zadanych formatach.
 Konstrukcje języka programowania umożliwiające programowanie na
bardzo wysokim poziomie abstrakcji i konceptualizację programów.
 Definiowanie ograniczeń integralnościowych (integrity constraints),
inaczej więzów integralności, zapobiegających niedopuszczalnym
operacjom na bazie danych lub wykrywających błędy w danych.
 Definiowanie podschematów, ograniczeń dostępu i innych środków
autoryzacji lub bezpieczeństwa danych.
 Definiowanie wirtualnych perspektyw (views), zmaterializowanych
perspektyw (materialized views), danych pochodnych (derived), replikacji
danych, procedur zapamiętanych w bazie danych (stored procedures,
database procedures), i innych abstrakcji lub udogodnień w danych.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 26
marzec 2004
Zastosowania języków zapytań (2)
 Składowe konstrukcji językowych skryptów (scripts) w językach czwartej
generacji (4GL) i narzędziach do prototypowania (RAD).
 Definiowanie aktywnych reguł, dedukcyjnych reguł, aktywnych agentów i
innych „inteligentnych" elementów w bazie danych.
 Określanie danych do transmisji w rozproszonych bazach danych;
umożliwienie współpracy pomiędzy heterogenicznymi i/lub odległymi
bazami danych (np. interfejsy w stylu ODBC lub JDBC).
 Określanie danych do transmisji pomiędzy różnymi rodzajami pamięci,
np. pomiędzy pamięcią optyczną typu jukebox a pamięcią dyskową.
 Narzędzia do wyszukiwania informacji w danych pół-strukturalnych
(semi-structured), np. w plikach XML lub RDF; definiowanie perspektyw
nad danymi pół-strukturalnymi.
 Narzędzia do eksploracja danych (data mining), hurtowni danych i
analitycznego przetwarzania (OLAP).
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 27
marzec 2004
Własności języków zapytań (1)
 Wysoki poziom konceptualizacji i abstrakcji; niezależność danych
(data independence) wyrażająca się w braku odwołań do elementów
fizycznej organizacji danych (takich jak np. indeksy). Użytkownik
formułuje zapytanie znając wyłącznie logiczny schemat bazy danych.
 Nieproceduralność lub deklaracyjność, wyrażająca się w zorientowaniu
języka na formułowanie bezpośrednio celu wyszukiwania, a nie środków
prowadzących do tego celu.
 Makroskopowość, czyli jednoczesne działanie (z punktu widzenia
użytkownika) na wielu elementach kolekcji o nieznanych rozmiarach.
 Naturalność, czyli wspomaganie naturalnych schematów myślenia
użytkownika, wspomaganie modelowania pojęciowego, łatwość uczenia
się i użycia.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 28
marzec 2004
Własności języków zapytań (2)
 Efektywność, czyli akceptowalne czasy wykonania zapytań. Oznacza to
konieczność stosowania automatycznych metod optymalizacyjnych.
• To zaś oznacza konieczność określenia jednorodnej koncepcji i zdefiniowania
precyzyjnej semantyki języka, bez pomijania jakichkolwiek detali.
• Dla złożonego problemu automatyczna optymalizacja zapytań jest bardziej
skuteczna od manualnego zakodowania tego samego zadania w języku
niskiego poziomu, np. w C.
 Uniwersalność, czyli zdolność języka zapytań do definiowania
dowolnych operacji wyszukiwania i kojarzenia danych.
• Ta własność jest słabą stroną SQL.
• Kryteria dla określenia stopnia uniwersalności języków zapytań są ułomne.
Tzw. „relacyjna kompletność” (relational completeness) jest przypadkowym,
nie umotywowanym punktem na skali uniwersalności. Tzw. "kompletność
Turinga" (Turing completeness) jest oparta na pseudo-argumentach.
• Uniwersalność jest kategorią pragmatyczną, a nie matematyczną.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 29
marzec 2004
Własności języków zapytań (3)
 Niezależność od dziedziny zastosowań, czyli brak przypisania do jednej
dziedziny aplikacyjnej, umożliwienie realizacji wszystkich potencjalnych
zastosowań danego systemu zarządzania bazą danych.
 Wykonywanie zapytań w trybie interpretacyjnym, późne (dynamiczne)
wiązanie, brak fazy kompilacji i konsolidacji zapytań z całością aplikacji.
Umożliwia to zapytania ad hoc, dynamiczne tworzenie i usuwanie
perspektyw, zapamiętywanie procedur i reguł w bazie danych,
dynamiczne tworzenie i usuwanie indeksów, itd.
© K.Subieta. Obiektowe języki zapytań, Wykład 01, Folia 30
marzec 2004
Download