|
4. Własności języków zapytań
Uważa się, że języki zapytań powinny mieć następujące własności:
- Wysoki poziom konceptualizacji i abstrakcji, niezależność danych (data independence), wyrażająca się m.in. w braku odwołań do elementów fizycznej organizacji danych (takich jak np. indeksy, tablice pointerów, organizacja plików itp.). Użytkownik lub programista formułuje zapytanie znając wyłącznie pojęciowy lub 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. W klasycznych językach programowania programista formułuje cel przetwarzania poprzez podanie sekwencji akcji komputera, które mają do tego celu doprowadzić. Języki zapytań odchodzą od tej filozofii - zapytanie formułuje bezpośrednio cel przetwarzania, zaś akcje komputera są wyznaczane automatycznie przez procesor zapytań.
- Makroskopowość, czyli jednoczesne działanie (z punktu widzenia użytkownika, a nie komputera) na kolekcjach danych o nieograniczonych i nieznanych rozmiarach.
- Naturalność, czyli wspomaganie naturalnych schematów myślenia użytkownika, wspomaganie modelowania pojęciowego, łatwość nauczania, uczenia się i użycia.
- Efektywność, czyli akceptowalne czasy wykonania zapytań. Z reguły oznacza to umożliwienie zastosowania automatycznych metod optymalizacyjnych. Dla pewnej skali problemu automatyczna optymalizacja zapytań jest z reguły bardziej skuteczna od manualnego zakodowania tego samego zadania w języku niskiego poziomu. Nawet jeżeli programista dysponuje nieograniczonym czasem, nie jest on w stanie myślowo opanować złożonych zależności semantycznych, które należałoby uwzględnić podczas manualnej optymalizacji.
- Uniwersalność, czyli zdolność języka zapytań do praktycznie dowolnych operacji wyszukiwania i kojarzenia danych, przy zadanych założeniach dotyczących organizacji struktur danych. Kryteria, które stworzono dla określenia stopnia uniwersalności języków zapytań, są jednak ułomne i oparte na wątłych podstawach formalnych. Tzw. "relacyjna kompletność" (relational completeness) jest przypadkowym, słabo umotywowanym punktem na wielo-wymiarowej skali uniwersalności. Podobnie, totalnie nieadekwatną miarą praktycznej uniwersalności języków zapytań jest moc równoważna maszynie Turinga. Miary uniwersalności języka zapytań, jak większość miar w inżynierii oprogramowania, powinny być oparte na kryteriach empirycznych i pragmatycznych.
- 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.
Do podanych cech możemy dołączyć te, których brak lub niepełna realizacja w istniejących teoriach i językach były bezpośrednim motywem prac nad podejściem stosowym:
- Koncepcyjna prostota, czysta i precyzyjna semantyka języka zapytań,
- Minimalizacja zestawu pojęć niezbędnych do opisu semantyki,
- Uniwersalność podejścia i tworzonych na jego podstawie języków,
- Kompozycyjność i ortogonalność; minimalizacja konstrukcji gramatyczno-semantycznych tworzonych języków,
- Jednorodne podejście do wszystkich pojęć modelu obiektowego (złożone obiekty, tożsamość, klasy, dziedziczenie, hermetyzacja, role itd.),
- Jednorodne podejście do konstrukcji programistycznych bazujących na języku zapytań (perspektywy, procedury, metody, parametry procedur i metod itd.),
- Modularność definicji języka (możliwość dowolnej hermetyzacji jego konstrukcji),
- Niezaniedbywanie jakiegokolwiek istotnego problemu semantycznego,
- Wysoki potencjał dla optymalizacji zapytań.
Podejście stosowe oferuje zuniformizowany sposób myślenia o wszystkich wymienionych wyżej zagadnieniach. Stało się to możliwe dopiero po odrzuceniu teorii, ich pochodnych i rozszerzeń, które miały swoje źródło w koncepcjach modelu relacyjnego, włączając w to algebrę relacji, rachunek relacyjny
i różne warianty logiki matematycznej. Zamiast tego, poprawna i uniwersalna semantyka obiektowych języków zapytań została zbudowana poprzez modyfikację powszechnie znanych i dobrze sformalizowanych mechanizmów języków programowania.
|