Recenzje
Inteligencja finansowa. Co kryją liczby. Przewodnik menedżera
Alchemia sprzedaży, czyli jak skutecznie sprzedawać produkty, usługi, pomysły i wizerunek samego siebie
100 sposobów na SQL
Po pierwsze, rozwiązując sto typowych problemów bazodanowych autorzy pokazują możliwości języka SQL. Rozpoczynając od najprostszych sposobów zwracają uwagę na poprawne używanie tego języka - na przykład sposób 3. „Warunkowe polecenia INSERT” uczy nas jednoczesnego przetwarzania zbiorów, a nie pojedynczych danych.
Drugą charakterystyczną cechą książki jest przedstawienie uniwersalnych, działających na pięciu różnych serwerach baz danych (MySQL, PostgreSQL, SQL Server, Oracle i Access) technik. Porównując kolejne wersje rozwiązań tych samych problemów przekonujemy się, że różnice pomiędzy dialektami języka SQL są mniejsze niż mogło to się nam wydawać. Dopiero w połowie książki autorzy przyznają, że to zaskakujące podobieństwo wynika z zastosowania przez nich przyjętego ponad 15 lat temu standardu ANSI SQL2. Gdyby do rozwiązania niektórych problemów użyć obowiązującego dziś standardu SQL3, byłyby one czytelniejsze, prostsze i wydajniejsze. Niestety, byłyby też bardziej zróżnicowane. Na przykład, przedstawiony sposób wybierania dowolnych n kolejnych wierszy wyniku dla serwera SQL 2005 wykorzystuje podzapytanie z operatorem NOT IN, a nie funkcje rankingu.
W rezultacie w książce znajdziemy prawidłowe i uniwersalne, ale nie zawsze najlepsze sposoby:- Wyznaczania trendów,
- Graficznego reprezentowania wyników zapytań,
- Wyszukiwania anomalii poprzez grupowanie danych,
- Generowania ciągłych sekwencji liczb,
- Wykorzystania tabel i widoków do przechowywania parametrów(technika szczególnie przydatna w programie Access),
- Zarządzania dostępem użytkowników do poszczególnych wierszy,
- Zastąpienia blokad wersjonowaniem danych, czyli wdrożenia optymistycznego modelu współbieżności,
- Rekursywnej analizy danych (może ktoś z Was przedstawi wykorzystującą CTE wersję sposobu 80. „Sześć stopni od Kevina Bacona”?).
Podstawą niektórych z opisanych w książce sposobów jest sprytne zastosowanie matematyki (np. żeby znaleźć większą z dwóch, przechowywanych w osobnych kolumnach wartości wystarczy policzyć (x+y+ABS(x-y))/2), lub reguł obowiązujących w księgowości, ale większość z nich bazuje na umiejętnym wykorzystaniu wyjątkowych cech języka SQL.
PodsumowanieJeżeli wolisz uczyć się na przykładach niż studiować dokumentacje, powinieneś przeczytać tę książkę. Gdybyś jednak miał ograniczyć się do skopiowania gotowych rozwiązań, zacznij od kursu języka SQL.
Książka będzie też bardzo przydatna osobom pracującym na co dzień z jednym z opisywanych w niej serwerów baz danych, które chcą (albo muszą) poznać inne serwery. Dzięki niej wykorzystają zdobyte doświadczenie w pracy z innym serwerem.
Władca czasu, czyli skuteczne zarządzanie własnym życiem
Windows Server 2003. Bezpieczeństwo sieci
Mottem książki jest Znajomość podstaw fachu jest ważniejsza niż umiejętność używania najnowszych narzędzi. Konsekwentne przestrzeganie tej reguły pozwoliło Robertowi w jednej książce opisać bardzo szeroki zakres materiału: od podstaw języka T-SQL po model SMO. I chociaż nie jest to kompletny opis serwera SQL 2005, to książka (z małymi wyjątkami) nie jest chaotyczna.
Tytuł sugeruje, że jest ona przeznaczona dla programistów mających pewne doświadczenie w pracy z serwerami baz danych — rzeczywiście osoby które nigdy nie pisały aplikacji bazodanowych po jej przeczytaniu będą miały niepełny obraz możliwości serwera SQL, ale nawet one będą potrafiły samodzielnie go oprogramować.
Książkę podzieliłem na trzy części:- Rozdziały od 1 do 7 to intensywny kurs języka T-SQL uzupełniony o opis narzędzi klienckich serwera SQL 2005 i błyskawiczny kurs modelu relacyjnego.
- Rozdziały od 8 do 17 poświecone są programowaniu serwera SQL 2005.
- Rozdziały od 18 do 25 przedstawiają, w bardzo dużym skrócie, dodatkowe funkcje serwera SQL 2005 (np. replikację ), dodatkowe usługi (w tym usługę raportowania) i zagadnienia pośrednio związane z programowaniem, takie jak zabezpieczenia oraz optymalizacja zapytań.
Szczegółowe przedstawienie języka T-SQL to materiał na osobną książkę. Na szczęście Robert od początku opisuje tylko wybrane, według niego niezbędne do opanowania języka T-SQL, kwestie pomijając większość standardowych, szeroko omamianych w materiałach firmy Microsoft zagadnień.
Już po lekturze pierwszego rozdziału staje się oczywiste, że książka powstała na podstawie doświadczeń autora. Jeżeli nie zgadzają się one z oficjalnymi wytycznymi firmy Microsoft, Robert wyraźnie to zaznacza. Na przykład, o wspomnianych przy okazji wyjaśniania struktury obiektów bazodanowych schematach (jednej z nagłośnionych nowości w serwerze SQL 2005) dowiadujemy się, że ich stosowanie daje więcej złego niż dobrego i autor odradza ich używania. Jednoznaczna jest też opinia autora na temat (wprowadzonej w wersji 7.0) możliwości umieszczania spacji w nazwach obiektów bazodanowych: Nie używaj ich. Stosowanie spacji w nazwach jest wyjątkowo złą praktyką i prowadzi do ogromnej ilości błędów… Przeklinam osobę która zdecydowała o dodaniu tej funkcji. Dużą zaletą książki jest przedstawianie przez autora omawianych zagadnień na przykładach i częste zamieszczanie uwag ze wskazówkami ułatwiającymi samodzielnie znalezienie dodatkowych informacji w dokumentacji BOL (ang. Book online).
To, że pierwsza część książki jest błyskawicznym kursem języka T-SQL nie znaczy, że nie można w niej znaleźć interesujących, szczegółowych informacji: dowiemy się z niej na przykład w jakim przypadku niemożliwe jest zdefiniowanie kaskadowych akcji dla ograniczenia klucza obcego oraz kiedy warto wpisać dane do tabeli przed założeniem dla niej ograniczeń. Z ostatniego rozdziału tej części książki pochodzi poniższa, najkrótsza z możliwych definicja 3 postaci normalnej: Klucz, cały klucz i tylko klucz.
Część II czyli trzy tomy serii Inside SQL Server w jednymDrugą część książki rozpoczyna rozdział poświecony strukturom danych, w szczególności budowie i działaniu indeksów. Z indeksami i strategią ich stosowania jest związanych wiele mitów i zabawnych nieporozumień, ale opis Roberta jest bardzo rzeczowy, bo odpowiada na konkretne pytania, takie jak: dlaczego podczas podziału strony 50% (a nie np. 25%) danych jest przenoszony do nowej strony, dlaczego operator EXISTS jest użyteczny nawet przy braku indeksów, oraz jakie konsekwencje wynikają z zablokowania indeksu zgrupowanego (ang. Clustered).
Ze znajdującego się w tej części rozdziału poświęconego procedurom składowanym i funkcjom użytkownika pochodzi poniższy cytat dobrze oddający specyficzny styl Roberta: Udostępnienie użytkownikom bezpośredniego dostępu do danych poprzez takie programy jak Access czy Excel jest jedną z najpoważniejszych i jednocześnie najgłupszych decyzji. Nadając użytkownikom dodatkowe uprawnienia kopiemy sobie własny grób tracąc kontrolę nad wykonywanymi przez nich długotrwałymi i kosztownymi zapytaniami.
W tej części książki znalazły się też rozdziały poświęcone widokom, skryptom, transakcjom i blokadom, wyzwalaczom, integracji ze środowiskiem .NET, obsłudze dokumentów XML i kursorom. O tym, że zostały one opisane przez doświadczonego programistę świadczy m.in. uwaga na temat automatycznej konwersji kursorów typu Keyset (czyli takich które zawierają jedynie klucze podstawowe tabeli) na kursory statyczne (czyli zawierające kopię całej tabeli) — serwer SQL przeprowadza taką konwersję, w dodatku nie informując o niej, jeżeli tabela bazowa nie zawiera unikatowego indeksu.
Część III czyli przegląd dodatkowych funkcji serwera SQL 2005W ostatniej części książki Rober próbuje na mniej więcej 250 stronach przedstawić najróżniejsze, nie powiązane ze sobą zagadnienia, w tym usługi raportowania i wyszukiwania pełnotekstowego, techniki importowania, przekształcania i eksportowania danych (zarówno za pomocą programu BCP jak i pakietów SSIS), typowe zadania administracyjne i ich automatyzację za pomocą SMO, oraz techniki zabezpieczania i optymalizacji baz danych. I chociaż doświadczeni administratorzy czy specjaliści BI raczej nie znajdą tu niczego nowego, to osoby które wcześniej nie korzystały z tych funkcji serwera SQL przekonają się, że warto je poznać i używać.
W tej części, pomimo jej wyrywkowości też znajdziemy ciekawe uwagi Roberta, na przykład uwagę na temat uprawnień na poziomie kolumn — serwer SQL pozwala nadawać uprawnienia do odczytu i aktualizacji poszczególnych kolumn — i dlaczego firma Microsoft żałuje ich wprowadzenia. Podsumowanie
Jeżeli jesteś programistą baz danych i pracujesz z serwerem SQL 2005, powinieneś przeczytać tę książkę — pozwoli Ci ona efektywniej oprogramować ten serwer i przede wszystkim zapoznać się z najważniejszymi problemami, które mogą się pojawić w trakcie pracy z tym serwerem. Nie traktuj jej jednak jako jedynego źródła wiedzy — przedstawia ona punkt widzenia Roberta, a żeby móc się do niego odnieść (a nie bezkrytycznie go przyjąć) powinieneś poznać opinię innych osób, w tym specjalistów firmy Microsoft.
Książka powinna też zainteresować tych administratorów serwera SQL 2005 którzy mają zacięcie programistyczne — dzięki temu, że przedstawia ona wybrane zagadnienia i ilustruje je dobrze dobranymi przykładami, mają oni okazję poznać zasady programowania baz danych bez wertowania kilku szczegółowych, często nużących, pozycji.