Poprawki do SQL

SQL, język zapytań do systemów zarządzania relacyjnymi bazami danych (SZRBD) został opracowany przez IBM ponad 20 lat temu. Jednakże nie spełnia on wymagań obsługi nietypowych formatów danych (obraz, dźwięk, duże obiekty binarne), pojawiło się wiele jego rozszerzeń. A wersje wykorzystywane przez różnych producentów SZRBD różnią się między sobą dość znacznie. Grupa SQL Access, pracująca od lat nad ujednoliceniem tego języka opracowała kilka różnych zaleceń dotyczących zarówno samego języka, jak i metod dostępu do baz danych. Jedno z jej ostatnich zaleceń Call Level Interface (interfejs na poziomie wywołań - CLI) - ma służyć ułatwieniu dostępu do baz danych z aplikacji w środowisku przetwarzania rozproszonego, korzystających z baz o różnych formatach.

SQL, język zapytań do systemów zarządzania relacyjnymi bazami danych (SZRBD) został opracowany przez IBM ponad 20 lat temu. Jednakże nie spełnia on wymagań obsługi nietypowych formatów danych (obraz, dźwięk, duże obiekty binarne), pojawiło się wiele jego rozszerzeń. A wersje wykorzystywane przez różnych producentów SZRBD różnią się między sobą dość znacznie. Grupa SQL Access, pracująca od lat nad ujednoliceniem tego języka opracowała kilka różnych zaleceń dotyczących zarówno samego języka, jak i metod dostępu do baz danych. Jedno z jej ostatnich zaleceń Call Level Interface (interfejs na poziomie wywołań - CLI) - ma służyć ułatwieniu dostępu do baz danych z aplikacji w środowisku przetwarzania rozproszonego, korzystających z baz o różnych formatach.

Dawniej aby uzyskać dostęp do baz danych o różnych formatach należało przygotować dla każdej bazy oddzielną wersję aplikacji. Obecnie zarówno użytkownicy baz danych, jak i ich producenci dążący do korzystania z danych zarządzanych przez różne SZRBD, korzystają ze specyfikacji CLI, mimo iż jeszcze nie została kompletnie sfinalizowana.

Jaki jest powód praktycznego sukcesu CLI? Przez standaryzację, na poziomie wywołań podprogramów interfejsu, CLI umożliwia dostęp do różnych baz danych. Z tego powodu zarówno programiści, jak i producenci baz danych chętnie akceptują tę nową specyfikację.

Przed wprowadzeniem interfejsu CLI, w celu wywołania określonych zapytań do bazy danych, programista musiał włączyć w swój program klienta funkcje SQL (tzw. embedded SQL). W tym celu w programie należało je wyróżnić, zwykle rozpoczynając je od polecenia EXEC SQL. Preprocesor rozpoznaje takie polecenie i przekształca program źródłowy, zawierający mieszankę oryginalnych poleceń języka programowania i poleceń SQL, na czysty kod. Następnie polecenia SQL zostają zastąpione wywołaniami podprogramów z biblioteki run-time aktualnej implementacji SQL. Oznacza to, że jeśli aplikacja ma współpracować z wieloma bazami danych, to musi mieć oddzielne wersje skompilowane dla potrzeb każdego SZRBD. Jeżeli nawet taki sposób działania aplikacji jest skuteczny, to jest jednak pracochłonny i czasochłonny, gdyż każda implementacja wywołań z biblioteki SQL jest inna dla każdej z baz.

Krótka historia CLI

CLI jest produktem SQL Access Group - konsorcjum ponad 25 producentów systemów baz danych utworzonego w 1989 r. Jego członkowie spotykają się regularnie w celu opracowania specyfikacji techniki SQL dla przemysłu. Praca nad CLI zbliża się do końca; przewiduje się, że kompletna specyfikacja będzie dostępna pod koniec 1994 r.

Podobnie jak inne specyfikacje SQL Access Group, CLI przechodzi także przez trzy etapy opracowania. Pierwszy daje zarys specyfikacji (snapshot), drugi - specyfikację wstępną (preliminary), trzeci zaś ostateczną. W czasie opracowania specyfikacji SQL Access Group współpracuje aktywnie z X/Open Co. - konsorcjum producentów komputerów, twórców oprogramowania i użytkowników. Ma to na celu upewnienie się, że jakakolwiek specyfikacja opracowana przez grupę będzie spełniała wymagania X/Open dotyczące przenośności i współpracy (interoperability). Ponadto, aby specyfikacja stała się częścią tzw. X/Open Portability Guide (XPG), musi przejść przez wiele ciał standaryzacyjnych, łącznie z ANSI i International Standard Association. Przewiduje się, że CLI stanie się standardem

międzynarodowym w 1995 r.

Specyfikacja SQL

