SBS jako magazyn danych

Jednym ze składników SBS 2003 w wersji Premium jest SQL Server 2000. Baza danych to naturalny ''pojemnik'' na wszelkie dane przedsiębiorstwa, a w przypadku SQL Servera wcale nie potrzeba bardzo dużej wiedzy, żeby ją wykorzystać.

Jednym ze składników SBS 2003 w wersji Premium jest SQL Server 2000. Baza danych to naturalny 'pojemnik' na wszelkie dane przedsiębiorstwa, a w przypadku SQL Servera wcale nie potrzeba bardzo dużej wiedzy, żeby ją wykorzystać.

Właściciele małych firm mogą się zastanawiać, czy w ogóle zdołają wykorzystać taką bazę. SQL Server to jednak bardzo uniwersalny system baz danych, a przy tym od wielu lat uważany za jeden z prostszych w użyciu. W wielu przypadkach jest niemal "samozarządzający".

Po co mi SQL Server?

Żeby odpowiedzieć na to pytanie, trzeba dokładnie zbadać różnice pomiędzy bazą plikową a silnikiem SQL. W przypadku bazy plikowej to komputer kliencki otwiera plik i wykonuje na nim operacje. Jeśli na przykład baza MDB (Access) jest udostępniona wielu użytkownikom, to w istocie prędkość działania całego rozwiązania zależy od przepustowości sieci oraz najwolniejszego komputera, który używa tej bazy (najwolniejszego komputera klienckiego). Serwer jest tylko serwerem plików i jego moc obliczeniowa jest używana w minimalnym stopniu. W momencie wykonania operacji klient otwiera plik (np. na udziale sieciowym) i samodzielnie przeprowadza modyfikację.

W przypadku prawdziwego serwera SQL przebiega to zupełnie inaczej. Serwer oczekuje na polecenia przesyłane ze stacji klienckich. Po otrzymaniu polecenia wykonuje je, a do klienta przesyła wynik. W ten sposób to serwer zajmuje się obsługą plików bazy danych i odpowiednią optymalizacją polecenia, np. z wykorzystaniem indeksów. Cała operacja wykonywana jest na serwerze, a klient otrzymuje tylko wynikowy zbiór rekordów i dlatego może się zająć przetwarzaniem otrzymanych danych, w pełni wykorzystując swoje zasoby, np. pamięć, procesor itp.

SQL Server jako platforma

Rys. 1. SQL Server, nieodłączny składnik systemu IT nowoczesnej firmy.

Rys. 1. SQL Server, nieodłączny składnik systemu IT nowoczesnej firmy.

SQL Server może służyć jako gotowa platforma wielu różnych zastosowań. Po pierwsze, coraz więcej programów wykorzystuje motor MSDE - bezpłatną edycję SQL Server o nieco ograniczonych możliwościach. Ponieważ MSDE jest całkowicie zgodne z "dużą" bazą danych, aplikacje korzystające z MSDE mogą być łatwo przenoszone (praktycznie dotyczy to tylko plików LDF i MDF) na pełny silnik, pozbawiony ograniczeń wersji bezpłatnej.

Dzięki temu, że SQL Server bez problemu współpracuje z takimi programami, jak Access czy Excel, można użyć go jako platformy do samodzielnego tworzenia prostych aplikacji obsługujących działalność przedsiębiorstwa. W Internecie jest bardzo dużo informacji związanych z praktycznym wykorzystaniem tej bazy.

Często SBS wraz z SQL jest najtańszym sposobem nabycia systemu SQL Server nawet po to, żeby uruchomić dedykowany system na tej platformie.

Również najnowsza wersja programu Płatnik może do przechowywania danych wykorzystywać MSDE. Można taką bazę przenieść na SQL Server (który działa na serwerze SBS) lub po prostu zainstalować go tak, żeby wykorzystywał pracujący już serwer. Pozwoli to na przykład. zarządzać bazą przy użyciu standardowych narzędzi administracyjnych, łatwo tworzyć raporty czy kopie zapasowe.

Na jednym serwerze może działać równolegle wiele instancji bazy SQL Server, co nawet w przypadku SBS może być czasami przydatne. W standardowej instalacji SBS 2003 tworzona jest np. instancja odpowiadająca za monitorowanie serwera. Inny wykorzystywany jest do działania SharePoint Services. Można też doinstalować kolejną, główną instancję, na której będzie działać oprogramowanie obsługujące firmę albo będą tworzone własne bazy.

Instancje są przy tym niemal separowane. Można je niezależnie konfigurować, ustalać parametry działania, wstrzymywać albo uruchamiać ponownie itp.

Możliwości SQL Servera

Podstawą działania baz relacyjnych jest zbiór danych. Wszystkie operacje wykonywane przez silnik bazodanowy są w rzeczywistości przeprowadzane na zbiorach. Jeżeli trzeba zaktualizować dane w bazie, to programista musi określić (przy użyciu warunków) zbiór danych, których ta aktualizacja dotyczy. Podobnie przebiega wybór danych: określane są zasady "przecinania" zbiorów, które wpływają na ostateczny wynik.

Baza relacyjna i T-SQL

