Po raz kolejny firma Microsoft wypuszcza nową wersję SQL Servera. Tym razem 2016.
Oczywiście jak już nowa wersja, to oczywiście nowe opcje, możliwości i ulepszenia. Rzućmy okiem, co tym razem przynosi nowa wersja (póki co jeszcze nie można jej kupić, ale można pobrać do testów).
Samo gęste siedzi, jakże by inaczej, w silniku bazy danych, więc skupimy się na nim:
1. Poprawione indeksy CODB (CODB to dane uporządkowane w trybie "columnar" - jeszcze chyba nie ma dobrego, popularnego polskiego słówka na ten tryb składowania danych). Bez wchodzenia zbyt głęboko w szczegóły, od teraz indeksy te będą działać szybciej przy odczycie oraz będą bardziej elastyczne (i również szybsze) przy zapisie.
2. Liczne usprawnienia technologii Hekaton (nie wiem, czy MS jeszcze w ogóle chce używać tej nazwy), czyli po naszemu In-Memory OLTP. Lepsza obsługa wielojęzyczności, współbieżności, łatwiejsze analizowanie wydajności zapytań, lepsza integracja z PowerShell i wiele innych.
3. Statystyki wykonania zapytań w czasie rzeczywistym. Do tej pory mieliśmy do wyboru albo zobaczyć przewidywany plan wykonania zapytania (przed jego wykonaniem), albo wykonać zapytanie, odczekać do końca i dopiero wtedy zobaczyć jaki był faktyczny plan zapytania (wraz z wszelkimi informacjami statystycznymi typu ilości wierszy, czasy wykonania poszczególnych kroków itd). Od wersji 2016 będzie można sobie obserwować plan zapytania w czasie rzeczywistym, bez konieczności czekania na zakończenie zapytania.
4. Magazyn zapytań ("Query Store"), czyli możliwość odpytywania metadanych serwera o historyczne plany zapytań oraz ich łatwego porównywania i analizy. Dzięki temu - przynajmniej teoretycznie - będzie można łatwiej zrozumieć co i w jaki sposób wpływa na wydajność wykonania poszczególnych zapytań, kiedy i dlaczego plany zapytań się zmieniają i tak dalej. To już było wcześniej (za pomocą DMV), ale teraz ma był łatwiej i wygodniej.
5. Historyzacja danych: dotychczas to programista musiał zadbać o to, żeby poprawnie rejestrować informacje historyczne - na ogół tworzyło się osobną tabelę z sufiksem "_history" (lub podobnym) i tam logowało zmiany w tabeli głównej. Powodowało to brak standardyzacji oraz ciągłe wynajdywanie koła. Od wersji 2016 będzie można używać tzw. "Temporal Tables", nowego rodzaju tabel, które będą rejestrować historię zmian w tabeli głównej automatycznie.
6. Kopie zapasowe lokalnych danych do chmury Azure: bez wnikania w szczegóły, od teraz będzie można wykonać kopię niektórych danych lokalnych do instancji serwera Azure.
7. Natywna obsługa JSON: od teraz będzie można zwracać wyniki zapytania SQL w formacie JSON - a więc ogromne pole do popisu dla programistów tworzących wtyczki do innych systemów typu NoSQL (MongoDB, ToroDB, CouchDB i wiele innych).
8. Możliwość wykonania operacji TRUNCATE na pojedynczej partycji (a nie tylko na całej tabeli) - coś, co od dawna było dostępne u konkurencji, wreszcie trafia pod strzechy microsoftowe.
9. Maskowanie danych: możliwość ustawienia maski na dane wrażliwe. Maska zastąpi zwracane dane, jeżeli zapytanie będzie wykonane przez nieuprawnionego użytkownika. Można w ten sposób na przykład "wygwiazdkować" hasła, zastąpić kody pocztowe maską XX-XXX albo pokazać "Adama Kowalskiego" jako "A*** K*******" i tak dalej. Fajna sprawa, bo dotychczas trzeba było kombinować dookoła (widoki, funkcje etc).
Wyżej wymienione to tylko niektóre (te - moim zdaniem - najbardziej interesujące) usprawnienia w wersji 2016. Moje dwa ulubione to obsługa JSON oraz TRUNCATE pojedynczej partycji - jedno może ułatwić kooperację z innymi silnikami danych, a drugie - zoptymalizować proces ładowania warstwy Stage hurtowni. Trzeba bowiem pamiętać o tym, że dziś powoli odchodzi się od hurtowni danych opartych stricte na RDBMS na rzecz rozwiązań typu Hadoop czy Mongo - i to nie tylko ze względu na wydajność, ale głównie na koszty licencji.
Na koniec dzisiejszego wpisu małe spostrzeżenie: co prawda wersja 2016 już na horyzoncie, ale większość znanych mi firm do dziś używa wersji 2005 lub 2008 (czyli dwie lub trzy wersje "za Murzynami") i nie czują specjalnego parcia na migrację do najnowszych fontann i wodotrysków.
W końcu tabelka to tabelka.
C'nie?
Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]
Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.