pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozdział 21 w Rozwój standardu SQL i jego implementacji 1 Wstęp da .b w w Streszczenie. Opublikowany w roku 2004 standard SQL:2003, podobnie jak jego poprzednie wersje, wprowadza szereg istotnych zmian. Standard proponuje rozwiązania, które są podstawą rozwoju systemów a jednocześnie jest punktem odniesienia dla oceny implementacji SZBD. Część tych zmian została wymuszona przez niezależnie wprowadzone rozwiązania w istniejących na rynku systemach zarządzania bazami danych. W rozdziale zostały przedstawione etapy rozwoju standardu SQL. Dokonano oceny wpływu standardu SQL na rozwój jego implementacji oraz omówiono elementy mające wpływ na rozwój standardu SQL. 2 Standard SQL:1999 pl s. Język SQL został stworzony na potrzeby pierwszych systemów zarządzania relacyjnymi bazami danych w końcu lat 70-tych ubiegłego wieku. W roku 1982 pojawiły się elementy DML i DDL, by w roku 1986 stać się standardem ANSI, a rok później ISO. Poprawiona wersja standardu została opublikowana w roku 1989 i jest znana pod nazwą SQL-89. Celowo pozostawiono w niej wiele niedomówień, co wymusiło wiele dyskusji nad kształtem standardu, czego rezultatem stało się opublikowanie w roku 1992 standardu SQL-92. Od tego czasu trwa nieprzerwany i intensywny rozwój tego standardu. Kolejne wersje pojawiają się coraz częściej (SQL:1999 po siedmiu latach, SQL:2003 już po pięciu). Pomimo krótkiego czasu, jaki upłynął od publikacji najnowszej wersji standardu, trwają już prace nad jego kolejną wersją. Rozpowszechnienie się Internetu i rozwój technologii z nim związanych spowodował wzrost wymagań użytkowników w stosunku do aplikacji i systemów. W związku z rozwojem technologii multimedialnych i znacznym zwiększeniem liczby użytkowników usług informatycznych, wzrosły również rozmiary danych przechowywanych w systemach. Jednocześnie nastąpił intensywny rozwój metodyk obiektowego wytwarzania oprogramowania. Miało to wpływ na wzrost złożoności przechowywanych danych. Pojawiły się również Lech Tuzinkiewicz, Jakub Fedyczak: Politechnika Wrocławska, Instytut Informatyki Stosowanej, Wybrzeże Wyspiańskiego 27, 50-370 Wrocław, Polska email: [email protected], [email protected] (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 L. Tuzinkiewicz, J. Fedyczak w potrzeby tworzenia nowych typów danych, dostosowanych do wymagań użytkowników. Zdalne przetwarzanie danych zwiększyło wymagania w zakresie niezawodności systemów oraz spójności i bezpieczeństwa danych. W konsekwencji zaproponowano rozszerzenie standardu SQL-92, stosownie do potrzeb rynku, czego wynikiem było opublikowanie standardu SQL:1999. Standard SQL:1999 wprowadził szereg zmian w stosunku do wersji SQL-92. Poniżej przedstawiono najważniejsze z nich wg [1], [3]; − Cztery nowe typy danych: − LARGE OBJECT (LOB), którego warianty to CHARACTER LARGE OBJECT (CLOB) oraz BINARY LARGE OBJECT (BLOB). Typ LOB służy do przechowywania danych o większych rozmiarach. Nie mogą one być używane w klauzulach PRIMARY KEY oraz UNIQUE oraz w klauzulach GROUP BY i ORDER BY, − BOOLEAN, − typ złożony ARRAY, który umożliwia przechowywanie tabel o stałej długości w pojedynczej kolumnie, − typ złożony ROW, który umożliwia deklarowanie “podkolumn” w wierszach. − Typy rozróżnialne (ang. distinct types) ułatwiają weryfikację semantyczną typów. − Predykaty SIMILAR oraz DISTINCT. SIMILAR wprowadza możliwość stosowania bardziej złożonych wyrażeń regularnych niż oferuje to predykat LIKE, natomiast DISTINCT w przeciwieństwie do UNIQUE traktuje dwie wartości NULL jako tożsame. − Rozszerzenie zakresu widoków, poprzez które możliwa jest zmiana tabel bazowych. − Zapytania rekursywne. − Subtransakcje (ang. savepoints) – umożliwiają wycofanie transakcji do wcześniej ustalonego punktu, bez konieczności wycofania całej transakcji. − Role (ang. roles), czyli mechanizm zabezpieczeń, który wprowadza możliwość przyznawania uprawnień grupom użytkowników. − Wyzwalacze, czyli mechanizm sterowany zdarzeniami, służący do zapewnienia integralności danych. − Typy strukturalne definiowane przez użytkownika. Typy te mogą być zagnieżdżone, posiadają mechanizm polimorfizmu, podlegają dziedziczeniu. Ponadto możliwe jest zdefiniowanie metod operujących na danych tego typu. − Typ specjalny REF – umożliwia przechowywanie wskaźnika do instancji typu strukturalnego. Wprowadzenie typów LOB wynikało z rosnącej potrzeby przechowywania w bazach danych obszernych treści (w tym multimedialnych) osiągających rozmiary wielu megabajtów. W związku z potrzebą stosowania złożonych typów danych, wprowadzono typy rozróżnialne, typy złożone i rozszerzenia obiektowe. Rosnąca ilość danych i ich złożoność wymuszała istnienie wyrafinowanych mechanizmów wyszukiwania, pozyskiwania i modyfikacji danych. W związku z powyższym wprowadzono m. in. predykaty SIMILAR oraz DISTINCT (używane w klauzuli WHERE), rekursywne kwerendy oraz rozbudowano możliwości wprowadzania zmian danych poprzez widoki. Złożoność operacji oraz rosnąca liczba użytkowników korzystających jednocześnie z dużych baz danych, wymusiła wprowadzenie usprawnień w zakresie przetwarzania transakcji (savepoints), jak i zabezpieczeń dostępu do danych (roles) oraz nowe mechanizmy utrzymania integralności danych (wyzwalacze). da .b w w pl s. 206 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozwój standardu SQL i jego implementacji 3 Standard SQL:2003 w Nowe wymagania wynikające z rozpowszechnienia hurtowni danych, analiz danych wielowymiarowych (OLAP, Data Mining), a także standardu XML, wymusiły aktualizację standardu SQL. W rezultacie opracowano standard SQL:2003. Poniżej omówiono najważniejsze zmiany wg [2], [3], [4], [5]. Wprowadzono nowe typy danych: − BIGINT, typ zgodny z INTEGER oraz SMALLINT, ale o zwiększonym zakresie (zależnym od implementacji). Typ dopuszcza wszystkie operacje, jakie są dozwolone na dwóch poprzednikach. − MULTISET - wielozbiór, czyli nieuporządkowana kolekcja elementów, w której dopuszcza się powtórzenia. Standard nie narzuca określonego rozmiaru wielozbioru, może on być zagnieżdżony. Definiowanie wielozbioru odbywa się w dwojaki sposób: w w MULTISET[1,2,3,4] MULTISET (SELECT oceny FROM kursy) Wielozbiór może zostać użyty jako źródło danych w klauzuli UNNEST: FROM za pomocą operatora SELECT T.A,T.A*2 AS x2 FROM UNNEST(MULTISET[4,3,2,1]) AS T(A) da .b MULTISET wspiera operacje rzutowania na tablicę (ARRAY) lub inny wielozbiór z elementami o zgodnych typach. Wspierane jest także usuwanie duplikatów, zliczanie elementów, wyznaczanie sumy, różnicy oraz iloczynu. Dodane są również nowe funkcje agregujące: COLLECT – tworzy wielozbiór z wartości argumentu w każdym wierszu grupy, FUSION – tworzy unię wielozbiorów z każdego elementu grupy, INTERSECTION – tworzy część wspólną z wielozbiorów z każdego elementu grupy. Oto przykład: Tabela 1. Tabela PRACOWNICY JEZYKI MULTISET['angielski','niemiecki','rosyjski'] MULTISET['angielski','szwedzki','niemiecki'] MULTISET['japoński','angielski'] pl s. NAZWISKO 'Kowalski' 'Nowak' 'Abacka' Dla tabeli PRACOWNICY (tabela 1) następująca kwerenda: SELECT COLLECT(NAZWISKO) AS WSZYSCY_PRACOWNICY, FUSION(JEZYKI) AS WSZYSTKIE_JEZYKI, INTERSECTION(JEZYKI) AS WSPOLNE_JEZYKI, FROM PRACOWNICY; zwróci rezultat widoczny w tabeli 2. Tabela 2. Przykład działania funkcji COLLECT, FUSION i INTERSECTION WSZYSCY_PRACOWNICY MULTISET['Kowalski', 'Nowak','Abacka'] WSZYSTKIE_JEZYKI MULTISET['angielski', 'angielski','angielski', 'rosyjski','szwedzki', 'japoński','niemiecki', 'niemiecki'] WSPOLNE_JEZYKI MULTISET[ 'angielski'] 207 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 L. Tuzinkiewicz, J. Fedyczak SQL:2003 wprowadza również następujące funkcje dla MULTISET: − CARDINALITY – zwraca liczbę elementów − SET – tworzy zbiór z wielozbioru – usuwa duplikaty − ELEMENT – zwraca element z jednoelementowego wielozbioru − UNNEST – przekształca wielozbiór w tabelę Przykładowo wyrażenie: SELECT SUM (t.c) FROM UNNEST (MULTISET (2, 3, 5, 7)) AS t(c) w zwróci sumę elementów wielozbioru. Z kolei wyrażenie: v1 MULTISET [UNION|EXCEPT|INTERSECT] [ALL|DISTINCT] v2 w w pozwala uzyskać sumę, róznicę bądź część wspólną wielozbioru. MULTISET dopuszcza dwa operatory porównujące = oraz <>. Oprócz tego dopuszczalne są następujące predykaty: − e1 [NOT] MEMBER OF v1 – przynależność elementu do wielozbioru, − v1 [NOT] SUBMULTISET OF v2 – zawieranie się wielozbiorów, − v1 IS [NOT] A SET – badanie istnienia duplikatów. SQL:2003 wprowadza również funkcje tabelowe, których rezultatem jest ROW MULTISET. Przykład funkcji tabelowej zwracającej tabelę z pracownikami danego wydziału: da .b CREATE FUNCTION PRACOWNICY_WYDZIALU (KODWYDZIALU CHAR(3)) RETURNS TABLE (PRACNR CHAR(6),NAZWISKO VARCHAR(15),IMIE VARCHAR(12)) LANGUAGE SQL READS SQL DATA DETERMINISTIC RETURN TABLE( SELECT PRACNR, NAZWISKO, IMIE FROM PRACOWNICY WHERE PRACOWNICY.WYDZIAL = PRACOWNICY_WYDZIALU.KODWYDZIALU ); pl s. gdzie: − LANGUAGE SQL określa, że ciało funkcji jest napisane w języku SQL, − READS SQL DATA określa, że funkcja pobiera dane z bazy w trybie „tylko do odczytu”, inaczej mówiąc nie modyfikuje danych − DETERMINISTIC określa, że dla jednego zestawu parametrów funkcja zawsze daje te same wyniki. Zdefiniowana funkcja może być użyta w następujący sposób: SELECT * FROM TABLE(PRACOWNICY_WYDZIALU('w-8')); Oprócz funkcji tabelowych, SQL:2003 wprowadza również zmiany w możliwości wywoływania procedur składowanych. Obecnie dopuszcza się przeładowanie funkcji. Funkcje mogą być także deklarowane jako wywoływane z uprawnieniami użytkownika wywołującego (do tej pory użytkownika deklarującego). Standard rozszerza sposób tworzenia tabel w zakresie używania kolumn identyfikujących i generowanych. Ich wartość jest automatycznie wyznaczana w momencie dodawania wiersza. Możliwe stało się wybiórcze skopiowanie struktury, połączone z wypełnieniem nowej tabeli danymi, co pokazuje następujący przykład: CREATE TABLE T5 (D1, D2, D3, D4) AS (SELECT T1.C1, T1.C2, T2.C3, T2.C4 FROM T1, T2 WHERE T1.C2 = T2.C2) WITH DATA; Utworzona za pomocą CREATE TABLE … AS tabela jest niezależna od tabeli źródłowej. 208 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozwój standardu SQL i jego implementacji SQL:2003 wprowadza wyrażenie MERGE, które pozwala w jednym kroku uaktualnić istniejące wiersze i dodać nowe. Przykładowo: tabela AUTORZY zawiera listę wszystkich autorów publikacji wraz z ilością artykułów, a tabela tymczasowa TEGOROCZNE_ PUBLIKACJE opisuje listę tegorocznych publikacji; Tabela 3. Tabela AUTORZY w NAZWISKO Kowalski Nowak Iksiński LICZBA_PUBLIKACJI 10 15 20 Tabela 4. Tabela TEGOROCZNE_PUBLIKACJE: w AUTOR Abacki Nowak Iksiński Smith LICZBA_PUBLIKACJI 3 2 1 3 w da .b MERGE INTO AUTORZY AS A USING (SELECT AUTOR,LICZBA_PUBLIKACJI FROM TEGOROCZNE_PUBLIKACJE) AS P ON (A.NAZWISKO = P.AUTOR) WHEN MATCHED THEN UPDATE SET LICZBA_PUBLIKACJI = A.LICZBA_PUBLIKACJI+P.ILOSC_PUBLIKACJI WHEN NOT MATCHED THEN INSERT (NAZWISKO,LICZBA_PUBLIKACJI) VALUES (P.AUTOR,P.LICZBA_PUBLIKACJI); Tabela 5. Tabela AUTORZY po wykonaniu operacji MERGE NAZWISKO Kowalski Nowak Iksiński Abacki Smith LICZBA_PUBLIKACJI 10 17 21 3 3 CREATE SEQUENCE AUTOR_SEQ AS INTEGER START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 10000 NO CYCLE; pl s. SQL:2003 wprowadza generatory sekwencji, które służą do tworzenia unikalnych wartości w obrębie schematu. Mogą one zostać wykorzystane do generowania sztucznych kluczy głównych. Oto przykład deklaracji generatora sekwencji: W celu uzyskania kolejnej wartość z generatora, należy użyć wyrażenia: NEXT VALUE FOR AUTOR_SEQ Oto przykładowe wykorzystanie sekwencji: INSERT INTO AUTOR (ID, NAZWISKO, WIEK) VALUES (NEXT VALUE FOR AUTOR_SEQ,'Kowalski', 45); W przypadku włączenia opcji NO CYCLE, przy przekroczeniu zakresu generowany jest wyjątek. Możliwe jest wpływanie na działanie generatorów poprzez zastosowanie poleceń: ALTER SEQUENCE ... DROP SEQUENCE ... ALTER SEQUENCE ... RESTART WITH ... 209 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 L. Tuzinkiewicz, J. Fedyczak SQL:2003 wprowadza typ IDENTITY o funkcjonalności analogicznej do generatora sekwencji, przy czym zbędne staje się jawne wywołanie NEXT VALUE FOR ... Przykład zastosowania typu IDENTITY w definicji tabeli: w w CREATE TABLE PRACOWNICY ( NR INTEGER GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 10000 NO CYCLE ), NAZWISKO VARCHAR (100), WIEK INTEGER ); w W tabeli może można zdefiniować tylko jedną kolumnę typu IDENTITY. W przypadku wprowadzania danych do tabeli, wartość kolumny typu IDENTITY jest generowana automatycznie. Nowy standard wprowadził również kolumny generowane. Przykład użycia kolumny generowanej może wyglądać następująco: da .b CREATE TABLE PRACOWNICY ( ID INTEGER, PENSJA DECIMAL(7,2), PREMIA DECIMAL(7,2), WYPLATA GENERATED ALWAYS AS (PENSJA+PREMIA) ); Wartość kolumny WYPLATA jest automatycznie uaktualniana. Kolumny tego typu mogą być indeksowane. SQL:2003 wprowadza funkcje okienkowe, które służą do zawężania widoczności danych w obrębie tabeli. Są to RANK, DENSE_RANK, PERCENT_RANK, CUME_DIST, ROW_NUMBER. Oto przykład zastosowania funkcji RANK, DENSE_RANK oraz ROWNUM (wynik w tabeli 6): pl s. SELECT IMIE, PENSJA, RANK() OVER (ORDER BY PENSJA DESC) AS RANK, DENSE_RANK() OVER (ORDER BY PENSJA DESC) AS DENSE_RANK, ROW_NUMBER() OVER (ORDER BY PENSJA DESC) AS ROWNUM FROM PRACOWNICY; gdzie: − RANK – zwraca pozycję względną – wymaga uporządkowania; wartości równe mają tę samą wartość RANK, − DENSE_RANK – analogiczne do RANK, ale gwarantuje ciągłość wartościowania, − ROW_NUMBER – numeruje kolejne wartości; równe wartości są numerowane niedeterministycznie. Tabela 6. Rezultat przykładowego zastosowania funkcji okienkujących IMIE Krzysztof Sylwia Tadeusz Marek Łukasz Jolanta PENSJA 8000 7900 7900 6600 6600 6000 RANK 1 2 2 4 4 6 DENSE_RANK 1 2 2 3 3 4 210 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 ROWNUM 1 2 3 4 5 6 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozwój standardu SQL i jego implementacji SQL:2003 wprowadza kwerendy na próbkach danych. Ich użycie skraca czas uzyskania wyniku zapytania kosztem dokładności. Możliwe są dwie metody próbkowania: − BERNOULLI – prawdopodobieństwo pojawienia się wiersza w próbce jest niezależne od pojawienia się innych wierszy − SYSTEM – prawdopodobieństwo może zależeć od innych wierszy zawartych w próbce Poniższa kwerenda wyznacza średnią zarobków w poszczególnych działach: w SELECT DZIAL, SUM(PENSJA) * 10 FROM PRACOWNICY TABLESAMPLE BERNOULLI (10) REPEATABLE (5) GROUP BY DZIAL; da .b w w gdzie opcjonalny parametr klauzuli REPEATABLE określa ziarno dla wartości losowych. Ustawienie konkretnej wartości parametru zapewnia powtarzalność wyników przy kolejnych wywołaniach kwerendy dla tego samego zestawu danych. Ponadto rozbudowano standard o wiele nowych funkcji matematycznych i statystycznych [4]. Zmiany dokonane w standardzie SQL:2003 obejmują również przypadki usunięcia elementów o znikomym znaczeniu (typy BIT oraz BIT VARYING). Omówione zmiany pokazują, że rozwój standardu SQL zmierza w kierunku wspierania dynamicznie rozwijających się dziedzin. Funkcje tabelowe mogą posłużyć do pozyskania danych ze źródeł o różnych strukturach (np. w systemie innego producenta, bądź plikach zewnętrznych), co może być wykorzystane w fazie ekstrakcji danych w procesie ETL. Innym przykładem wsparcia tego procesu jest operacja MERGE, która jest pomocna w fazie ładowania danych do baz analitycznych. Z kolei funkcje okienkowe (RANK, DENSE_RANK itp.), kwerendy operujące na próbkach danych oraz nowe funkcje agregujące mają zastosowanie w procesach analitycznych. Inną, istotną ze względu na zakres zastosowań technologią, jest standard XML, który określa zasady przechowywania, przetwarzania i wymiany różnego rodzaju dokumentów. 4 Wpływ standardu SQL na systemy zarządzania bazami danych pl s. Zarówno systemy komercyjne jak i typu open-source, rozwijają się równolegle z rozwojem standardu. Poziom zgodności ze standardem jest jednym z kryteriów oceny jakości produktu. W konsekwencji standard wymusza rozwój systemów zarządzania relacyjnymi bazami danych (SZRBD), co nie oznacza, że wszystkie jego elementy są implementowane. Trywialnym przykładem jest brak implementacji typów DATE i TIME w systemie MS SQL Server, który oferuje jedynie typ DATETIME. Innym przykładem dotyczącym tego systemu jest brak implementacji typu BOOLEAN. Kolejny przykład to ujednolicenie instrukcji dotyczących ról (ang. roles) z instrukcjami dotyczącymi uprawnień użytkowników w systemie PostgreSQL. Przykładem może być także kolejność wykonywania wyzwalaczy w tym systemie. Twórcy zdecydowali się na złamanie zaleceń standardu – wyzwalacze są uruchamiane w kolejności alfabetycznej a nie w kolejności utworzenia. Projektanci często uznają, że standard traktuje daną kwestię niespójnie bądź niekompletnie i decydują się na inny, niestandardowy sposób rozwiązania problemu. Możliwe jest również, że nowa wersja standardu wprowadza rozwiązania powszechnie implementowane w istniejących produktach. Przykładem są kolumny typu IDENTITY, które wprowadził SQL:2003. Taka funkcjonalność istniała już wcześniej w takich produktach jak MySQL (atrybut auto_increment), PostgreSQL-typ SERIAL i BIGSERIAL (dyskretnie obsługiwany przez automatycznie tworzony generator sekwencji), MS SQL Server (atrybut IDENTITY). Kolejnym przykładem są wyzwalacze ustandaryzowane przez SQL:1999. 211 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 L. Tuzinkiewicz, J. Fedyczak w Zostały wprowadzone przez Oracle w wersji 7.0 wydanej w 1992 roku. Standard bazuje wówczas na rozwiązaniach stosowanych w implementacjach (wyzwalacze zgodne ze składnią zaproponowaną przez Oracle). W przypadku implementacji komercyjnych trudno jest dostosować istniejące mechanizmy do nowej wersji standardu, ponieważ może to spowodować utratę kompatybilności wstecznej. Powoduje to niechęć klientów do zakupu nowej wersji wynikającą ze zwiększonych kosztów jej wdrożenia. Przekłada się to na wymierne straty finansowe dla producenta. Sytuacja ma się inaczej w projektach open – source. Tutaj twórcy nie są związani finansowo z użytkownikami systemów bazodanowych. W dokumentacji PostgreSQL można znaleźć dokładne zestawienie obsługiwanych oraz nieobsługiwanych części standardu. Zmiany zachodzą więc znacznie szybciej. Podczas instalacji nowej wersji często konieczna jest całkowita konwersja fizycznej postaci baz danych. W celu zilustrowania omówionych sytuacji, w tabeli 7 i 8 zebrano podsumowanie obsługi rozszerzeń wprowadzonych przez najnowsze wersje standardu w systemie MS SQL Server 2005. w w Tabela 7. Obsługa nowych elementów standardu SQL:1999 w MS SQL Server 2005 Zmiany w SQL:1999 Typy LOB (LARGE OBJECTS) – CLOB oraz Typ BOOLEAN da .b BLOB MS SQL Server 2005 Udostępnia do tego celu typy varbinary(max) oraz image dla danych binarnych oraz typy text, ntext i varchar(max) dla ciągów znakowych. Nie zaleca się stosowania typów text, ntext oraz image, ponieważ zostaną one usunięte w kolejnych wersjach systemu. Brak typu BOOLEAN. Możliwe jest zastosowanie zamiennika np. w postaci typu BIT (usuniętego w standardzie SQL:2003). Brak typu ARRAY. Nie obsługiwany. Brak obsługi. Rozszerzenia w zakresie widoków modyfikowalnych Zapytania rekursywne Subtransakcje (ang. savepoints) Role (ang. roles) Wyzwalacze Elementy obiektowe Typ specjalny REF Brak obsługi. Istnieje możliwość tworzenia własnych typów (poprzez Aliased Data Types), ale nie jest wymuszana ich zgodność. Brak implementacji rozszerzenia. Modyfikacje danych poprzez widok są możliwe tylko w zakresie przewidzianym przez standard SQL-92. Obsługiwane, ale bez konieczności dodawania słowa kluczowego RECURSIVE. Obsługiwane. Składnia niezgodna ze standardem (SAVE TRANSACTION ... i ROLLBACK TRANSACTION ... zamiast SAVEPOINT ... i ROLLBACK TO ...). Brak obsługi RELEASE SAVEPOINT. Obsługiwane. Obsługiwane. Brak obsługi. Możliwość definiowania własnych typów (klas) z użyciem wykonywanego po stronie serwera kodu platformy .NET. Brak obsługi. pl s. Typ złożony ARRAY Typ złożony ROW Predykaty SIMILAR oraz DISTINCT Typy rozróżnialne (ang. distinct types) 212 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozwój standardu SQL i jego implementacji Tabela 8. Obsługa nowych elementów standardu SQL:2003 w MS SQL Server 2005 Zmiany w SQL:2003 BIGINT MULTISET Funkcje tabelowe w w CREATE TABLE LIKE CREATE TABLE AS MERGE 5 Wnioski da .b w Generatory sekwencji Kolumny IDENTITY Kolumny generowane Funkcje okienkowe Kwerendy próbkowane Usunięcie typów BIT i BIT VARYING Rozszerzenia związane z obsługą XML MS SQL Server Obsługiwany (64bit). Brak obsługi. Implementowane w postaci TVF (Table-Valued Function). Istnieją ograniczenia w typach zwracanych kolumn – brak możliwości zastosowania typu TIMESTAMP, ciągów znakowych innych niż UNICODE. Brak obsługi ograniczenia NOT NULL. Brak obsługi. Brak obsługi. Brak obsługi. Brak obsługi. Obsługiwane poprzez atrybut identity. Implementowane w postaci computed column, ale z ograniczeniami i niezgodnie ze standardem Obsługiwane zgodnie ze standardem Implementowane, ale bez obsługi próbkowania typu BERNOULLI. Nadal dostępny (często zastępuje brakujący typ BOOLEAN). Obsługiwane. Literatura 1. 2. 3. 4. 5. pl s. Od momentu powstania, standard SQL podlega stałemu rozwojowi przy aktywnym udziale producentów SZRBD. Zmiany w kolejnych wersjach odzwierciedlają tendencje w technologiach informatycznych. Standard może być podstawą do oceny przenaszalności baz danych pomiędzy różnymi środowiskami. Znajomość standardu jest dobrym przygotowaniem pojęciowym do poznawania i wykorzystywania różnych systemów baz danych. Standard SQL może być językiem specyfikacji modeli logicznych w projektowaniu baz danych, bowiem jest niezależny implementacyjnie, a jednocześnie określa technologie. Eisenberg A., Melton J.: SQL:1999, formerly known as SQL3 Eisenberg A., Melton J., Kulikarni K., Michels J., Zemke F.: SQL:2003 Has Been Published ISO/IEC 9075-2:1999, Information technology -- Database languages -- SQL - Part 2: Foundation (SQL/Foundation) ISO/IEC 9075-2:2003 Information technology -- Database languages -- SQL -- Part 2: Foundation (SQL/Foundation) ISO/IEC 9075-14:2003 Information technology -- Database languages -- SQL -- Part 14: XMLRelated Specifications (SQL/XML) 213 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 w da .b w w pl s. (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006