Co nowego w silniku bazodanowym SQL Server 2008 November CTP

Opublikowano: 18 grudnia 2007
Zawartość strony
WstępWstęp
Instalacja November CTP Instalacja November CTP
Resource Governor Resource Governor
Dane geometryczne i geograficzne Dane geometryczne i geograficzne
Opcja FILESTREAM Opcja FILESTREAM
Gotowe reguły dla Declarative Management Framework Gotowe reguły dla Declarative Management Framework
SQL Server Management Studio SQL Server Management Studio
Mechanizm Change Tracking Mechanizm Change Tracking
Kompresja kopii zapasowych Kompresja kopii zapasowych
Co nowego w kryptografiiCo nowego w kryptografii
Dynamiczne dodawanie procesorów Dynamiczne dodawanie procesorów
Inne nowości w November CTP Inne nowości w November CTP
PodsumowaniePodsumowanie

Wstęp

Kolejna wersja testowa systemu SQL Server 2008 ukazała się z miesięcznym opóźnieniem. Pierwotnie nosiła ona nazwę October CTP, ale finalnie ukazała się pod nazwą November CTP (lub CTP5). Już pierwszy kontakt z nową wersją sprawia, że zaczynamy rozumieć, czemu wspomniane opóźnienie miało miejsce. Nowych funkcjonalności jest więcej niż w jakiejkolwiek wydanej dotychczas wersji CTP! A zatem, co nowego w silniku bazodanowym w November CTP?

Uwaga

Ponieważ Microsoft SQL Server 2008 November CTP jest rozwojową wersją systemu, firma Microsoft nie gwarantuje, że opisane w artykule funkcjonalności znajdą się w wersji finalnej systemu w takiej postaci, jak to przedstawiono w tekście. Nie ma również gwarancji, że funkcjonalności te w ogóle znajdą się w wersji finalnej.

Do początku stronyDo początku strony

Instalacja November CTP

Już na etapie instalacji nowego Community Preview okazuje się, że mamy do czynienia z czymś zupełnie innym niż wersje dotychczasowe. Na początek wita nas nowe okno startowe instalatora (patrz poniżej).

Rys. 1. Okno instalatora SQL Server 2008 November CTP.

Rys. 1. Okno instalatora SQL Server 2008 November CTP.

Okno to wygląda dość przystępnie, ale przy okazji pokazuje, że zastosowano nowe podejście do tematu instalacji składników serwera. Dodawanie nowych funkcjonalności do serwera, po dokonaniu pierwszej instalacji, odbywa się z poziomu linii poleceń. Czy to podejście jest słuszne? Okaże się w najbliższej przyszłości.

Instalacji SQL Server 2008 November CTP nie można przeprowadzić, akceptując domyślne ustawienia każdego z okien instalatora. Jesteśmy zobligowani do samodzielnego określenia takich opcji, jak konta dla usług (koniec z automatcznym ustawianiem konta LocalSystem) czy lista członków roli sysadmin (lokalni administratorzy nadal są domyślnie dodawani do tej roli). To potwierdza, że firma Microsoft idzie w kierunku dodawania do swoich produktów mechanizmów, wymuszających niejako najlepsze praktyki administracyjne. Każdą instancję można teraz nazwać (nazwę może otrzymać nawet instancja domyślna – przy czym domyślną nazwą takiej instancji jest MSSQLSERVER). Po zakończeniu instalacji z niekrytą satysfakcją stwierdzamy, że zmieniły się nazwy katalogów roboczych usług serwera. I tak, dla instancji domyślnej, katalog roboczy silnika baz danych ma nazwę MSSQL10.MSSQLSERVER (zamiast nic nie mówiącego MSSQL.1).

Uwaga

Instalator, mimo swoich oczywistych zalet, nadal ma kilka niedociągnięć. Na przykład, autor artykułu nie doszukał się w instalatorze okna, pozwalającego na ustawienie opcji collation w czasie instalacji serwera.

Do początku stronyDo początku strony

Resource Governor

Jednym z najbardziej oczekiwanych nowych mechanizmów w silniku Katmai jest Resource Governor. Pierwsza implementacja tego wielce obiecującego narzędzia pojawiła się w wersji November CTP. Administrator dostaje możliwość kontroli zasobów przydzielanych poszczególnym zapytaniom wykonywanym na serwerze. Na początku administrator określa tzw. pule zasobów (ang. resource pools), czyli pule określające limity dolne i górne przydziału pamięci oraz procesora. Następnie administrator definiuje grupy (ang. workload groups), którym zostają przydzielone pule. Ostatnią rzeczą do zdefiniowania jest funkcja klasyfikująca zapytania do odpowiednich grup. Jest to klasyczna funkcja skalarna pisana w języku Transact-SQL, która zwraca nazwę grupy. Dzięki temu zasoby mogą być przydzielane według praktycznie dowolnych kryteriów.