SQL Server ma bardzo bogate możliwości programowania, tj. tworzenia tzw. procedur (czy funkcji) przechowywanych działających po stronie serwera. Tego typu programy są pisane w języku T-SQL (który w istocie jest nadzbiorem standardowego SQL i zawiera wiele udogodnień dostosowanych do bazy Microsoftu). Można definiować zmienne odpowiadające zbiorom danych, iteracyjnie przechodzić po wynikach itp. Warto dodać, że w SQL 2000 można zdefiniować funkcję, która zwróci tabelę. W ten sposób dane do tabeli można wygenerować w dowolny sposób, a potem wynik działania takiej funkcji potraktować jak zwykłą tabelę SQL. Jest to bardzo pożyteczne, bo skraca i upraszcza kod prawie każdego programu.

Równocześnie SQL Server sprawdzi, czy zgromadzone dane są spójne, tzn. mają taką strukturę, jaką założył architekt bazy. W wypadku tabel można definiować relacje, które określają, że np. wartość danego pola musi wskazywać wiersz w innej tabeli (tzw. klucz obcy). Można też określać warunki, które muszą spełniać dane wstawiane do bazy (np. data przyjęcia towaru musi być wcześniejsza niż data wydania). Można definiować tabele, indeksy oraz relacje pomiędzy tabelami, a także określać, jakie warunki muszą spełniać poszczególne wartości.

Można definiować także tzw. triggery, czyli specjalne procedury wykonywane po zmianie danych w bazie, a w SQL 2000 dodatkowo zdefiniować tzw. triggery instead of, które pozwalają przechwycić standardowe operacje dopisywania, aktualizacji czy usuwania danych. To umożliwia programiście zdefiniowanie własnych zasad modyfikacji tabel, np. rejestrowanie dodatkowych informacji w momencie zmiany wartości czy modyfikowanie tego, co będzie wstawiane do bazy.

A co najważniejsze - operacje te są wykonywane automatycznie po stronie bazy i jeśli warunki zostaną dobrze określone, dane nie mogą stać się niespójne. Bez względu na to, czy zostaną wprowadzone do tabel ręcznie (np. przy użyciu widoku siatki w Accessie) czy zaimportowane z jakiegoś pliku, zawsze przed dodaniem lub modyfikacją będą sprawdzone.

Z pojęciem baz danych wiąże się także pojęcie transakcji. Transakcja ma cztery podstawowe cechy, tzw. ACID: jest atomowa (jednostkowa), spójna, izolowana i trwała. Innymi słowy, operacja wykonywana na SQL Server albo zakończy się sukcesem i baza będzie spójna (wszystkie dane są prawidłowe) albo w całości zostanie wycofana w celu przywrócenia spójnego stanu sprzed modyfikacji. Dzięki temu, jeśli projekt bazy był prawidłowy, aplikacja pracuje na prawidłowych danych.

Tworząc rozwiązanie do SQL Servera, programista może zamknąć ciąg operacji w transakcji i wtedy albo cały dany ciąg czynności przebiegnie prawidłowo albo w bazie nic się nie zmieni. W SQL Serverze nie ma mowy o reindeksowaniu bazy po zaniku zasilania, co jest zmorą wielu aplikacji opartych na bazach plików.

W przypadku awarii serwer po restarcie analizuje plik LOG, automatycznie przywraca spójny stan bazy i na przykład wycofuje nie do końca zatwierdzone transakcje. W przypadku baz plików właśnie awarie są największym problemem, bo nie wiadomo, jak przywrócić spójny stan plików przechowujących dane.

Wyszukiwanie pełnotekstowe

Bardzo ciekawym mechanizmem w SQL Serverze jest tzw. wyszukiwanie pełnotekstowe (full text search). Pozwala ono - w uproszczeniu - znaleźć rekordy pasujące do określonego ciągu znaków (w pewnym sensie podobnie działają wyszukiwarki internetowe). Dzięki FTS nie trzeba stosować wzorców z symbolami wieloznacznymi (operator LIKE itp.), które dodatkowo spowalniałyby samo wyszukiwanie (wymagają więcej obliczeń). Indeks pełnotekstowy to struktura, która znajduje się obok bazy i musi być okresowo aktualizowana oraz synchronizowana z bazą. Pojedynczy indeks może obejmować wiele pól w tabelach. Właśnie dlatego operacja typu: znajdź wszystkie elementy dotyczące "Adam Mickiewicz Pan Tadeusz Jankiel" jest bardzo prosta do wykonania i sprowadza się niemal do jednego wywołania funkcji T-SQL. Dzięki odpowiedniemu zdefiniowaniu indeksów pełnotekstowych wyszukiwanie będzie dotyczyć wszystkich pól, które mogą zawierać potrzebne informacje. Możemy też nakładać warunki, które określą, że bardziej istotne wyrazy powinny być położone blisko siebie, albo podawać pewne frazy, które mogą być używane wymiennie. W szczególnych przypadkach możemy nawet wyszukiwać w następujący sposób: znajdź wiersze zawierające w którymkolwiek polu tekstowym określony tekst.


Zobacz również