SELECT Explanation, Example FROM Pro.Knowledge
FacebookRSS

Środowisko MS SQL Server

MS SQL Server to System Zarządzania Bazą Danych (SZBD). Najnowsza wersja SQL Server 2017 jest już 14 generacją (zgodnie z oznaczeniami znaczących wersji MS) tego systemu.
Nie wszyscy wiedzą, że początki SQL Server sięgają 1987 roku. Zatem obecnie, mamy do czynienia z produktem którego historia liczy ponad 25 lat. Z punktu widzenia czasu życia produktu, szczególnie w świecie IT to przecież cała wieczność. Możemy więc śmiało stwierdzić, że SQL Server jest dojrzałym produktem.

W artykule tym, znajdziesz ogólne informacje na temat środowiska bazodanowego SQL Server. Kilka słów o historii, dostępnych narzędziach i komponentach.


Historia SQL Server

Zacznijmy jednak od narodzin. W 1987 roku, firma Microsoft wraz Sybase, a później również z Ashton Tate rozpoczęła współpracę biznesową nad produktem serwera bazy danych. Rezultatem była pierwsza wersja produktu – Ashton Tate/Microsoft SQL Server 1.0 wydana w 1989. Od tego czasu przez niemal dekadę, Sybase i Microsoft współpracowali, wydając kolejne wersje systemu. Jeśli miałeś do czynienia z produktami Sybase – znajdziesz wiele podobieństw do SQL Server, chociażby w dialekcie SQL. Być może dlatego, spotkać można teorie, że SQL Server to tak naprawdę produkt Sybase, kupiony w pewnym momencie przez Microsoft, co jednak nie jest prawdą. Więcej informacji na temat historii SQL Server, obalaniu mitów – znajdziesz na blogach Euan Garden oraz Kalen Delaney. Szczególnie polecam historię SQL Server w pigułce w formie foto-posta :)

Od 1989 wydano następujące wersje SQL Server :

Wersja Rok wydania Oficjalna nazwa Projekt
1.0 1989 SQL Server 1.0
1.1 1991 SQL Server 1.1
4.2 1992 SQL Server 4.2
4.21 1994 SQL Server 4.21 SQLNT
6.0 1995 SQL Server 6.0 SQL95
6.5 1996 SQL Server 6.5 Hydra
7.0 1998 SQL Server 7.0 Sphinx
8.0 2000 SQL Server 2000 Shiloh
9.0 2005 SQL Server 2005 Yukon
10.0 2008 SQL Server 2008 Katmai
10.5 2010 SQL Server 2008 R2 Kilimanjaro
11.0 2012 SQL Server 2012 Denali
12.0 2014 SQL Server 2014 Hekaton*
13.0 2016 SQL Server 2016
14.0 2017 SQL Server 2017


Edycje SQL Server

MS SQL Server oferowany jest w różnych edycjach. W zależności od potrzeb, konkretnych funkcjonalności, możemy wybrać z pośród kilku wydań. W praktyce, spotkać się można najczęściej z wersją darmową Express i komercyjnymi – Standard lub w dużych i średnich wdrożeniach – Enterprise (flagowy produkt, najwyższa edycja, ze wszystkimi możliwymi opcjami). Oprócz nich, są jeszcze pośrednie wersje, takie jak Web czy Businness Intelligence, ale są one stosunkowo rzadko spotykane.

Pełne porównanie poszczególnych edycji SQL Server, możliwości, dostępnych komponentów znajdziesz na oficjalnych stronach Microsoft.


Środowisko SQL Server, komponenty

Podstawą platformy SQL Server jest usługa serwera. Realizuje wszystkie zadania związane z obsługą i utrzymaniem baz danych. Jest ona fundamentem i każde wdrożenie, opiera się o trzon silnika bazy danych (Database Engine).

Środowisko SQL Server jest skalowalne i składać się może z wielu komponentów. W zależności od potrzeb i możliwości wybranej edycji, możemy w trakcie instalacji wybierać spośród dostępnych funkcjonalności. Instalacja kompletnego środowiska SQL Server na maszynie fizycznej lub wirtualnej to INSTANCJA. W jej ramach, możemy zarządzać wieloma bazami danych. W SQL Server 2012 jest to maksymalnie aż 32767 baz danych per instancja. Więcej informacji na temat możliwości instancji, ograniczeń znajdziesz tutaj.

Na danym fizycznym (lub wirtualnym) serwerze, możemy zainstalować wiele instancji SQL Server. Są one w pełni niezależne i tworzą odrębne środowiska SQL Server. W praktyce, rzadko spotyka się komercyjne wdrożenia więcej niż dwóch, trzech instancji na maszynie. Podyktowane jest to głównie przez aspekty wydajnościowe – zazwyczaj jest jedna.