Rys. 2. Resource Governor - okno właściwości  dostępne w Management Studio.

Rys. 2. Resource Governor - okno właściwości dostępne w Management Studio.

Poniższy fragment kodu ilustruje składnie Transact-SQL, które określają pulę zasobów, dwie grupy oraz funkcję klasyfikującą. Wykonanie poniższego kodu spowoduje włączenie mechanizmu Resource Governor i następujące jego działanie: jeżeli w serwerze będzie wykonywane zapytanie w kontekście logina nie należącego do roli sysadmin, to serwer przydzieli takiemu zapytaniu maksymalnie 50 proc. zasobów procesora(-ów).

USE master
GO
BEGIN TRAN
  CREATE RESOURCE POOL poolHalfCPU
  WITH (MAX_CPU_PERCENT = 50)
  GO

  CREATE WORKLOAD GROUP wgpAdmins 
  CREATE WORKLOAD GROUP wgpUsers USING poolHalfCPU
  GO
  CREATE FUNCTION dbo.ufnResGovClassifier()
  RETURNS SYSNAME
  WITH SCHEMABINDING
  AS
  BEGIN
    DECLARE @grpname sysname
    IF IS_SRVROLEMEMBER('sysadmin',SUSER_SNAME()) = 1
      SET @grpname = N'wgpAdmins'
    ELSE
      SET @grpname = N'wgpUsers'
    RETURN @grpname
  END
  GO
  ALTER RESOURCE GOVERNOR 
  WITH (CLASSIFIER_FUNCTION= dbo.ufnResGovClassifier)
COMMIT
GO
ALTER RESOURCE GOVERNOR 
RECONFIGURE
Do początku stronyDo początku strony

Dane geometryczne i geograficzne

Programiści pracujący z systemem SQL Server wiele obiecują sobie po nowych typach danych, jakie mają być dostępne w SQL Server 2008. Z pewnością najciekawiej zapowiadają się geometryczne i geograficzne typy danych, wspólnie określane mianem „spatial data”.

W November CTP światło dzienne ujrzały dwa typy danych: geometry i geography. Pierwszy z nich pozwala na definiowanie obiektów na płaszczyźnie i w przestrzeni. Typ geometry jest wyposażony w liczne metody i właściwości, dzięki którym programista w prosty sposób może operować kształtami czy bryłami, testować ich wzalejmne ułożenie w układach współrzędnych czy dokonywać obliczeń takich wielkości, jak pola figur. Poniższy fragment kodu obrazuje użycie typu geometry do stworzenia punktów, policzenia odległości między nimi, stworzenia dwóch wieloboków (kwadrat i trójkąt), wyliczenia ich pól powierzchni i stwierdzenia, czy owe wieloboki mają część wspólną.

DECLARE @point1 geometry, @point2 geometry
SELECT 
  @point1 = geometry::STGeomFromText('POINT(0 0)', 0),
  @point2 = geometry::STGeomFromText('POINT(2 2)', 0)
SELECT 
  @point1.STX AS [Point1 X], 
  @point1.STY AS [Point1 Y], 
  @point1.ToString() AS Point1,
  @point2.STX AS [Point2 X], 
  @point2.STY AS [Point2 Y], 
  @point2.ToString() AS Point2,
  @point1.STDistance(@point2) AS Distance
  
DECLARE @square geometry, @triangle geometry
SELECT 
  @square = geometry::STGeomFromText('POLYGON((0 0,2 0,2 2,0 2,0 0))',0),
  @triangle = geometry::STGeomFromText('POLYGON((0 0,2 0,0 5,0 0))',0)
SELECT 
  @square.ToString() AS Square, 
  @square.STArea() AS [Square area],
  @triangle.ToString() AS Triangle,
  @triangle.STArea() AS [Triangle area],
  @square.STIntersects(@triangle) AS Intersection

Dla wspomnianych typów danych został też udostępniony nowy dedykowany rodzaj indeksów.

Do początku stronyDo początku strony

Opcja FILESTREAM

Opcja FILESTREAM integruje silnik bazodanowy system SQL Server z systemem plików NTFS poprzez przechowywanie danych typu varbinary(max) jako pliki w systemie plików. Opcja ta umożliwia nawet przechowywanie danych przekraczających rozmiarem 2GB. Interfejsy systemu plików Windows zapewniają strumieniowe przesyłanie danych. Silnik systemu SQL Server dostarcza standardowych składni T-SQL do wykonywania operacji na danych plikowych oraz system uprawnień do zarządzania dostępem do danych tego typu.

Aby używać opcji FILESTREAM, należy najpierw włączyć ją na poziomie instancji SQL Server za pomocą procedury systemowej sp_filestream_configure. W zależności od tego, czy chcemy przechowywać dane lokalnie, czy z użyciem zdalnych zasobów, podajemy jako wartość parametru @enable_level liczbę od 0 (opcja nieaktywna) do 3 (opcja aktywna, możliwe użycie zarówno lokalnych, jak i zdalnych zasobów dyskowych).

EXEC sp_filestream_configure @enable_level = 3

Po włączeniu opcji na poziomie serwera, należy stworzyć w odpowiedni sposób bazę danych. Baza danych, która może używać opcji FILESTREAM, musi mieć specjalnie zdefiniowaną grupę plików – w definicji grupy musi pojawić się klauzula CONTAINS FILESTREAM, zaś zamiast ścieżek do plików podawane są ścieżki do katalogów (patrz kod poniżej). Do katalogów tych SQL Server zapisuje dane przechowywane jako typ varbinary(max) z opcją FILESTREAM. Katalogi takie są tworzone przez SQL Server w momencie utworzenia bazy danych (wcześniej katalogi te nie mogą istnieć w systemie plików).

CREATE DATABASE FileStreamDB
ON PRIMARY (
  NAME = FileStream_data,
  FILENAME = N'D:\Data\FileStreamTest_data.mdf',
  SIZE = 100MB,
  FILEGROWTH = 20%
),
FILEGROUP FileStreamGroup CONTAINS FILESTREAM (
  NAME = FileStream_images,
  FILENAME = N'D:\Images'
)
LOG ON (
  NAME = FileStream_log,
  FILENAME = N'E:\Data\FileStreamTest_log.mdf',
  SIZE = 30MB,
  FILEGROWTH = 15%
)
GO

Także tabele, w których zostanie zdefiniowana kolumna z opcją FILESTREAM, muszą spełniać pewne określone wymagania (wymagana jest obecność kolumny unikalnej typu danych uniqueidentifier). Poniższy kod zawiera przykładową definicję tabeli wykorzystującej opcje FILESTREAM.

USE FileStreamDB
GO
CREATE TABLE dbo.FileStreamTable
(
  FileId uniqueidentifier ROWGUIDCOL NOT NULL PRIMARY KEY DEFAULT NEWID(),
  FileContent varbinary(max) FILESTREAM
)
GO

Obsługa danych typu varbinary(max) z opcją FILESTREAM odbywa się przy użyciu standardowych składni języka Transact-SQL. Silnik baz danych potrafi także obsłużyć dane tego typu w transakcjach.

Do początku stronyDo początku strony

Gotowe reguły dla Declarative Management Framework

Mechanizm Declarative Management Framework (DMF) został udostępniony już w CTP3 (w pierwszym publicznym CTP). Jego zadaniem jest umożliwienie administratorowi zarządzania serwerami za pomocą definiowanych przez administratora reguł. November CTP udostępnia bardzo ciekawe rozszerzenie DMF. Są to gotowe szablony reguł oparte o najlepsze praktyki zaimplementowane w narzędziu Best Practices Analyzer, używanym przez administratorów z poprzednimi wersjami systemu SQL Server. Co więcej, definiowanie reguł stało się bardziej intuicyjne. SQL Server Management Studio pokazuje właściwości reguł w czytelniejszy sposób, a dodatkowo daje możliwość wprowadzenia restrykcji co do wersji systemu, na którym dana reguła może/musi być wymuszana.

Rys. 3. Gotowe reguły dla Declarative Management Framework.

Rys. 3. Gotowe reguły dla Declarative Management Framework.

Do początku stronyDo początku strony

SQL Server Management Studio

Także narzędzie SQL Server Management Studio doczekało się w wersji November CTP nowych funkcjonalności. Pierwszą, a zarazem budzącą najwięcej emocji, jest Intellisense, czyli podpowiadanie składni. Właściwie wskazówki sprowadzają się do podpowiadania nazw obiektów baz danych i serwera, zaś sam mechanizm wymaga jeszcze dopracowania, ale pierwszy krok, na drodze do oddania w ręce użytkowników pełnej obsługi podpowiadania składni, został uczyniony.

Rys. 4. Intellisense w Management Studio.

Rys. 4. Intellisense w Management Studio.

Nowością w Management Studio jest także możliwość uruchamiania skryptów na wielu serwerach jednocześnie. Jest to nowa funkcjonalność okna Registered Servers. Jeżeli zarejestrujemy kilka serwerów jako jedną grupę, to klikając prawym przyciskiem na grupie można otworzyć okno nowego skryptu, po uruchomieniu którego kod wykona się na każdym z serwerów znajdujących się w grupie, zaś wyniki zapytania z poszczególnych serwerów zostaną scalone do jednego zestawu wynikowego.

Rys. 5. Nowe funkcjonalości okna Registered Server.

Rys. 5. Nowe funkcjonalości okna Registered Server.

Management Studio zostało ponadto wyposażone w nowe okno – Error List. W oknie tym listowane są błędy składniowe napotkane w otwartych skryptach lub w otwartym projekcie. Okno to można wywołać w November CTP z menu głównego, wybierając opcję View -> Error List.

Rys. 6. Okno Error List w Management Studio.

Rys. 6. Okno Error List w Management Studio.

Do początku stronyDo początku strony

Mechanizm Change Tracking

W wersji July CTP firma Microsoft zaprezentowała mechanizm Change Data Capture – asynchroniczny mechanizm śledzenia zmian w danych. W November CTP pojawił się podobny mechanizm– Change Tracking. Change Tracking jest synchronicznym mechanizmem śledzenia zmian w wierszach. Pozwala on stwiedzić, czy dane uległy zmianie i kiedy to nastąpiło, ale nie pozwala stwierdzić, jakie były wartości pól w tabelach czy ile razy zmieniła się zawartość wybranej kolumny od wybranego punktu w czasie. Mechanizm ten nie śledzi także zmian dokonanych przez niektóre polecenia (UPDATETEXT, TRUNCATE TABLE).

Włączenie Change Tracking na poziomie bazy danych odbywa się poprzez użycie polecenia ALTER DATABASE (patrz kod poniżej) lub używając okna właściwości bazy danych w środowisku Management Studio.

ALTER DATABASE AdventureWorks
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 3 DAYS, AUTO_CLEANUP = ON)
Rys. 7. Mechanizm Change Tracking w oknie właściwości bazy danych.

Rys. 7. Mechanizm Change Tracking w oknie właściwości bazy danych.

Włączenie mechanizmu na poziomie bazy danych nie powoduje jeszcze, że zmiany są śledzone. Dopiero wykonanie odpowiedniej składni ALTER TABLE (patrz kod poniżej) lub zmiana ustawień w oknie właściwości tabeli, w której użytkownik chce śledzić zmiany, uruchamia właściwy proces śledzenia.

ALTER TABLE HumanResources.Department
ENABLE CHANGE_TRACKING
WITH (TRACK_COLUMNS_UPDATED = ON)

Po takiej konfiguracji mechanizmu administrator może przystąpić do korzystania ze specjalnych funkcji systemowych służących do wykrywania zmian i synchronizacji danych z wykorzystaniem Change Tracking. November CTP wprowadza wiele takich funkcji, np. CHANGETABLE – funkcję umożliwiającą podejrzenie zapisanych zmian w określonej tabeli.

SELECT * FROM CHANGETABLE(CHANGES HumanResources.Department,0) AS CT
Do początku stronyDo początku strony

Kompresja kopii zapasowych

November CTP umożliwia wykonywanie skompresowanych kopii zapasowych (docelowo funkcjonalność ta jest przewidziana dla SQL Server 2008 Enterprise Edition). Dzięki ustawieniu na poziomie serwera opcji „backup compression default” wszystkie wykonywane kopie zapasowe mogą być skompresowane.

USE master
GO
EXEC sp_configure 'backup compression default',1
RECONFIGURE
GO

Zawsze można też wymóc na serwerze kompresję konkretnej kopii zapasowej przez użycie opcji WITH COMPRESSION polecenia

BACKUP.
BACKUP DATABASE master
TO DISK = N'C:\master_compressed.bak'
WITH COMPRESSION
GO

Analogicznie można wymusić brak kompresji, używając opcji WITH NO_COMPRESSION.

Współczynnik kompresji nie jest konfigurowalny.

Informacja

W testach autorowi artykułu udało się uzyskać współczynnik na poziomie 5,5 (stosunek wielkości kopii nieskompresowanej do wielkości kopii skompresowanej). Testy pokazały też, że kompresja kopii zapasowych w November CTP jest silniejsza niż kompresja NTFS.

