Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00797 010450 11035552 na godz. na dobę w sumie
SQL Server 2005. Wyciśnij wszystko - książka
SQL Server 2005. Wyciśnij wszystko - książka
Autor: Liczba stron: 320
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-0549-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> sql server
Porównaj ceny (książka, ebook, audiobook).

Poznaj funkcje i możliwości SQL Server 2005

SQL Server 2005 to najnowsza wersja flagowego produktu Microsoftu przeznaczonego do zarządzania danymi i ich analizowania. Zapewnia ona większą wydajność, bezpieczeństwo, a także udostępnia szereg nowych funkcji związanych między innymi z usługami analitycznymi i raportowaniem. Jak działają te funkcje i które z nich są Ci naprawdę potrzebne? Jakiej wersji SQL Server 2005 potrzebujesz? Jakie korzyści dla Twojej firmy przyniesie zastosowanie nowych rozwiązań bazodanowych? Jak wykorzystać możliwości SQL Server 2005, aby usprawnić działanie używanych baz danych?

W udzieleniu odpowiedzi na powyższe pytania pomoże Ci książka 'SQL Server 2005. Wyciśnij wszystko'; dzięki niej w przystępny sposób poznasz możliwości tej platformy. Dowiesz się, jak działa SQL Server 2005 oraz jakie są różnice między jej poszczególnymi wersjami. Zrozumiesz funkcjonowanie i znaczenie różnych zabezpieczeń oraz poznasz funkcje i usługi związane z bezpieczeństwem. Zobaczysz, na czym polega zarządzanie firmowymi bazami danych i jak wygląda projektowanie aplikacji bazodanowych. Przeczytasz o generowaniu analiz i raportów oraz wykonywaniu innych zadań za pomocą platformy Business Intelligence.

Ta książka będzie dla Ciebie nieocenioną pomocą przy podejmowaniu decyzji dotyczących technologii bazodanowych.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