Oprócz specyfikacji CLI, SQL Access Group publikuje także specyfikację samego języka SQL i zasady włączania go do aplikacji oraz specyfikację zdalnego dostępu do baz danych (Remote Database Access). Specyfikacja języka SQL jest koniecznym uzupełnieniem specyfikacji CLI, gdyż samo CLI dotyczy jedynie interfejsu programowego, nie definiuje składni ani semantyki tego języka. Jeżeli aplikacja ma współpracować z wieloma bazami danych i ma mieć jedną postać wykonywalną, to albo wszystkie bazy muszą stosować ten sam język SQL, albo mieć na tyle zbliżony podzbiór, aby były w stanie zrozumieć wersję przesyłaną przez aplikację.

Główne realizacje języka w systemach zarządzania bazami danych coraz częściej są zbliżone do jednej wspólnej wersji standardu SQL. Oznacza to, że istnieje jeden podzbiór SQL, który zapewnia zarówno przenośność jak współpracę różnych baz. Ostatnio ten wspólny podzbiór SQl jest na tyle bogaty, że można już pisać kompletne aplikacje nie posługując się rozszerzeniami tego języka, specyficznymi dla konkretnej bazy danych.

Specyfikacja CLI jest oparta na standardzie ANSI/ISO SQL 1992 (tzw. SQL92). Zawiera ona ponadto pewną liczbę rozszerzeń, takich jak zarządzanie indeksami, nie będącymi częścią standardu SQL; na ogół jednak CLI dotyczy podzbioru SQL.

W celu opracowania standardu CLI, SQL Access Group wybrała ze standardu SQL92 te cechy, które są ważne ze względu na przenośność i współpracę aplikacji z różnymi bazami. Na przykład klient korzysta z wywołania połączenia w celu uzyskania dostępu do bazy; serwer zaś zarządza zarówno samymi danymi jak metadanymi, to jest informacją o strukturze tabel bazy.

Głównym elementem CLI jest biblioteka, zawierająca wywołania podprogramów oraz (na ogół) elementy umożliwiające dostęp poprzez sieć do serwera bazy. Ta część oprogramowania, dostarczana przez producenta bazy danych, jest zależna od jego implementacji języka SQL w serwerze bazy. Producenci baz dostarczają także bibliotek do łączenia się z serwerem za pośrednictwem różnych systemów sieciowych.

Jak to działa?

Wywołania funkcji w CLI zostały zaprojektowane tak, aby minimalizować przetwarzanie w komputerze klienta. W ogólności, klient konstruuje polecenie SQL jako ciąg znaków i przekazuje go do serwera za pośrednictwem odpowiedniego podprogramu wykonawczego.

W przypadku gdy polecenie SQL dało w wyniku np. wiele rekordów z bazy, klient pobiera je kolejno za pośrednictwem podprogramu pobierania. Kolumny w rekordach mogą być powiązane ze zmiennymi, zdefiniowanymi w programie klienta.

Interface CLI został także zaprojektowany w taki sposób, aby klient nie musiał z góry określać rodzaju operacji SQL, jaką chce wykonać (zapytanie, uaktualnianie, wstawianie czy usuwanie).

Wywołania pozwalają na określenie ile jest rekordów w wyniku zapytania oraz liczby i typu kolumn.

Interfejs CLI został określony w postaci kompletnego środowiska, zapewniającego zarówno połączenia do serwera baz danych, jak i uchwyty (handle) do poleceń SQL. Każde połączenie pozwala na obsłużenie wielu poleceń SQL.

W celu obsłużenia wielu poleceń wybierania (select), następuje otwarcie domniemanego kursora, w którym umieszcza się wiele rekordów. (Koncepcyjnie kursor jest to wskaźnik do tabeli wyników, utworzonej w wyniku realizacji zapytania.) Aplikacja może następnie pobierać wyniki z kursora.

Korzystanie z uchwytów (handle) do poleceń zwalnia aplikację od tworzenia zmiennych globalnych i pozwala na jej efektywną realizację w systemie wielowątkowym (multithreads).

Zalety CLI

Architektura klient/serwer, realizowana przez CLI, oferuje wiele zalet jeśli chodzi o współpracę z różnymi SZRBD. Oparta jest bowiem na istniejących implementacjach klient/serwer, oferowanych przez producentów systemów baz danych i zawiera elementy połączenia sieciowego.

Większość producentów baz danych SQL oferuje na ogół duży wybór sterowników sieciowych do swych baz danych, łącznie ze sterownikami do TCP/IP z systemów otwartych, sterownikami do produktów OSI czy do sieci firmowych takich jak IBM SNA i Novell NetWare.

Implementacje CLI są już obecnie dostępne dla środowiska Windows i większości środowisk unixowych, mimo że ta specyfikacja nie jest jeszcze ukończona. Po zakończeniu, umożliwi tworzenie nowej klasy aplikacji SQL, korzystających z różnych źródeł baz danych.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200