Do początku stronyDo początku strony

Co nowego w kryptografii

W November CTP pojawia się nowy sposób zarządzania kluczami szyfrującymi – Extensible Key Management (EKM). Umożliwia on przechowywanie kluczy używanych przez SQL Server 2008 do szyfrowania danych „na zewnątrz”, na przykład na urządzeniach typu smartcard lub USB. Aktywacja EKM na poziomie instancji odbywa się przez zmianę właściwości odpowiedniej opcji serwera (patrz kod poniżej).

EXEC sp_configure 'EKM provider enabled', 1

Dzięki umożliwieniu wykorzystania mechanizmów niedostępnych w SQL Server użytkownik zyskuje dodatkowe możliwości w zakresie autoryzacji, procesu szyfrowania czy dystrybucji kluczy.

Drugą nową funkcjonalnością udostępnioną przez November CTP w zakresie kryptografii jest przezroczyste szyfrowanie danych – Transparent Data Encryption. Transparent data encryption dokonuje szyfrowania czasu rzeczywistego plików danych i plików dziennika transakcji. Poniższy fragment kodu pokazuje, w jaki sposób administrator może skonfigurować takie szyfrowanie poprzez stworzenie klucza szyfrującego dane oraz włączenia za pomocą składni ALTER DATABASE szyfrowania na poziomie bazy danych.

USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!@#$23@eWa'
GO
CREATE CERTIFICATE MyCert WITH SUBJECT = 'My Certificate'
GO
USE AdventureWorks
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyCert
GO
ALTER DATABASE AdventureWorks
SET ENCRYPTION ON
GO

Szyfrowanie i odszyfrowywanie danych odbywa się w tle z wykorzystaniem wewnętrznych procesów systemu SQL Server. Przywrócenie kopii zapasowej bazy, która ma skonfigurowane przezroczyste szyfrowanie danych, nie jest możliwe bez posiadania klucza asymetrycznego lub certyfikatu użytego do zaszyfrowania danych.

Do początku stronyDo początku strony

Dynamiczne dodawanie procesorów

SQL Server 2008 November CTP Enterprise/Developer Edition zainstalowany na 64-bitowej wersji Windows Server 2008 Datacenter lub Windows Server 2008 Enterprise Edition na platformie opartej o procesory Itanium pozwala na dynamiczne dodawanie procesorów (fizycznych i logicznych) bez potrzeby restartu usługi serwera. Dodatkowo serwer nie może używać software’owych rozwiązań NUMA (ang. Non-uniform Memory Access).

Do początku stronyDo początku strony

Inne nowości w November CTP

Inne nowości w silniku bazodanowym November CTP to między innymi:

nowe możliwości wymuszania planu wykonania zapytań (hinty przekazywane za pomocą planu zapisanego w formacie XML, nowe funkcje i porcedury, m.in. do tworzenia planów z cache’u proceduralnego),

usprawnienia wykonywania zapytań do tabel partycjonowanych (przeszukiwanie indeksów według partycji, równoległość operacji wykonywanych na partycjach),

lepsza wizualizacja planów graficznych zapytań do tabel partycjonowanych,

usprawniony mechanizm przełączania partycji,

opcja LOCK_ESCALATION polecenia ALTER TABLE, która umożliwia zmniejszenie eskalacji blokad do zakresu pojedynczych partycji tabeli.

Do początku stronyDo początku strony

Podsumowanie

SQL Server 2008 November CTP robi wrażenie. Ilość nowych funkcjonalności, w większości naprawdę ciekawych i przydatnych, jest imponująca i zdecydowanie większa niż w którejkolwiek z poprzednich wersji CTP. Wypróbowanie nowych mechanizmów zajmie użytkownikom z pewnością sporo czasu, ale warto ten czas poświęcić już teraz, by poznać nowe możliwości naprawdę ciekawie zapowiadającego się systemu SQL Server 2008.


Paweł Potasiński

Paweł Potasiński (Microsoft Certified Trainer, Asseco Business Solutions S.A.)
Programista i konsultant w firmie Asseco Business Solutions S.A., gdzie kontynuuje odkrywanie tajników systemów SQL Server. Wcześniej od roku 2000 prace głównie przy projektach aplikacji webowych i serwerach baz danych (m.in. SQL Server 7.0/2000). W latach 2003-2007 pracował jako szkoleniowiec w ABC Data Centrum Edukacyjne. Posiada certyfikaty firmy Microsoft, m.in.: MCDBA, MCSE, MCSD, MCITP i MCT.


Do początku stronyDo początku strony