Silnik bazy danych

To najważniejszy z komponentów, odpowiedzialny za przetwarzanie zapytań, zarządza składowaniem, ochronie danych. Obsługuje niezbędne mechanizmy bezpieczeństwa, autoryzacji czy autentykacji. Silnik bazy danych jest uruchomiony na serwerze jako usługa, inaczej mówiąc jest to po prostu aplikacja działająca w tle środowiska Windows, obsługująca wszelkie procesy związane z bazami danych.

Usługi analityczne

Jest to tak naprawdę w sumie kilka komponentów z rodziny analitycznej. Analityka (OLAP) , PowerPivot, Data Minning, ogólnie wszystko co związane z Business Intelligence czyli inaczej usługami drążenia danych. Są to w ogólności procesy, mechanizmy, mające na celu przekształcenie danych w informacje a informacje w wiedze. Dzięki nim, możemy szukać zależności między danymi i odkrywać związki.

Usługi analityczne dostarczają mechanizmów raportujących, wydobywających wiedzę, analizując dane pochodzącą z baz transakcyjnych (OLTP). Na jej podstawie możemy wyciągać wnioski, przewidywać pewne zachowania, które mogą wpływać np. wzrost konkurencyjności przedsiębiorstwa.

Usługi raportujące (Reporting Services)

Komponent stworzony z myślą o raportowaniu z baz danych SQL Server. Nie musimy tworzyć własnych aplikacji raportujących. SQL Server oferuje gotowe rozwiązanie w oparciu o środowisko .NET.

Usługi integracji danych (Integration Services)

SSIS – SQL Server Integration Services – jest to dedykowane środowisko dla procesów ETL (Extract Transform and Load). Integracji i przetwarzania danych z różnych źródeł. Dla przykładu firma analityczna z branży farmaceutycznej, otrzymuje co miesiąc dane o sprzedaży leków od różnych producentów w formie plików XML. Są one umieszczane na serwerze plików i przetwarzane przez automatyczne procesy SSIS zasilając bazę danych z plików dostarczanych przez dostawców.


Najważniejsze narzędzia pakietu MS SQL Server

W zależności od edycji, mamy możliwość wyboru w trakcie instalacji spośród dostępnych funkcjonalności i narzędzi. Poniżej ogólny opis najważniejszych z nich.

SQL Server Management Studio (SSMS)

Graficzny interfejs użytkownika (GUI), przeznaczony do administrowania, tworzenia baz, obiektów bazodanowychoraz do pisania i testowania skryptów, zapytań. Jest wygodnym narzędziem dla deweloperów – daje np. możliwość podglądu planów wykonania. Posiada szereg wygodnych funkcjonalności np. mechanizm IntelliSens znany z VS (podpowiadanie nazw obiektów, słów kluczowych). Za pomocą SSMS mamy dostęp do wszystkich obiektów bazodanowych. Możemy tworzyć kompletne rozwiązania, administrować serwerem. Tworzyć projekty, generować skrypty etc. Istnieje na rynku szereg alternatywnych rozwiązań. Spośród nich, godnymi uwagi są z pewnością produkty firmy RedGate oraz TOAD.

SQL Server Configuration Manager

Aplikacja do konfiguracji usług, protokołów komunikacyjnych, aliasów. Podstawowe narzędzie związane z konfiguracją i dostępem (protokoły) usług serwera.

SQL Server Profiler

Aplikacja do śledzenia przetwarzanych poleceń w silniku bazodanowym. Niezastąpione przy szukaniu wąskich gardeł, zbierania danych do optymalizacji systemu. Możemy dzięki niemu przechwycić praktycznie wszystkie procesy, wykonywane przez SQL Server.

Zapytania, procedury składowane, wywoływania triggerów, logowania, transakcje i inne procedowane zdarzenia. SQL Server Profiler umożliwia zapis śladu i jego późniejszą analizę np. w Database Engine Tunning Advisor celem optymalizacji struktur (dodanie indeksów, statystyk etc.)

Database Engine Tunning Advisor (DETA)

Aplikacja do analizy i optymalizacji zapytań – wspiera procesy tworzenie indeksów, widoków indeksowanych, statystyk i partycji. Jako źródło przyjmuje np. zbiór informacji śladu – trace – przechwycony przez Profiler lub konkretny skrypt zapytania.

Business Intelligence Development Studio

IDE (Integrated Development Environment) dedykowane środowisko oparte o .NET framework, do tworzenia raportów w ramach Reporting Services, paczek SSIS (Integration services) oraz usług analitycznych (Analysis Services).

SQLCMD