SQL Server 2005. Wyciœnij wszystko Autor: Eric L. Brown T³umaczenie: Kosma Nitkiewicz ISBN: 978-83-246-0549-1 Tytu³ orygina³u: SQL Server 2005 Distilled (MS Windows Server System) Format: B5, stron: 320 Poznaj funkcje i mo¿liwoœci SQL Server 2005 (cid:129) Przegl¹d architektury platformy SQL Server 2005 (cid:129) Zarz¹dzanie bazami danych i ich projektowanie (cid:129) Zabezpieczenia w SQL Server 2005 SQL Server 2005 to najnowsza wersja flagowego produktu Microsoftu przeznaczonego do zarz¹dzania danymi i ich analizowania. Zapewnia ona wiêksz¹ wydajnoœæ, bezpieczeñstwo, a tak¿e udostêpnia szereg nowych funkcji zwi¹zanych miêdzy innymi z us³ugami analitycznymi i raportowaniem. Jak dzia³aj¹ te funkcje i które z nich s¹ Ci naprawdê potrzebne? Jakiej wersji SQL Server 2005 potrzebujesz? Jakie korzyœci dla Twojej firmy przyniesie zastosowanie nowych rozwi¹zañ bazodanowych? Jak wykorzystaæ mo¿liwoœci SQL Server 2005, aby usprawniæ dzia³anie u¿ywanych baz danych? W udzieleniu odpowiedzi na powy¿sze pytania pomo¿e Ci ksi¹¿ka „SQL Server 2005. Wyciœnij wszystko”; dziêki niej w przystêpny sposób poznasz mo¿liwoœci tej platformy. Dowiesz siê, jak dzia³a SQL Server 2005 oraz jakie s¹ ró¿nice miêdzy jej poszczególnymi wersjami. Zrozumiesz funkcjonowanie i znaczenie ró¿nych zabezpieczeñ oraz poznasz funkcje i us³ugi zwi¹zane z bezpieczeñstwem. Zobaczysz, na czym polega zarz¹dzanie firmowymi bazami danych i jak wygl¹da projektowanie aplikacji bazodanowych. Przeczytasz o generowaniu analiz i raportów oraz wykonywaniu innych zadañ za pomoc¹ platformy Business Intelligence. (cid:129) Przegl¹d wersji i mo¿liwoœci SQL Server 2005 (cid:129) Zabezpieczenia i kontrola nad danymi (cid:129) Administrowanie korporacyjnymi bazami danych (cid:129) Projektowanie aplikacji bazodanowych (cid:129) Analizy i raporty w Business Intelligence (cid:129) Pisanie i diagnozowanie kodu za pomoc¹ Visual Studio (cid:129) Przyk³adowy kod demonstruj¹cy stosowanie nowych funkcji Ta ksi¹¿ka bêdzie dla Ciebie nieocenion¹ pomoc¹ przy podejmowaniu decyzji dotycz¹cych technologii bazodanowych. Wydawnictwo Helion ul. Koœciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Spis treści Wstęp ..........................................................................................................11 O autorze ....................................................................................................17 Rozdział 1. Wprowadzenie do platformy SQL Server 2005 ...........................................19 Wersje platformy SQL Server 2005 ...............................................................22 Różnice pomiędzy SQL Server Enterprise a Standard Edition ...................22 SQL Server 2000 w wersji 64-bitowej ...........................................................25 Nowości w SQL Server 2005 ..........................................................................26 Skalowalność bazy danych — podstawy .........................................................30 Baza danych jako serwer aplikacji ..................................................................32 Zwiększenie dostępności systemów SQL Server ...........................................36 Wysoka dostępność na platformie SQL Server 2005 .....................................36 Rozszerzenie wysokiej dostępności do wszystkich aplikacji bazodanowych .......................................................39 Dystrybucja dzienników kopii zapasowej ......................................................41 Ogólna dostępność danych .............................................................................42 Partycjonowanie tabel — horyzontalne partycjonowanie danych ................43 Widoki materializowane .................................................................................44 Indeksowanie w trybie online ........................................................................45 Utrzymywanie bardzo dużych baz danych .....................................................45 Rozszerzenia funkcjonalności wykonywania kopii zapasowej i odzyskiwania danych .................................................................................46 Przegląd funkcji Business Intelligence platformy SQL Server 2005 ............46 Przegląd usług Analysis Services ....................................................................48 Data Mining ....................................................................................................50 6 SQL Server 2005. Wyciśnij wszystko Funkcje relacyjne hurtowni danych ...............................................................51 Ekstrakcja, transformacja i ładowanie danych w SQL Server 2005 .............52 Reporting Services ..........................................................................................53 Najbardziej wysublimowane funkcje SQL Server 2005 ................................54 Podsumowanie ................................................................................................56 Rozdział 2. Co wszyscy powinni wiedzieć o bezpieczeństwie .......................................57 Podstawowe funkcje zabezpieczające silnik SQL Server ..............................60 Wymuszanie polityki haseł .............................................................................61 Zasada najmniejszych przywilejów ................................................................62 Kontekst wykonawczy .....................................................................................67 Poświadczenia .................................................................................................67 Certyfikaty i Secure Socket Layer ..................................................................69 Szyfrowanie .....................................................................................................71 Koncepcja bezpieczeństwa punktu końcowego .............................................77 Bezpieczeństwo usług sieciowych ..................................................................77 Bezpieczeństwo usług Notification Services .................................................78 Bezpieczeństwo mirroringu bazy danych ......................................................78 Bezpieczeństwo usługi SQL Service Broker .................................................79 Bezpieczeństwo kodu zarządzanego ...............................................................80 Bezpieczeństwo usługi Analysis Services ......................................................81 Bezpieczeństwo na poziomie kostki ...............................................................84 Bezpieczeństwo na poziomie wymiaru ..........................................................84 Bezpieczeństwo na poziomie komórki ...........................................................84 Bezpieczeństwo struktury i modelu drążenia danych oraz źródła danych ...85 Dostęp Analysis Services do procedur składowanych CLR ..........................85 Funkcje bezpieczeństwa usługi SQL Server Integration Services ...............86 Bezpieczeństwo na poziomie pakietu ............................................................86 Role bazy danych w usłudze SSIS .................................................................87 Zabezpieczanie środowiska operacyjnego .....................................................87 Podpisywanie pakietów certyfikatami ............................................................88 Szyfrowanie pakietów SSIS ............................................................................88 Bezpieczeństwo usługi Reporting Services ...................................................89 Zabezpieczanie serwera ..................................................................................90 Usługa SQL Browser Service .........................................................................91 SQL Server Configuration Manager ..............................................................92 Narzędzie SQL Server Surface Area Configuration ......................................93 Podsumowanie ................................................................................................95 Rozdział 3. Korporacyjne zarządzanie danymi ..............................................................97 SQL Server Management Studio ...................................................................99 Stan połączenia lub rozłączenia ....................................................................101 Object Explorer ............................................................................................102 Tworzenie bazy danych ................................................................................103 Tworzenie tabel .............................................................................................103 Spis treści 7 Query Editor .................................................................................................104 Niemodalne okna dialogowe ........................................................................104 Dostosowywanie SQL Server Management Studio ....................................106 Projekty i rozwiązania związane z SQL Server Management Studio .........106 Pomoc ............................................................................................................108 Zarządzanie infrastrukturą SQL Server 2005 ..............................................108 Migawka bazy danych ...................................................................................110 Co nowego w programie instalacyjnym? ......................................................111 Integracja z programem Dr Watson .............................................................113 Narzędzia do zarządzania operacyjnego ......................................................114 SQL Computer Manager ..............................................................................114 SQL Server Agent .........................................................................................115 Funkcje zdalnego zarządzania platformą SQL Server 2005 ........................116 SQLCMD ......................................................................................................117 SQL Server Management Objects ...............................................................118 Windows Management Instrumentation .....................................................118 Monitorowanie SQL Server .........................................................................119 Monitoring reaktywny ..................................................................................120 Monitoring proaktywny ................................................................................125 Zarządzanie bardzo dużymi bazami danych .................................................130 Partycjonowanie tabel i indeksów ................................................................130 Rozszerzenia replikacji SQL Server .............................................................135 Replikacja peer-to-peer ................................................................................137 Oracle Publication .........................................................................................138 Uaktualnienie replikacji opartej na sieci WWW .........................................138 Wydajność i skalowalność ...............................................................................139 Wysoka dostępność dla wszystkich ..............................................................140 Rozwiązania zapewniające wysoką dostępność ...........................................140 Ogólna dostępność danych ...........................................................................149 Izolacja migawki ............................................................................................150 Widoki indeksowane .....................................................................................152 Common Language Runtime i administrator baz danych ...........................153 Jak głęboka jest integracja? ..........................................................................153 Business Intelligence i administrator baz danych .......................................156 Podsumowanie ..............................................................................................157 Rozdział 4. Funkcje do projektowania baz danych ......................................................159 Integracja z Visual Studio .............................................................................160 Integracja z .NET Framework .....................................................................162 SQL Server jako środowisko uruchomieniowe ............................................163 Wybór pomiędzy SQL transakcyjnym a kodem zarządzanym ....................164 Typy danych zdefiniowane przez użytkownika ...........................................165 Funkcje użytkownika ....................................................................................166 Funkcje agregujące definiowane przez użytkownika ..................................166 8 SQL Server 2005. Wyciśnij wszystko SQL Server Manager Provider .....................................................................167 Zarządzane typy SQL ...................................................................................168 Technologia XML .........................................................................................170 Po co wykorzystywać relacyjne bazy danych do przechowywania danych w formacie XML? ........................................170 Wybór technologii XML ...............................................................................172 Typ danych XML ..........................................................................................174 Klauzula FOR XML ......................................................................................176 OPENXML ...................................................................................................177 Obsługa XQuery ............................................................................................177 Rozwinięcia DML .........................................................................................178 Native XML Web Services ...........................................................................178 WSDL ...........................................................................................................180 SQL Server jako platforma serwera aplikacji ...............................................181 SQL Service Broker ......................................................................................182 Notification Services .....................................................................................187 SQL Server Mobile Edition .........................................................................195 Ustawienia językowe w SQL Server 2005 ...................................................196 Wyszukiwanie pełnotekstowe ......................................................................198 Zapytania serwerów połączonych .................................................................199 Przeszukiwanie różnych kolumn ..................................................................199 Specyfikacja języka w zapytaniu ...................................................................199 SQL Server Express .....................................................................................201 Integracja z Visual Studio .............................................................................202 Czy SQL Server Express wystarczy? ...........................................................203 Ograniczenia platformy SQL Server Express ..............................................205 Instalacja i konfiguracja ................................................................................206 Protokoły obsługiwane przez SQL Server Express .....................................208 Podsumowanie ..............................................................................................209 Rozdział 5. Przegląd funkcji Business Intelligence ......................................................211 Przegląd Analysis Services ...........................................................................213 Architektura Analysis Services .....................................................................214 Ujednolicony model wymiarowy ..................................................................216 Widoki źródła danych ...................................................................................219 Kreator kostki ................................................................................................220 Business Intelligence Wizard .......................................................................221 Lokalizacja reprezentacji danych .................................................................222 Gdzie przechowuje się UDM? .....................................................................223 Modele dostępu do danych OLAP ...............................................................224 BI czasu rzeczywistego i proaktywne buforowanie .....................................224 Analiza przechowywania danych w usłudze Analysis Services ...................227 Kluczowe wskaźniki wydajności ...................................................................229 Język MDX (Multidimensional Expression) ................................................230 Spis treści 9 Bezpieczeństwo usługi Analysis Services ....................................................231 Funkcje relacyjne dla hurtowni danych .......................................................231 Drążenie danych w SQL Server 2005 ..........................................................234 SQL Server Integration Service ...................................................................236 Architektura SSIS .........................................................................................237 Przepływ danych ...........................................................................................238 Kontrola przepływu danych — nowe zastosowanie SSIS ...........................241 Obsługa błędów w SSIS ...............................................................................242 Rozmieszczanie pakietów .............................................................................243 Skalowanie SSIS — wybór pomiędzy 32-bitową a 64-bitową platformą sprzętową ...............................................................243 Kompatybilność wstecz ................................................................................245 SQL Server Reporting Services ...................................................................245 Architektura usługi Reporting Services .......................................................247 Projektowanie raportów ................................................................................248 Projektowanie modelu raportu .....................................................................249 Kreator raportu .............................................................................................249 Definiowanie raportu ....................................................................................251 Kontrolki do przeglądania raportu ...............................................................251 Grupa wykonania raportu .............................................................................251 Zarządzanie raportami ..................................................................................252 Menedżer konfiguracji Reporting Services .................................................253 Wdrażanie mechanizmów raportowania ......................................................254 Rozważania na temat Reporting Services ....................................................254 Zarządzanie i rozwijanie aplikacji Business Intelligence ............................255 SQL Server Management Studio .................................................................255 Business Intelligence Studio Development ................................................256 Administrator baz danych Business Intelligence ........................................256 Podsumowanie ..............................................................................................258 Rozdział 6. Kod ............................................................................................................259 Obsługa wyjątków transakcji ........................................................................260 Model programistyczny dużych obiektów ...................................................260 Nowe funkcje analityczne .............................................................................261 Warunek TABLESAMPLE ..........................................................................263 Nowy operator APPLY .................................................................................263 Operatory PIVOT i UNPIVOT ....................................................................264 Zapytania rekurencyjne ................................................................................266 Rozszerzenia operatora TOP ........................................................................269 Wyzwalacze DDL .........................................................................................271 DML Output .................................................................................................273 Rozszerzenia obsługi kolejkowania ..............................................................274 Widoki indeksowane .....................................................................................275 Kolumny wyliczane w sposób ciągły ............................................................277 Synonimy ......................................................................................................278 10 SQL Server 2005. Wyciśnij wszystko SQL transakcyjny a kwestia bezpieczeństwa ...............................................279 Zastosowanie ról ............................................................................................282 Szyfrowanie i certyfikaty ...............................................................................283 Praca z zestawami .........................................................................................285 Praca z XML .................................................................................................286 Usługi sieciowe XML ...................................................................................286 Widok Dynamic Management ......................................................................287 Wyłączanie niektórych funkcji bazy danych ................................................289 Partycjonowanie tabeli .................................................................................290 Podsumowanie ..............................................................................................293 Dodatek A Informacje o systemie SQL Server 2005 ....................................................295 Dodatek B Tabele systemowe i widoki w SQL Server 2005 ........................................301 Dodatek C Funkcje wbudowane w SQL Server ...........................................................305 Skorowidz .................................................................................................307 R O Z D Z I A Ł 4 . Funkcje do projektowania baz danych W tym rozdziale omówię zestaw funkcji, z jakimi projektanci baz danych są za- zwyczaj zaznajomieni. Administratorzy baz danych mogą skłaniać się do pomi- nięcia tego zagadnienia, ja jednakże tak nie postąpię. Zmiany, które wprowa- dzono w prezentowanej wersji SQL Server, można po prostu opisać jako ponowne opracowanie struktur służących do projektowania nowych klas aplikacji. W SQL Server 2005 rozszerzalność całościowej platformy baz danych została znacznie zwiększona. Możliwości SQL Server w zakresie obsługi wspólnego środowiska uruchomieniowego (ang. Common Language Runtime — CLR) mogą spowodować oszołomienie. Takich elementów jest więcej. Wprowadzenie kodu zarządzanego do SQL Server oznacza większe możliwości integracji dla rozwoju pakietów programów i niestandardowych aplikacji. Zasadniczo platforma SQL Server składa się z trzech warstw. (cid:141) Pierwszą warstwę stanowią podstawowe mechanizmy, takie jak SQL Server Engine — SQL Server.exe. (cid:141) Drugą warstwą jest szkielet. Stąd interfejsy uzyskują dostęp do poszczególnych komponentów. Ta warstwa jest warstwą prywatną firmy Microsoft. 160 Rozdział 4. • Funkcje do projektowania baz danych (cid:141) W trzeciej warstwie możemy znaleźć zestaw programów dostarczonych przez Microsoft, wiążących interfejs aplikacji z obiektami SQL Server. SQL Server 2005 zapewnia nowy zakres funkcjonalności, włączając w to usługi Analysis Services i Replication, jak również dotychczasowe elementy platformy SQL Server. Deweloperzy mogą pracować z trzecią warstwą opisywanej architektury bez ko- rzystania z interfejsu użytkownika. Oznacza to możliwość używania takich ele- mentów jak usługa SQL Server Integration Service do programowego przeno- szenia danych. Można tworzyć usługi, które będą zarządzały kopiami zapasowymi całego serwera baz danych, nie korzystając przy tym z programu SQL Mana- gement Studio. W rzeczywistości najlepszym sposobem na zaprojektowanie aplikacji SQL jest skorzystanie z interfejsu użytkownika w celu utworzenia pod- stawowego szkieletu, a następnie opisanie skryptami całej aplikacji. KRÓTKI PRZEGLĄD: FUNKCJE SQL SERVER DLA PROJEKTANTÓW SQL Server 2005 oferuje projektantom baz danych dużo nowych udogodnień. (cid:141) Projektowanie obiektów bazy danych w językach platformy .NET. Można pisać obiekty proceduralne, zawierające funkcje, procedury i wyzwalacze, w takich językach, jak C# i VB.NET. (cid:141) Nowy zestaw obiektów kodu zarządzanego dla rozszerzenia i pracy z obiektami SQL Server. (cid:141) Projektowanie i uruchamianie programu zostało zintegrowane ze środowiskiem Visual Studio. Pozwala to projektantom na używanie tych samych narzędzi zarówno do tworzenia obiektów baz danych i skryptów, jak i do pisania komponentów i usług .NET. (cid:141) Przechowywanie dokumentów w języku XML (ang. Extensible Markup Language), tworzenie zapytań XML i zwracanie wyników zapytań w postaci dokumentów XML. (cid:141) SQL Service Broker wprowadza możliwość tworzenia aplikacji bazodanowych zorientowanych na usługi (SOA). Integracja z Visual Studio Dla administratorów czy projektantów baz danych Visual Studio .NET 2005 stanowi ogromny krok naprzód w pracy z bazami danych. Microsoft zawsze za- pewniał lepszą obsługę własnych baz danych — przykładowo, w przypadku SQL Server wygląda to lepiej niż dla IBM DB2. Dzięki równoczesnemu utwo- rzeniu platformy SQL Server 2005, .NET Framework 2.0, ASP.NET 2.0 i na- Integracja z Visual Studio 161 rzędzi do projektowania aplikacji, Microsoft skutecznie zsynchronizował linię swoich produktów. Poszczególne wersje .NET Framework mogą funkcjonować równocześnie w tym samym systemie operacyjnym, zatem wprowadzanie no- wych produktów powinno przebiegać bezproblemowo i nie wymaga usuwania poprzedniej wersji danego oprogramowania. W poprzedniej wersji SQL Server trzeba było samodzielnie zaprojektować pa- kiety usług transformacji danych (ang. Data Transformation Services — DTS), kostki Analysis Services i moduły transakcyjnego SQL, używając odpowiednich narzędzi dla każdej technologii. W SQL Server 2005 można wykorzystywać Vi- sual Studio do projektowania wszystkich elementów i instalować całą aplikację jednym kliknięciem myszy. Dzięki Visual Studio z jego wszystkimi narzędziami dla deweloperów uzyskujemy liczne korzyści. (cid:141) Projektowanie zespołowe. Dzięki kontroli systemu i źródeł projektu można monitorować cały proces budowy aplikacji, począwszy od modułów bazy danych, na interfejsie użytkownika skończywszy. Narzędzie to ułatwia również kontrolę nad poszczególnymi wersjami tworzonej aplikacji. (cid:141) Uruchamianie i wdrażanie. Visual Studio obsługuje teraz uruchamianie procedur składowanych i kodu zarządzanego w tym samym procesie usuwania błędów. W celu instalacji nowej aplikacji wystarczy skorzystać z funkcji instalacji — wtedy instalacja odbywa się za pomocą jednego kliknięcia. (cid:141) Doświadczenie użytkownika. Nowe SQL Server Management Studio i Business Intelligence Development Studio zostały zaprojektowane na podstawie interfejsu użytkownika Visual Studio. Funkcjonalność pomocy została zintegrowana w ten sposób, aby projektant mógł skorzystać z SQL Sever i Visual Studio Books Online z poziomu jednej aplikacji. Klasycznym użytkownikom baz danych SQL Server zapewnia wszystkie po- trzebne narzędzia poprzez SQL Server Management Studio. Typowy projektant rozwiązań Business Intelligence (BI)1 może wykonywać swoją pracę na pozio- mie serwera i korzystać z usług Analysis Services, hurtowni danych, SQL Server Integration Services oraz Reporting Services za pomocą Business Intelligence Development Studio. Można by się zastanawiać, jak będzie wyglądało projek- towanie bazy danych SQL Server, Business Intelligence albo aplikacji ASP.NET z wykorzystaniem Visual Studio 2005? Jeżeli wszystkie komponenty SQL Server zostały zainstalowane na komputerze razem z Visual Studio 2005, do dyspozycji 1 Business Intelligence — oprogramowanie wspomagające procesy podejmowania decyzji poprzez analizę danych zgromadzonych w systemach informatycznych. Źródło: http://pl.wikipedia.org/wiki/ Business_intelligence — przyp. tłum. 162 Rozdział 4. • Funkcje do projektowania baz danych pozostają wszystkie narzędzia, a Visual Studio jest rozszerzone o nową możli- wość projektowania komponentów SQL Server. Niestety, nie ma możliwości tworzenia aplikacji w C# za pomocą Business Intelligence Development Studio. Warto teraz zapoznać się z najczęściej omawianą funkcją SQL Server 2005, za- pewniającą możliwość współpracy z .NET Framework. Integracja z .NET Framework Wydawać by się mogło, że klienci Microsoftu są jednymi z bardziej przedsię- biorczych i kreatywnych ludzi w dziedzinie projektowania aplikacji. Kiedy me- nedżerowie produktu i menedżerowie projektu z tej firmy rozmawiają z klien- tami o ich aplikacjach, często wypytują o sposób wykorzystywania technologii SQL Server. Często też słyszą głosy oburzenia klientów na wprowadzanie no- wych funkcji projektowania aplikacji do produktów lub języków Microsoftu. Je- żeli baza danych prezentuje sobą pewne możliwości, osoby takie uważają się za ekspertów. Tymczasem warto wiedzieć, że wdrażając SQL Server jako środowisko uruchomieniowe, wchodzimy w nową erę kreatywności. Dzięki integracji z CLR możemy pisać własne procedury składowane, wybie- rając do tego celu dowolny język .NET Framework. Języki programowania Microsoft — Visual Basic .NET i C# — umożliwiają tworzenie konstrukcji zo- rientowanych obiektowo, a także zapewniają strukturalną obsługę wyjątków, ta- blic, przestrzeni nazewniczych i klas. Dodatkowo .NET Framework dostarcza tysięcy wbudowanych klas i metod, które mogą być łatwo implementowane po stronie serwera. Wiele zadań, które były niewygodne lub trudne do wykonania za pomocą kodu transakcyjnego SQL, można zrealizować za pomocą kodu za- rządzanego. Dodatkowo są dostępne dwa nowe typy danych — złożenia i typy definiowane przez użytkownika. Teraz można lepiej wykorzystać swoją wiedzę i umiejętności nabyte podczas pisania kodu pośredniego. W skrócie rzecz uj- mując, SQL Server 2005 pozwala na rozwijanie bazy danych, aby mogła łatwiej wykonywać odpowiednie obliczenia i operacje po stronie wewnętrznej. Taka integracja SQL Server z CLR daje kilka ważnych korzyści. (cid:141) Poprawa zabezpieczeń i ochrona dla nietypowych typów danych z wykorzystaniem kodu zarządzanego poprzez CLR. (cid:141) Funkcje i funkcje agregujące definiowane przez użytkownika. Są to dwa nowe obiekty baz danych, które rozszerzają możliwości przechowywania i wykonywania zapytań. Są dostępne dzięki współpracy z CLR. Integracja z .NET Framework 163 (cid:141) Bliższa współpraca pomiędzy bazą danych a logiką aplikacji. W bazie danych można umieścić więcej logiki biznesowej, która może być obsługiwana przez rozwinięte komponenty zarządzania bazą danych. Pisząc kod, który ma bardziej złożoną logikę i jest lepiej dopasowany do zadań obliczeniowych, można oprzeć się na integracji z CRL i korzystać z takiego ję- zyka programowania, jak VB .NET czy C#. Dodatkowo Visual Basic .NET i C# umożliwiają wykorzystywanie pewnych właściwości programowania zoriento- wanego obiektowo, takich jak hermetyzacja, dziedziczenie i polimorfizm. Z ła- twością można zorganizować powiązany kod w klasy i przestrzenie nazewnicze. Oznacza to, że pracując z dużą ilością kodu, możemy łatwiej go organizować i utrzymywać. Taka logiczna i fizyczna organizacja kodu w zestawy (ang. as- semblies) i przestrzenie nazewnicze jest wielką korzyścią. Pozwala lepiej odnaj- dywać i łączyć różne części kodu w implementację dużej bazy danych. SQL Server jako środowisko uruchomieniowe W przeciwieństwie do COM (ang. Component Object Model) i rozszerzonych pro- cedur składowania, umieszczenie na serwerze SQL Server 2005 kodu zarządzane- go, oddziałującego na bazę danych, nie stwarza zagrożeń. Środowisko .NET Fra- mework uwzględnia kilka istotnych aspektów wykorzystywania kodu zarządzanego. Kod .NET wykorzystuje zabezpieczenia zapewniane przez kod dostępu. Zasto- sowano tu politykę bezpieczeństwa opartą na głównym uruchomieniu kodu. Należy pamiętać, że zazwyczaj istotną rolę w tym zakresie pełni konto użyt- kownika. Przywileje głównego użytkownika wpływają zarówno na sam kod, jak i na miejsce, z którego został załadowany. Po wczytaniu zestawu do pamięci, jego możliwości są automatycznie ograniczane do samego uruchomienia. Proces pa- mięci i środowisko systemowe, które załadowało zestaw, również może go ogra- niczać. Używając metafory, zestaw jest zmuszony do zabawy tylko w jednej pia- skownicy (ang. sandbox). W SQL Server 2005 ta koncepcja została przekształcona do tzw. AppDomain. AppDomain izoluje wszystkie zasoby wykorzystywane przez SQL Server, których wymaga kod .NET. Dzieje się tak nawet wtedy, gdy SQL Server i kod .NET znajdują się w tej samej przestrzeni procesowej. App- Domain chroni SQL Server przed niewłaściwym lub złośliwym użyciem po- szczególnych elementów zestawu, takich jak procedury składowane. Podczas instalacji SQL Server 2005 można zauważyć, że nowa architektura zabez- pieczeń domyślnie wyłącza zainstalowane funkcje. Co więcej, administrator bazy danych albo administrator systemowy musi jawnie przyznać użytkownikowi prawo do utworzenia zestawu w SQL Server 2005. Tworzenie zestawu w rzeczywistości jest załadowaniem wstępnie skompilowanego zapytania DDL do bazy danych. 164 Rozdział 4. • Funkcje do projektowania baz danych Zestaw jest przechowywany w wierszu tabeli bazy danych. Aby sprawdzić, które zestawy zostały załadowane, należy przejrzeć katalog sys.assemblies. Po załado- waniu zestawu następuje ustawienie atrybutu polecenia DDL verbiage w celu ustalenia stanu bezpieczeństwa tego zestawu. Możliwe są trzy podstawowe stany: (cid:141) SAFE. Ten tryb dostępu przypisuje zestaw do procesu SQL Server. (cid:141) External_Access. W ten sposób zestaw może uzyskiwać dostęp do systemu operacyjnego i korzystać z zasobów systemu plików. (cid:141) UNSAFE. To najmniej bezpieczny tryb. Zezwala zestawowi na szeroki, potencjalnie stwarzający zagrożenia dostęp do instancji bazy danych i obszaru systemu operacyjnego, więc nie jest polecany do użytku. Wybór pomiędzy SQL transakcyjnym a kodem zarządzanym Podczas tworzenia procedur składowanych, wyzwalaczy i funkcji użytkownika trzeba podjąć decyzję, czy korzystać z kodu SQL transakcyjnego, czy z jakiegoś języka programowania kompatybilnego z .NET Framework, takiego jak Visual Basic .NET czy C#. Odpowiedź na to pytanie zależy od konkretnej sytuacji. W niektórych przypadkach warto użyć SQL transakcyjnego, w innych — kodu zarządzanego. Język SQL jest najlepszy w sytuacjach, kiedy kod przede wszystkim uzyskuje dostęp do danych, jednak zastosowana logika proceduralna jest bardzo niewiel- ka albo nawet w ogóle jej nie ma. Języki programowania kompatybilne z .NET są najodpowiedniejsze dla intensywnie wykorzystywanych funkcji procedur, które cechuje złożona logika, lub dla sytuacji, kiedy trzeba skorzystać z zalet bi- blioteki klas .NET Freamework. Kod zarządzany jest bardziej efektywny niż SQL transakcyjny przy przetwarza- niu liczb i zarządzaniu skomplikowaną logiką wykonawczą. Zapewnia rozsze- rzoną obsługę ciągów znakowych i wyrażeń regularnych. Wszystkie operacje, począwszy od rozwiniętych funkcji matematycznych, poprzez operacje na da- tach, uzyskiwanie dostępu do zasobów systemowych czy plików, zaawansowa- nych algorytmów sortujących, przetwarzanie obrazów, a na przetwarzaniu danych w formacie XML skończywszy, są prostsze do wykonania za pomocą zarządza- nych procedur składowanych, funkcji i funkcji agregujących. Wraz z .NET Framework można rozszerzyć typy i funkcje dostępne w SQL Server. Integracja z .NET Framework 165 Typy danych zdefiniowane przez użytkownika Typy danych definiowane przez użytkownika, które wprowadzono w SQL Se- rver 2000, nie były łatwe w stosowaniu i niewiele było informacji na ten temat. Tworzenie i korzystanie z typów danych użytkownika we wcześniejszych wer- sjach nie było trudne, ale miało ograniczoną użyteczność. Zostało to zmienione w SQL Server 2005. Nowe typy danych zdefiniowane przez użytkownika (ang. User-defined data types — UDT) pozwalają na określenie abstrakcyjnych typów danych w dowolnym języku obsługiwanym przez .NET CLR. Takie typy da- nych mogą mieć skomplikowaną strukturę, a ich zachowanie jest zdetermino- wane poprzez metody, pola i właściwości klasy zdefiniowane w zestawie .NET. UDT są mocno zintegrowane z systemem typów i silnikiem SQL Server i mogą być wykorzystane w każdym kontekście, w jakim wbudowane typy są dozwolone. Serwer pozwala na indeksowanie, replikację i ładowanie dużej ilości UDT. Typy danych zdefiniowane przez użytkownika można wykorzystywać podczas definiowania kolumn w tabeli, w kodzie funkcji lub argumentach procedur składowanych. Takie dane mogą też być zmiennymi w funkcjach lub procedu- rach składowanych. Wyrażenia zawierające UDT mogą być stosowane w kon- tekście zapytania SQL transakcyjnego. Mimo że w tej książce nie będę zagłębiał się w tematykę UDT, administrator baz danych musi wiedzieć, w jaki sposób od- czytać kod VB .NET albo C#, aby zrozumieć działanie UDT. UDT muszą być skonstruowane w pewien określony sposób. Projektanci znający obiekty Struct mogą tworzyć UDT w łatwiejszy sposób. Podczas tworzenia UDT trzeba skon- kretyzować poniższe deklaracje. (cid:141) Należy wyspecyfikować SqlUserDefiniedTypeAttribute. W tabeli 4.1 przedstawiłem wszystkie potrzebne atrybuty. (cid:141) Trzeba określić atrybut Serializable. (cid:141) Należy zaimplementować interfejs IsNullable w klasie lub strukturze, tworząc pustą metodę public static (albo shared w Microsoft Visual Basic). SQL Server jest domyślnie ustawiony jako null-aware. Jest to niezbędne podczas wykonywania kodu, aby dane typu UDT zostały rozpoznane z wartością pustą. (cid:141) UDT muszą zawierać metody konwersji public state (albo shared) Parse i ToString, które umożliwiają przekształcenie do ciągu znakowego reprezentującego obiekt i analizę jego składni. (cid:141) Należy zapewnić metody odczytu i zapisu w klasach, w których wyspecyfikowano format serializacji użytkownika. UDT zdefiniowane w klasie muszą mieć publiczny bezargumentowy konstruktor. Można opcjonalnie utworzyć dodatkowy, przeciążony konstruktor. (cid:141) Trzeba wyeksponować elementy danych jako publiczne pola lub właściwości procedury. 166 Rozdział 4. • Funkcje do projektowania baz danych Tabela 4.1. Właściwości atrybutu SqlUserDefinedTypeAttribute Właściwość Format MaxByteSize IsByteOrdered ValidationMethodName IsFixedLength Opis Określa format serializacji, który może przybierać wartość Native lub UserDefined, zależnie od typu danych UDT. Maksymalny rozmiar instancji w bajtach. Należy zdefiniować MaxByteSize z określonym formatem serializacji UserDefined. Wartość logiczna (Boolean), która określa, jak SQL Server wykonuje porównania binarne UDT. Metoda wykorzystywana do sprawdzania poprawności instancji tego typu. Wartość logiczna, która określa, czy wszystkie instancje tego typu mają taką samą długość. Funkcje użytkownika Metody napisane w dowolnym języku programowania .NET mogą zostać zare- jestrowane jako funkcje użytkownika. Wprowadzone w SQL Server 2000 funkcje użytkownika są podprogramami, które na wejściu akceptują zerowe lub skalar- ne wartości albo parametry tabelaryczne oraz zwracają wartości skalarne lub ta- belaryczne. Załóżmy, że projektant pracuje nad aplikacją księgową i musi zaim- plementować obliczanie podatku dochodowego, płaconego przez poszczególnych pracowników w ciągu pewnego czasu. W tym celu projektant rejestruje metodę, specjalnie napisaną w C#, jako funkcję zdefiniowaną przez użytkownika. Moż- na wtedy łatwo napisać zapytania, które będą wykorzystywać funkcję użytkow- nika, służącą do wyliczania podatku dochodowego pracowników. Funkcje agregujące definiowane przez użytkownika Funkcje agregujące zdefiniowane przez użytkownika (UDAggs) można tworzyć za pomocą dowolnego języka .NET. UDAggs pozwalają na zdefiniowanie do- wolnych funkcji agregujących. W tym celu wykorzystuje się wbudowane funk- cje agregujące, takie jak SUM i MAX. Można się do nich odwoływać w zapyta- niach SELECT w taki sam sposób, jak do wbudowanych funkcji agregacji. UDAggs reprezentują inny sposób włączania skomplikowanej logiki biznesowej, związanej z wykonywaniem zapytań. Proces ten zachodzi wewnątrz serwera, blisko danych. Może być bardziej efektywny niż dostarczanie danych do środ- kowej warstwy aplikacji i agregowanie ich w tym miejscu. Przy projektowaniu UDAggs trzeba spełnić pewne kryteria projektowe, aby wszystko działało po- prawnie. Układ agregacji składa się z mechanizmu zapisującego pośredni stan SQL Server Manager Provider 167 agregacji i mechanizmu gromadzącego nowe wartości, który składa się z czte- rech metod: Init(), Accumulate(), Merge() i Terminate (). Podczas de- klarowania UDAgg konieczne jest jawne określenie atrybutu SqlUserDefine- dAggregate, który informuje SQL Server, że deklarowany typ danych dostosowuje się do struktury UDAgg. Dwie obowiązkowe właściwości atrybutu SqlUser- DefinedAggregate są wymagane przez format serializacji i są to: (cid:141) właściwość Format określa rodzaj serializacji — dla każdego formatu serializacji istnieje określony zestaw wymagań (zalecam sprawdzenie tej informacji w SQL Server Books Online); (cid:141) MaxByteSize jest maksymalnym rozmiarem, wyrażanym w bajtach, potrzebnym do przechowywania danych podczas obliczeń. Maksymalna dopuszczalna wartość wynosi 8 000. W celu poprawnego utworzenia i wykorzystywania UDAgg trzeba zadeklarować cztery funkcje. W tabeli 4.2 przedstawiłem te funkcje oraz ich zastosowanie. Tabela 4.2. Funkcje agregujące definiowane przez użytkownika Funkcja Init() Accumulate() Merge() Terminate() Opis Pozwala procesorowi zapytań na zainicjalizowanie funkcji agregacji. Wykorzystywana do agregacji danych — ładuje typ danych wyspecyfikowany w nawiasie. Pozwala na połączenie funkcji agregacji ze sobą. Jest to ważne w przypadku obliczeń matematycznych, posiadających różne wejścia. Przerywa proces agregacji i zwraca końcową wartość. Jeśli chodzi o wykonywanie sumowania, przeliczeń i innych podstawowych funk- cji matematycznych, UDAggs są dużo bardziej funkcjonalne niż transakcyjny SQL. Tak więc UDAgg można wykorzystywać w przypadku funkcji statystycz- nych, geometrycznych i innych funkcji numerycznych. Wprowadzenie UDAgg wymaga przestrzegania takich samych zasad zarządza- nia i rozmieszczania, co UDT. SQL Server Manager Provider Projektanci, pisząc procedury składowane lub wyzwalacze, mogą korzystać z róż- nych metod dostępu do danych zapewnianych przez ADO.NET, zoptymalizo- wanego dla kodu zarządzanego i uruchamianego na SQL Server. Dostawca jest zgodny z modelem programistycznym niemal identycznym ze standardem AD- O.NET. Zarządzany dostawca jest stosowany w zestawach, które wykorzystują dane 168 Rozdział 4. • Funkcje do projektowania baz danych SQL Server jako dane wejściowe i wyjściowe. Pisząc zarządzaną procedurę składowaną, która uaktualnia dane w tabeli, można zapewnić dostęp do bazy danych za pośrednictwem dostawcy zarządzanego. Podstawowa różnica pomiędzy ADO.NET a dostawcą zarządzanym polega na braku potrzeby podawania pa- rametrów połączenia (ang. connection string), ponieważ połączenie z bazą da- nych jest już ustanowione. Dostęp do zarządzanego dostawcy uzyskuje się, od- wołując się do System.Data.SQLServer. Stosując tę zasadę, można otworzyć połączenie z SQL Server. W tym celu nale- ży napisać następujący kod: SqlConnection oConn = SqlContext.GetConnection(); SqlPipe oPipe = SqlContext.GetPipe(); Projektanci zaznajomieni z tworzeniem aplikacji ADO.NET mogą docenić za- lety tego samego modelu podczas dodawania logiki do obiektów bazy danych dostępu do danych .NET. Dodatkowo, kod napisany na jednej warstwie jest ła- twiejszy do przenoszenia do innej. Zarządzane typy SQL Microsoft SQL Server 2005 zapewnia obsługę typów zarządzanych, które od- wołują się do dostępnych typów wbudowanych. Te typy danych, w formie pa- rametrów dla funkcji użytkownika i procedur w językach .NET, takich jak VB .NET i C#, można wykorzystywać do wymiany informacji pomiędzy językami zarządzanymi a wbudowanym systemem typów SQL Server. Co więcej, zarzą- dzane typy danych mogą być wykorzystywane do przyłączenia ich do kolumn tabel za pomocą zarządzanego dostawcy ADO.NET. Zarządzane typy są zesta- wami typów danych, które z kolei są częścią podstawowej biblioteki klas środo- wiska uruchomieniowego .NET Runtime. W przeciwieństwie do innych typów danych .NET Runtime, które nie zapewniają takiej składni, jak „NULL aware- ness”, zarządzane typy charakteryzują się taką samą składnię i zachowaniem, jak odpowiednie wbudowane typy danych SQL Server. W porównaniu z innymi typami danych .NET, korzystanie z tych typów minimalizuje konieczność kon- wersji i utraty precyzji. Zarządzane typy danych SQL są zdefiniowane w prze- strzeni nazewniczej System.Data.SqlTypes Jedną z technologii, w które Microsoft inwestuje najbardziej, jest XML. W ciągu następnych pięciu lat większość głównych produktów Microsoftu będzie obsłu- giwało technologię XML. W kolejnym podrozdziale przedstawię funkcjonalność XML w programie SQL Server 2005. SQL Server Manager Provider 169 UWAGA: Niektóre wbudowane typy danych SQL Server w zasadzie są prze- kształconymi typami danych SQL Server. W Books Online można znaleźć artykuł: „Typy danych (silnik bazy danych)”. Należy pamiętać, że wykorzystywanie SQL Ma- nager Provider i uzyskiwanie dostępu do bazy poprzez kod zarządzany jest moż- liwe pod warunkiem, że zastosowany kod jest rozpoznawalny przez SQL Server. Innymi słowy, typy danych, parametry i zwrócone wartości muszą mieć formę odpowiednią dla SQL Server. Poszczególne typy danych wymieniłem w tabeli 4.3, jednak nie wyszczególniłem tam typów danych użytkownika. Planując wykorzy- stywanie typów danych użytkownika w swojej organizacji, warto przygotować podobną tabelę i dołączyć ją do dokumentacji programu. Rozdział 6. „Kod” za- wiera przykłady sposobów uzyskiwania dostępu i zastosowania obiektów CLR. Tabela 4.3. Mapowanie typów SQL Typy SQL (zarządzany dostawca) SQLBinary SQLInt64 SqlInt32 SQLInt16 SQLByte SQLString SqlDateTime SqlDecimal SqlDouble SqlSingle SqlMoney SqlGuid SqlBoolean Typy natywne SQL Binary Varbinary TIMESTAMP IMAGE BIGINT INT SMALLINT TINYINT CHAR VARCHAR NCHAR NVARCHAR TEXT NTEXT SYSNAME DATETIME SMALLDATETIME DECIMAL NUMERIC FLOAT REAL MONEY SMALLMONEY UNIQUEIDENTIFIER BIT Typy CLR Byte[] Int64 Int32 Int16 Byte String DateTime Decimal Double Float Decimal Guid Boolean 170 Rozdział 4. • Funkcje do projektowania baz danych Technologia XML XML jest technologią, w którą stale się inwestuje i która nieustannie staje się coraz bardziej interesująca. Pierwotnie XML stanowiło rozwiązanie wyraźnie wyartykułowanych problemów. Obecnie XML jest powszechnie wykorzystywane — począwszy od Really Simple Syndication (RSS), aż po skomplikowaną inte- grację aplikacji, XML jest formatem przekazywania danych. XML jest z natury samoopisującym się językiem i może zawierać moc zbioru, zatem wielu projek- tantów aplikacji bazodanowych stosuje XML do rozwiązywania problemów wy- dajności aplikacji. W tym rozdziale przedstawię sposób wykorzystywania funkcji XML na platformie SQL Server. Po co wykorzystywać relacyjne bazy danych do przechowywania danych w formacie XML? Przechowywanie danych XML w relacyjnych bazach danych ułatwia zarządza- nie danymi i ich wyszukiwanie. Bazy danych w formacie XML nie zapewniają tych korzyści albo nie są do końca rozwinięte. SQL Server zapewnia dużą wy- dajność zapytań i łatwość zarządzania relacyjnymi danymi, włączając w to moż- liwość tworzenia zapytań i modyfikowania danych XML. Pozwala to na wyko- rzystanie zmian dokonanych w poprzednich wersjach programu. Na przykład techniki indeksacji, które w relacyjnych bazach danych są dobrze znane, zostały rozszerzone do indeksowania danych XML. Miało to na celu zoptymalizowanie zapytań za pomocą decyzji podejmowanych po analizie kosztów. Dane XML mogą współpracować z istniejącymi relacyjnymi bazami danych i aplikacjami SQL, więc XML może zostać wprowadzony do systemu, ponieważ konieczność modelowania danych nie powoduje zakłócania pracy istniejącej aplikacji. Poniżej wyszczególniłem niektóre powody, dla których warto przechowywać dane XML w relacyjnych bazach danych: (cid:141) Platforma SQL Server pozwala na wygodne zarządzanie danymi XML z wykorzystaniem wszystkich niezbędnych funkcji, w tym systemu zabezpieczeń. (cid:141) Wyszukiwanie lub modyfikacja danych XML może zachodzić w efektywny sposób, z uwzględnieniem mechanizmu transakcji. (cid:141) Dostęp do danych XML jest dobrze zorganizowany, co jest bardzo ważne z punktu widzenia działania aplikacji. Na przykład można uzyskiwać dostęp do określonych części dokumentu XML lub wstawiać do dokumentu nową sekcję bez zamieniania całego dokumentu. Technologia XML 171 (cid:141) Aplikacje oparte na danych relacyjnych oraz SQL umożliwiają współpracę danych relacyjnych z danymi XML w ramach takiej aplikacji. Zastosowanie XML ułatwi zapewnienie obsługi językowej dla kwerend i modyfikację danych w aplikacji międzydomenowej. (cid:141) Łatwo uzyskać poprawne formatowanie danych XML, a zachowanie pełnej zgodności jest możliwe dzięki sprawdzeniu za pomocą XML Schema (XSD). (cid:141) SQL Server zapewnia indeksowanie danych XML dla zwiększenia efektywności zapytań. (cid:141) SQL Server umożliwia uzyskiwanie dostępu do danych XML za pomocą Simple Object Access Protocol (SOAP), ADO.NET i OLE DB. SQL Server 2005 pozwala na dokonanie wyboru spośród kilku możliwości: dane XML można przechowywać jako dane typu Varchar(max) lub jako dane XML. Format Varchar(max) jest dobrym rozwiązaniem, kiedy chodzi tylko o skła- dowanie niskiego poziomu. Jeżeli potrzeby są większe i dane są przechowywane poza systemem plików, zaleca się zastosowanie typu danych XML. Typ danych XML jest wbudowanym typem danych SQL Server ze wszystkimi cechami in- nych wbudowanych typów. Przyjrzyjmy się bliżej typowi danych XML. Dane XML są przechowywane we własnej wewnętrznej reprezentacji, która chroni ich wewnętrzną strukturę, taką jak hierarchia zawartości, układ doku- mentu, wartości elementu i atrybutów itp. Szczególnie chroniony jest atrybut Information Set danych XML (więcej informacji o Information Set znajduje się na stronie http://www.w3.org/TR/xml-infoset). Ograniczeniem typu danych XML jest niemożność zapamiętywania takich informacji, jak białe znaki (ang. white spaces), kolejność atrybutów, prefiksy przestrzeni nazewniczej i deklara- cja XML. Jeżeli w danej sytuacji właściwości Information Set dokumentu XML są niewystarczające, należy użyć typów danych służących do przechowy- wania dużych obiektów, takich jak Varchar(max) albo Varbinary, ponieważ zachowują one wszystkie właściwości dokumentu. Kolumny tego typu posiadają wiele znaczących ograniczeń, takich jak brak możliwości użycia indeksów XML dla dokumentów XML. Dla zdefiniowanych typów danych XML (tj. typów danych XML powiązanych ze schematami XML), walidacja poschematowa (ang. Post-schema validation Information Set — PSVI), która dodaje informacje o typie do Information Set, jest kodowana w wewnętrznej reprezentacji danych. To znacznie zwiększa możliwości analizy składni (więcej informacji na ten temat znajduje się w spe- cyfikacji World Wide Web Consortium, W3C, na stronie http://www.w3.org/TR/ xmlschema-1 i http://www.w3.org/TR/xmlschema-2). 172 Rozdział 4. • Funkcje do projektowania baz danych Ogólnie rzecz ujmując, niekiedy obydwa te rozwiązania okazują się przydatne. Na przykład można przechowywać dane XML w kolumnie typu XML i przenosić właściwości do kolumn relacyjnych. Zamiennie można wykorzystać technologię mapowania i przechowywania nierekurencyjnych części w kolumnach o typach różnych od XML i tylko rekurencyjnych części w kolumnach o typach XML. Wybór technologii XML Wybór technologii XML (XML natywny, czyli wbudowany, lub podgląd XML) zależy przede wszystkim od poniższych uwarunkowań: (cid:141) Dane XML mogą być bardziej odpowiednie dla przechowywania dużych obiektów (na przykład instrukcja użytkowania produktu) lub lepiej się nadawać do przechowywania w kolumnach relacyjnych (takich jak niewielki element przekształcony do postaci XML). Każdy z tych wariantów magazynowania do pewnego stopnia zabezpiecza jakość dokumentu. (cid:141) Wybór odpowiedniejszego wariantu przechowywania danych zależy od sposobu i granic wykonywania zapytań na danych XML. Obsługa dobrze zorganizowanych zapytań danych XML, uwzględniających takie mechanizmy, jak przewidywalne szacowanie węzłów XML, zależy od wybranego sposobu magazynowania danych. (cid:141) Indeksowanie danych XML może przyspieszyć wykonywanie zapytań XML. Opcje indeksacji różnią się zależnie od opcji przechowywania danych, więc trzeba dokonać odpowiedniego wyboru, aby zoptymalizować działanie aplikacji. (cid:141) Niektóre procesy wymagają dobrze zorganizowanej modyfikacji danych XML (na przykład dodawanie nowej sekcji do dokumentu), inne tego nie wymagają (na przykład zawartość strony WWW). Obsługa poleceń DDL może być istotna dla aplikacji. (cid:141) Dane XML mogą być opisane za pomocą schematów, które mogą, ale nie muszą, być schematami dokumentów XML. Obsługa schematów związanych z XML zależy od wyboru technologii XML. Typ danych Native XML Przechowywanie danych w formacie Native XML jest użyteczne w przypadku, kiedy dokumenty XML posiadają różną strukturę lub jeśli ich schematy są zbyt różnorodne czy skomplikowane, aby je opisać za pomocą struktury relacyjnej. W tabeli 4.4 przedstawiłem powiązania pomiędzy typami danych SQL Server. Tabela 4.4. Porównanie kolumn Varchar i XML Funkcjonalność Ochrona struktury dokumentu XML Nieznany schemat Znany schemat Indeks XML Zapytanie wewnątrz XML Ładowanie dużej ilości danych Użycie XPath Varchar() X X X Widoki XML Technologia XML 173 Typ danych XML Information Set X X X X X X Aby utworzyć widok XML (ang. XML View) trwałych danych, należy zdefinio- wać powiązania pomiędzy schematami XML a tabelami w bazie danych. Widoki XML mogą służyć do zapełniania tabel podstawowych techniką masowego ła- dowania danych (ang. bulk load), można też odpytywać widok XML, korzystając z XPath 1.0. Taka kwerenda jest tłumaczona na zapytanie SQL do odpowiedniej tabeli. Podobnie są wykonywane uaktualnienia tych tabel. Taka technologia oka- zuje się użyteczna, kiedy trzeba zapewnić model programowania oparty na XML, który korzysta z widoku XML podczas uzyskiwania dostępu do danych relacyjnych. Istnieją schematy, które można wykorzystać do pracy z danymi XML (takie jak XSD czy XDR — XML-Data Reduced), oferowane przez ze- wnętrznych dostawców. Dodatkowo warto wspomnieć, że widoki XML są przy- datne w następujących sytuacjach: (cid:141) kolejność danych jest nieistotna lub dane potrzebne do zapytania nie są rekurencyjne albo też jest znana maksymalna liczba rekurencji w głąb; (cid:141) istnieje potrzeba wyszukania lub zmodyfikowania danych poprzez widok XML za pomocą XPath 1.0; (cid:141) istnieje potrzeba masowego ładowania danych XML i przeniesienia ich do odpowiednich tabel za pomocą widoku XML. W powyższych sytuacjach dane relacyjne są przechowywane w postaci XML, co ma na celu łatwiejszą wymianę danych, usług sieciowych i danych XML z ustalonym stałym schematem (więcej informacji znajduje się pod adresem http://msdn.microsoft.com/SQLXML). 174 Rozdział 4. • Funkcje do projektowania baz danych Typ danych XML Twórcy SQL Server 2005 wprowadzili nowy skalarny typ danych XML, który jest wariantem typu binary large object (BLOB). Typ danych XML w SQL Se- rver 2005 spełnia wymogi określone w specyfikacji W3C dla typu danych XML, a nawet wychodzi poza specyfikację (konstrukcje modyfikacji danych XML). XML może modelować skomplikowane dane, nie ograniczając się tylko do ska- larnych typów danych obsługiwanych przez SQL Server. Tak więc takie typy danych, jak wbudowane, oparte na ciągach znakowych Char lub Varchar, nie wystarczą do pełnego i efektywnego wykorzystania wielu cennych właściwości XML. Przykładowo, jeżeli XML jest przechowywany jako ciąg znakowy, można wstawiać lub wybierać cały dokument albo nawet uzyskać z niego ciąg bajtów, ale nie można przeszukiwać zawartości samego dokumentu. Dzięki nowemu typowi danych XML, platforma SQL Server 2005 pozwala na przeszukiwanie części dokumentu XML, sprawdzenie, czy dokładnie odpowiada on schematowi XML, a nawet zmodyfikowanie zawartości dokumentu XML. Pozwala także na integrację standardowych, relacyjnych danych z danymi nieustrukturyzowanymi lub wstępnie ustrukturyzowanymi dokumentami XML, w sposób, jaki nie był możliwy przy użyciu SQL Server 2000. Platforma SQL Server 2005 przecho- wuje dane XML jako dane typu BLOB w wewnętrznej reprezentacji, która umożliwia efektywną analizę i pewną kompresję. Kolekcja schematów XML może być powiązana z kolumnami typu XML. Spo- woduje to sprawdzenie poprawności dla połączeń, wstawiania, uaktualniania i wpi- sywania wartości wewnątrz przechowywanych danych XML, jak również opty- malizację przechowywania i przetwarzania zapytań. SQL Server 2005 zapewnia także kilka poleceń DDL służących do zarządzania schematami na serwerze. Typ danych XML posiada metody — query(), exist(), value(), nodes() oraz modify() — które implementują ważny podzbiór specyfikacji XML Query (XQuery). Niezdefiniowane, zdefiniowane i ograniczone typy danych XML Typ danych SQL Server XML zaprojektowano zgodnie ze standardem ISO SQL-2003 dla danych XML. Tak więc, może on przechowywać dobrze zorgani- zowane dokumenty XML 1.0, jak również fragmenty zawartości dokumentów XML z węzłami tekstowymi oraz pomocnicze numery szczytowych elementów w niezdefiniowanych kolumnach XML. System sprawdza sposób formatowania danych, nie wymaga powiązania kolumn ze schematami XML i odrzuca dane, jeżeli nie są odpowiednio sformatowane. Dotyczy to także niezdefiniowanych zmiennych i parametrów XML. Technologia XML 175 Schemat XML opisujący dane XML może zostać powiązany z kolumną XML, dzięki czemu powstanie zdefiniowana kolumna XML. Schemat XML, wykorzy- stany do sprawdzenia poprawności danych, przeprowadza podczas kompilacji zapytania i poleceń DDL dokładniejsze analizy niż niezdefiniowany XML — optymalizuje przechowywanie danych i przetwarzanie zapytań. Definiowane kolumny XML, parametry i zmienne mogą przechowywać doku- menty XML lub ich zawartość. Trzeba zadeklarować odpowiednią wartość flagi (DOCUMENT lub CONTENT). Co więcej, należy też dostarczyć kolekcję schematów XML. Trzeba ustawić wartość DOCUMENT, jeżeli każde wystąpienie XML ma tylko jeden element szczytowy — w innym przypadku musimy użyć CONTENT. Kompilator zapytań stosuje flagę DOCUMENT do sprawdzania typu podczas kom- pilacji kwerendy określającej szczytowe elementy. Dodatkowo do opisania ko- lumny XML można użyć więzów relacyjnych (kolumna lub wiersz) dla zdefi- niowanych bądź niezdefiniowanych kolumn typów danych XML. Indeksowanie kolumn typu dane XML Indeksy XML można tworzyć na kolumnach danych typu XML. Wszystkie znacz- niki, wartości i ścieżki są indeksowane za pomocą instancji XML w tej kolumnie, która optymalizuje przetwarzanie zapytań. Aby indeksy XML przynosiły korzy- ści, należy spełnić następujące warunki: (cid:141) Zapytania na kolumnach XML powinny być wykonywane na co dzień. Trzeba wziąć pod uwagę koszty utrzymania indeksów XML podczas modyfikacji danych. Można popatrzeć na plan, żeby zrozumieć wpływ indeksów XML na przetwarzanie zapytań. (cid:141) Wartości XML powinny być stosunkowo duże, a wydobywane części danych stosunkowo niewielkie. Tworzenie indeksów zapobiega rozdzielaniu wszystkich danych podczas pracy aplikacji i przynosi korzyści w wyszukiwaniu indeksów dla wydajnego przetwarzania zapytań. Pierwszym indeksem kolumny XML jest podstawowy indeks XML (ang. primary). Za jego pomocą można utworzyć drugorzędny indeks XML dla kolumny XML, żeby przyspieszyć działanie zwykłej klasy zapytań. Istnieją trzy typy drugorzę- dowych indeksów XML. Indeks podstawowy indeksuje wszystkie znaczniki, wartości i ścieżki wewnątrz wystąpienia XML w kolumnie XML. Podstawowa tabela musi mieć zgrupowany indeks dla klucza podstawowego tabeli. Klucz podstawowy jest wykorzystywany do korelowania indeksów wiersza z tym właśnie wierszem w tabeli podstawowej. Pełne wystąpienia XML są uzyskiwane z kolumn XML. Wykonywane zapytania wykorzystują podstawowe indeksy XML, zwracając skalarne wartości lub pod- drzewa XML. 176 Rozdział 4. • Funkcje do projektowania baz danych Po utworzeniu podstawowego indeksu XML, można utworzyć drugorzędny in- deks XML, żeby przyspieszyć wykonywanie różnych klas zapytań wewnątrz procesu pracy. Drugorzędne indeksy XML — indeksy typu ścieżki, właściwości i wartości — przynoszą korzyści, odpowiednio, zapytaniom opartym na ścieżce, scenariuszom zarządzania właściwościami i zapytaniom opartym na wartości: (cid:141)
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

SQL Server 2005. Wyciśnij wszystko
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: