BEST S.A. Co nowego w SQL Server 2012 dla programistów Cezary Ołtuszyk coltuszyk.wordpress.com
Plan spotkania I. Sekwencje II. III. IV. Nowe funkcje skalarne Wzbogacona klauzula OVER Indeksy typu COLUMNSTRORE V. Mechanizm FILETABLE VI. Podsumowanie
Sekwencje Sekwencje są obiektami pozwalającymi na generowanie wartości wg określonego licznika. Ich działanie jest bardzo podobne do właściwości IDENTITY znanej z wcześniejszych wersji SQL Server, jednakże w przeciwieństwie do niej nie są one bezpośrednio połączone z tabelą. Składnia sekwencji wygląda następująco: CREATE SEQUENCE [schema_name. ] sequence_name [ AS [ built_in_integer_type user-defined_integer_type ] ] [ START WITH <constant> ] [ INCREMENT BY <constant> ] [ { MINVALUE [ <constant> ] } { NO MINVALUE } ] [ { MAXVALUE [ <constant> ] } { NO MAXVALUE } ] [ CYCLE { NO CYCLE } ] [ { CACHE [ <constant> ] } { NO CACHE } ] [ ; ]
Sekwencje Istnieje wiele scenariuszy wykorzystania nowej funkcjonalności SQL Server-a. Jedną z nich może być np. nadawanie numerów identyfikacyjnych podczas ładowania danych do systemu Business Intelligence:
Nowe funkcje skalarne Kolejną nowością w SQL Server 2012 są nowe funkcje skalarne: Conversion functions Date and time functions Logical functions PARSE DATEFROMPARTS CHOOSE CONCAT TRY_CONVERT DATETIME2FROMPARTS IIF FORMAT String functions TRY_PARSE DATETIMEFROMPARTS DATETIMEOFFSETFRO MPARTS EOMONTH SMALLDATETIMEFROM PARTS TIMEFROMPARTS
Wzbogacona klauzula OVER Jednym z udoskonaleń SQL Server 2012 jest rozszerzenie możliwości jaką dają nam funkcje okienkowe. Wraz z ukazaniem się wersji CTP3 klauzula ORDER BY używana wewnątrz OVER nie jest już zarezerwowana tylko dla funkcji rankingowych, może ona być także użyta podczas agregacji. Dodatkowo używając ORDER BY w klauzuli OVER uzyskaliśmy możliwość limitowania ilości wierszy przetwarzanych przez funkcję okienkową. Aby tego dokonać używamy klauzul ROWS lub RANGE. Dzięki temu zabiegowi dokonywanie takich obliczeń jak np. sumy bieżące stało się o wiele prostsze
Wzbogacona klauzula OVER Kolejnym usprawnieniem klauzuli OVER w SQL Server 2012 jest wprowadzenie ośmiu funkcji analitycznych: CUME_DIST FIRST_VALUE LAG LAST_VALUE LEAD PERCENT_RANK PERCENTILE_COUNT PERCENTILE_DISC
Indeksy typu COLUMNSTORE W SQL Server 2012 został wprowadzony nowy typ indeksów - COLUMNSTORE. Budowa takiego indeksu różni się od dotychczasowych rozwiązań. Jest ona oparta na przechowywaniu danych kolumnami, a nie jak do tej pory wierszami. Ponadto nie ma ona struktury drzewiastej. Dzięki tej zmianie przechowywane dane mogą zostać poddane bardzo efektywnej kompresji. Głównym przeznaczeniem indeksów typu COLUMNSTORE są hurtownie danych.
Indeksy typu COLUNSTORE Niestety indeksy typu COLUMNSTORE mają też pewne wady, z czego najbardziej dotkliwymi mogą być: Dane w indeksie COLUMNSTORE nie mogą być modyfikowane!!! Indeks ten może być jedynie indeksem niegrupującym Indeks nie może mieć właściwości UNIQUE Nie może być zakładany na widokach indeksowanych Nie można używać kolumn typu SPARSE Nie można zmieniać definicji indeksu przy użyciu składni ALTER INDEX Nie wspiera mechanizmu SEEK
Mechanizm FILETABLE SQL Server 2012 wprowadza mechanizm o nazwie FILETABLE pozwalający na przechowywanie plików binarnych w specjalnie do tego celu przeznaczonych strukturach. Dostęp do zapisanych w ten sposób danych można uzyskać zarówno z poziomu T-SQL jak i WINDOWS:
Mechanizm FILETABLE Aby cieszyć się tą funkcjonalnością należy spełnić kilka wymagań: włączyć FILESTRAM dla instancji stworzyć FILESTREAM FILEGROUP dla wybranej bazy danych ustawić odpowiedni poziom dla nietransakcyjnego dostępu do danych ustawić nazwę lokalizacji dostępowej do danych FILETABLE z poziomu WINDOWS Stworzyć tabelę typu FILETABLE i umieszczać w niej dane
Podsumowanie W SQL Server 2012 do autonumerowania kolejnych wierszy w tabeli możemy SEKWENCJI W nowej wersji SQL-a dostaliśmy 14 nowych funkcji skalarnych, a najfajniejszą jest Stwierdzenie, że Klauzula OVER w SQL Server 2012 została ulepszona to mało powiedziane Indeksy typu COLUMNSTORE pozwalają efektywnie korzystać z danych hurtownianych Mechanizm FILETABLE pozwala na jednoczesne przechowywanie danych w bazie i dostęp do nich z poziomu WINDOWS