Prosta aplikacja, za pomocą której mamy możliwość połączenia się z bazą danych z poziomu linii poleceń. Idealnie nadaje się do wszelkich czynności administracyjnych, skryptów. Szczególnie przydatna do automatyzacji zadań w SQL Server Express, w której nie mamy dostępnej usługi SQL Server Agent.


* Projekt Hekaton, dotyczy funkcjonalności przetwarzania transakcyjnego in-memory

Język SQL – historia, standardy

Historia

Rozwój relacyjnych baz danych, który miał miejsce w latach 70-tych ubiegłego wieku uwarunkował konieczność opracowania języka do manipulacji, wyciągania i obsługi danych w bazach.

Pierwszym oficjalnym językiem relacyjnych baz danych, był SEQUEL (Structured English Query Language), opracowany przez pracowników firmy IBM (Raymond F.Boyce oraz Donald Chamberline). Zaimplementowany w 1973 roku w SYSTEM R – pierwszym silniku bazodanowym opartym o model relacyjny (jednak pierwszy komercyjny system RDBSM to wdrożenie firmy ORACLE w 1979 r.).

Jak sama nazwa wskazuje, SEQUEL to język w domyśle przyjazny dla użytkownika, służący odpytywaniu baz. Jednym z założeń była łatwość tworzenia zapytań, operacji na zbiorach za pomocą słów kluczowych w języku angielskim. Język miał być intuicyjny i prostoty. Te cechy to także założenia samego modelu relacyjnego i chyba właśnie dlatego, systemy baz danych oparte o model relacyjny podbiły świat i są do dziś dominującymi środowiskami bazodanowymi.

Nazwa ewoluowała – SEQUEL, okazała się być nazwą zastrzeżoną przez brytyjską firmę przemysłu lotniczego. Stąd została skrócona do znanej obecnie formy czyli SQL (Structured Query Language).

Najważniejszymi systemami RDBMS (Relational DataBase Management System), w których podstawowym językiem jest SQL, to oczywiście : MS SQL Server, Oracle, DB2, MySQL, PostgreSQL, Sybase.


Standardy, dialekty

Konkurencyjność rynku spowodowała konieczność ustandaryzowania języka SQL i na szczęście stało się to już w roku 1986, kiedy został opracowany przez ANSI pierwszy standard określany jako SQL:86. Podkreślam, że na szczęście tak szybko, bo choć istnieją istotne różnice np. w nazwach implementowanych funkcji, to ogólne zasady dla relacyjnych baz danych, różnych producentów, są spójne. Ma to znaczenie szczególnie podczas integracji platform i dla nas, pracujących w różnych środowiskach.
Powstały, więc dialekty językowe. Transact-SQL (T-SQL) – historycznie wprowadzony przez Sybase, rozwijany do dziś przez Microsoft w SQL Server – na jego przykładzie, przeprowadzony jest cały ten kurs. Inne dialekty, mające duże znaczenie na rynku to oczywiście PL/SQL (firmy ORACLE) oraz SQL/PSM (najpopularniejszy silnik relacyjny w serwisach WWW – MySQL).

Pomimo różnic w dialektach, nazwach funkcji, typach danych – istnieje szeroki wspólny mianownik – relacyjny model oparty o teorię zbiorów. Dlatego, jeśli poznasz T-SQL, odnajdziesz się szybko np. w bazie MySQL czy Oracle.
Standardy ANSI są regularnie aktualizowane. Od 1986 roku zostało opublikowanych szereg wersji (aktualnie obowiązująca to ANSI SQL:2011/2011), wprowadzających porządek w nowych funkcjonalnościach. Np. w SQL:2003 zostały wprowadzone standardy związane z obsługą XML.

Kategorie SQL

Wybitni amerykańscy naukowcy, definiujący standardy i kochający wprowadzanie coraz to wymyślniejszych akronimów i skrótów (FBI, CIA, DEA, CEO, CFO, CIO etc.), poszatkowali język SQL na szereg grup, podzbiorów komend. W zależności od zastosowań są to :

  • DDL – Data Definition Language – czyli komendy dot. Tworzenia, modyfikacji obiektów w bazie – np CREATE TABLE, ALTER VIEW, DROP.
  • DML – Data Modification Language – czyli po naszemu UPDATE, INSERT, DELETE
  • DCL – Data Control Language – kontrola uprawnień (GRANT, DENY, REVOKE)
  • TCL – Transaction Control Language – obsługa transakcji np. BEGIN TRANSACTION, COMMIT, ROLLBACK.
  • I w końcu DQL – Data Querying Language – czyli polecenie SELECT ! to właśnie o tym jest ten kurs.
    Dotyczy on tylko podzbioru języka SQL – związanego z pisaniem zapytań (kwerend).