Rzeka nowych możliwości (cz. 1)

Yukon, nowy serwer baz danych Microsoftu, ułatwi pracę programistom i administratorom. Będzie też ściśle zintegrowany z usługami analitycznymi i raportowymi

Yukon, nowy serwer baz danych Microsoftu, ułatwi pracę programistom i administratorom. Będzie też ściśle zintegrowany z usługami analitycznymi i raportowymi.

Na konferencji PDC Microsoft zaprezentował wersję Beta 1 serwera baz danych Server o nazwie kodowej Yukon. Wszystko wskazuje na to, że różnic między Yukonem a SQL Server 2000 będzie znacznie więcej i będą one donioślejsze niż te, które pojawiły się w aktualizacji z wersji 6.5 do 7.0. W Yukonie zostaną rozbudowane w zasadzie wszystkie elementy bazy - sposób programowania, administracja, funkcje analityczne i raportowe. Zmienił się lub został rozbudowany prawie każdy komponent. Przedstawiciele firmy twierdzą, że wersja Beta 1 zawiera już niemal pełny zestaw planowanych udoskonaleń.

Baza z mocą .Net

Wraz z Yukonem Microsoft wprowadza możliwość tworzenia kodu .Net działającego po stronie serwera - zarówno funkcji, jak i składowanych procedur. Jeżeli w pisanej aplikacji .Net nie zostanie zdefiniowany typ danych, klient "automatycznie" pobierze bibliotekę "obsługującą" określony typ. Definiując odpowiednie operatory, ten sam kod .Net można używać po stronach zarówno serwera, jak i klienta. Ponadto kod działający po stronie serwera może korzystać ze specjalnej wersji usług ADO .Net, zoptymalizowanej do działania "wewnątrz" Yukona.

Na PDC prezentowano wiele przykładów aplikacji, w których kod SQL był mieszany z kodem prostych klas i obiektów .Net. Microsoft konsekwentnie stara się bowiem dać programiście możliwość wyboru - by mógł pisać kod w preferowanym przez siebie języku - nawet jeżeli dotyczy to programowania logiki bazy danych. W .Net przechowywane procedury są kompilowane przed wykonaniem za pomocą kompilatora typu JIT, zaś w przypadku procedur składowanych optymalizacja polega jedynie na wybraniu optymalnego planu wykonania kodu SQL (określającego, z jakich statystyk/indeksów zapytanie powinno skorzystać), wciąż jednak jest to kod interpretowany, a więc wolniejszy.

Jeżeli programista zdecyduje się używać .Net, tradycyjne procedury składowane, będące niczym innym jak bibliotekami DLL uruchamianymi w środowisku serwera bazy danych, a więc będące mniej bezpieczne niż kod .Net, staną się zbędne. Nic nie stoi jednak na przeszkodzie, aby obie metody wykorzystywać łącznie - SQL jest językiem, który nadaje się głównie do pracy na zbiorach danych, natomiast w .Net znacznie łatwiej można wyrazić złożone algorytmy. Kolejna wersja Visual Studio .Net (Whidbey) będzie zawierać specjalne typy projektu ułatwiające pisanie kodu dla Yukona. Podczas śledzenia wykonania programu w debuggerze będzie można bez problemu krok po kroku przenosić się pomiędzy T-SQL, C#, VB .Net i C++ - bez względu na to, czy kod ten działa w warstwach klienckiej, środkowej, czy po stronie serwera bazy danych.

Yukon będzie obsługiwać standard SQL-99. Programistów ucieszy zapewne wprowadzenie tzw. Common Table Expression - relatywnie krótkich wyrażeń, których reprezentacja np. w SQL-92 jest skomplikowana i praktycznie nieczytelna. W nowym SQL Server będą także obsługiwane wyrażenia zgodne ze specyfikacją SQL-99 OLAP Extension, w tym m.in. operator PIVOT - przypominający znany z Access TRANSFORM przekształcający zbiór wierszy w zbiór kolumn. Nowością będzie UNPIVOT - operator wykonujący funkcję odwrotną. Ułatwi to tworzenie aplikacji wykorzystujących tzw. otwarte schematy, gdzie liczba atrybutów (czyli kolumn) zależy od działań podejmowanych przez użytkowników.

Kolejna nowość związana z SQL-99 - operator APPLY pozwala wyliczać wartości na podstawie funkcji tabelarycznej (czyli operującej na zbiorach) i zapisywać je do innej tabeli. Warto podkreślić, że w Yukonie każda operacja zmieniająca dane może wygenerować zbiór zmienionych rekordów. Dotychczas tabele typu Deleted/Inserted były dostępne tylko w kodzie wyzwalaczy (triggers) - teraz można stworzyć znacznie czytelniejszealgorytmy bez konieczności definiowania triggerów.

Wiele osób ucieszy obsługa błędów w TSQL - oparta na znanym z C# czy Javy schemacie try/catch. Zmienne typu @@error są dostępne w bloku "CATCH" i zawierają informacje o przyczynie niepowodzenia wykonania operacji. Można też wymusić, by wyjątek automatycznie powodował wycofanie transakcji.

Zmieniono też zasady rekompilacji procedur składowanych. W SQL Server 2000 był rekompilowany cały blok - procedura składowana lub funkcja. Yukon rekompiluje jedynie wybrane linie kodu, co skraca czas wstępnej kompilacji funkcji przed jej pierwszym wykonaniem po zmianach. Zgodnie z zapowiedziami Microsoft wprowadzi do Yukona "oficjalny" interfejs pozwalający na dostęp do metadanych wraz z możliwością szczegółowego określania praw dostępu do odczytu informacji opisujących strukturę bazy. Programiści, a raczej administratorzy, nie będą już więc musieli analizować tajemniczych tabel systemowych, których duża część ma jeszcze korzenie w protoplaście SQL Server - wywodzącym się z produktu Sybase. Jednak, aby zachować zgodność, stare tabele (widoki) systemowe będą wciąż dostępne.