Praktyki mistrza SQL. Programowanie zaawansowane. Recenzja książki.

Praktyki mistrza SQL. Programowanie zaawansowane.Niniejszy wpis to kolejna recenzja książki przygotowana przez Bartka Medonia na moim blogu. Tym razem do oceny trafiła nowość wydana w połowie października tego roku – „Praktyki mistrza SQL. Programowanie zaawansowane” autorstwa Joe Celko. Jest on uznanym ekspertem w dziedzinie baz danych. Z jego konsultacji korzystały m.in. służby medyczne, NASA, siły zbrojne USA. Autor wysoko cenionych książek dotyczących SQL. Napisał również ponad 1200 artykułów w prasie informatycznej i akademickiej. Większość tych tekstów dotyczyła danych i baz.

A zatem zapraszam.

Recenzja

W ostatnim czasie z przyjemnością czytałem i przerabiałem materiał zawarty w książce „Praktyki Mistrza SQL. Programowanie zaawansowane” autorstwa Joe Celko, który jest cenionym specjalistą w zakresie baz danych. Jeżeli z jakiegoś powodu nie masz chęci na czytanie całej recenzji to już teraz Ci odpowiem – tak, warto kupić tę książkę, ale jak sam tytuł sugeruje nie jest to pozycja dla kogoś kompletnie początkującego czy też kogoś kto nie bardzo umiałby napisać „coś więcej” w czystym SQLu, bo np. głównie operuje rozwiązaniami typu ORM.
A jeżeli masz nieco więcej czasu – pozwól, że tym razem w formie listy, wypunktowań przedstawię Ci kilka spostrzeżeń, być może taka forma recenzji będzie dla Ciebie bardziej czytelna:

  • Autor wiele razy wspomina o tym, że nie należy traktować tabeli jako jednego pliku, rekordu jako wiersz itd., bo np. fizycznie w 1 pliku mogą znajdować się dane z różnych tabel. Oczywiście dla logiczne zrozumienia tak to na ogół się postrzega, ale warto wiedzieć jak to wygląda głębiej, od fizycznej strony. Mnie osobiście takie wchodzenie w szczegóły bardzo się podoba, a ich poznanie pozwala na lepsze zrozumienie „jak to wszystko działa”, co teoretycznie dzieje się podczas danej operacji jaką silnik bazy danych wykonuje
  • Dowiadujemy się o mechanizmach, które podejrzewam niejeden programista nie zna (być może zwyczajnie nie musiał ich dotychczas używać?), bo o ile raczej każdy powinien znać ograniczenia CHECK, to już nie każdy wie o istnieniu asercji i różnicy między nimi. Innym przykładem są zakleszczenia, które też raczej wielu zna, ale czy każdy wie, że dzielą się pasywne i aktywne i czym się różnią? A słyszałeś o ROLLUP() oraz GROUPING SET()?
  • W bardzo przystępny, może nawet łopatologiczny, ale dzięki temu zrozumiały sposób omówione zostały kwestie działania transakcji, poziomy ich izolacji, izolacja snapshotów.
  • Kolejnym nazwijmy to podstawowym elementem pracy z relacyjnymi bazami danych, którym Pan Joe poświęcił sporo uwagi są widoki.
  • W książce często spotykamy się z informacją, że zależnie od silnika bazy danych różne operacje mogą działać inaczej, nawet te dla których wydawałoby się być oczywiste, że działają w pewien określony sposób wszędzie, np. przycinanie czy zaokrąglanie liczb. Takie informacje są bardzo cenne według mnie ponieważ budują w głowie programisty pewną niepewność, która każe mu pamiętać o takich aspektach chociażby w przypadku konieczności przejścia z danego systemu zarządzania bazą danych na inny.
  • Czytając książkę trafiłem na przykład związany z porównywaniem znaków, a chodziło o to, że ‚Smith’ może być równy ‚Smith ‚. Dlaczego? Zostawiam to Tobie jako zagadkę, ale w tej kwestii trzeba dopowiedzieć dwie rzeczy. Po pierwsze powyższe stwierdzenie będzie prawdziwe dla MySQL, ale już nie dla PostgreSQL, znowu kwestia różnych SZBD. Po drugie kiedy o tym czytałem… byłem pewien, że już dokładnie o tym samym czytałem więc sprawdziłem swoje notatki z nauki (polecam sobie tak robić, ja to trzymam na Google Drive) i dokładnie ten sam przykład miałem już zapisany z książki „SQL. Zaawansowane techniki programowania” autorstwa… Joe Celko. Książka ma już sporo lat, ale jak widać autor co nieco przeniósł do omawianej, aczkolwiek nie jest to żaden zarzut, po prostu pewne rzeczy są nadal aktualne, ważne
  • Poznajemy różnego rodzaju konfiguracje, polecenia, które będą przydatne w bardziej wyrafinowanych sytuacjach, np. własne kolejności znaków do sortowań/porównań czy możliwość pomijania danej tabeli w pracy optymalizatora
  • Nie mogło oczywiście zabraknąć tego co tygryski lubią najbardziej czyli… wartości NULL, o której niemal wszędzie jest bardzo dużo, ale trudno się dziwić skoro faktycznie jest to coś czego należy unikać, a jeśli już stosujemy to trzeba bardzo uważać.
  • Bardzo fajna jest też część poświęcona algorytmom rozwiązującym problemy z dopasowaniami fonetycznymi.
  • Inną ciekawostką jest miejsce poświęcone czasowi, gdzie nie tylko poznajemy poszczególne typy danych i problemy jakie niosą, ale również nazwijmy to… historię korzystania z czasu, jak to wyglądało kiedyś, jak „majstrowano” przy kalendarzach itd. Taka mała lekcja historii i geografii. A wiedzieliście, że istnieje sekunda przestępna?
  • W końcowych obszarach książki znajdziemy kolejną historyczną ciekawostkę bardzo fajnie opisaną, a chodzi o problemy z rokiem 2000. Pamiętacie?
  • Jak widać nie jest to książka, w której znajdziemy listę problemów oraz ich rozwiązania w formie zapytań. Owszem one są, ale autor bardzo dużo czasu poświęca na to, żeby czytelnik zrozumiał:
    • zasadę, sposoby funkcjonowania bazy danych,
    • poszczególnych typów danych wraz z ich plusami, minusami, pułapkami (tu kłaniają się wartości liczbowe),
    • wskazówkami jakich typów używać np. dla adresów IP oraz jakie korzyści i straty przynosi dany sposób,
    • jak działa bardziej szczegółowo instrukcja UPDATE czy DELETE,
    • w jakiej kolejności realizowane są poszczególne elementy klauzuli SELECT,
    • jak działają poszczególne rodzaje złączeń,
    • i wiele, wiele innych!

To wszystko pozwala programiście na zrozumienie co dokładnie będzie się działo w danym zapytaniu (chociaż to też nieco teoretyczne), co dalej pozwala na rozsądne i optymalne pisanie poleceń SQL. Trzeba jednak zaznaczyć i chyba każdy praktyk to przyzna, że to co wydaje się być dobre okazuje się czasem gorsze od tego co od razu uznano by za zły kierunek. Warto więc próbować, testować, sprawdzać, porównywać

Wracając do samych zapytań SQL – w książce znajdziemy ich naprawdę sporo, autor stawia różne pytania, a potem pokazuje odpowiedź w formie zapytań; podobnie też tłumaczy różne zagadnienia i przedstawia X sposobów na dany problem; niektóre zapytania, algorytmy są naprawdę długie i trudne, wybrane z nich zostawiłem sobie do analizy, zrozumienia na potem, bo w niektórych przypadkach naprawdę przyda się cisza, spokój, skupienie 😉

Końcowa część książki podejmuje zagadnienia mniej powszechne, ale jakże ciekawe i ćwiczące mózg jak np. grafy, macierze, kolejki i inne

Nie dostrzegam szczególnych wad tej pozycji aczkolwiek rzuciło mi się w oczy to, że kilka elementów jakby nieco na siłę jest niemalże powtórzone w kilku miejscach

Trzeba też zaznaczyć, że książka zależnie od poziomu zaawansowania, doświadczenia może być naprawdę trudna i nie każdy będzie w stanie od tak sobie siąść i w kilka dni ją solidnie przerobić. Nie tylko przeczytać, ale zrozumieć, samemu wykonać różne operacje, poczytać w innych źródłach o danej kwestii coś więcej.

Autor recenzji: Bartek Medoń.

Informacje o książce

Książka dostępna jest w sklepie wydawnictwa Helion (druk i ebook).
Tytuł oryginału:
Joe Celko’s SQL for Smartie: Advanced SQL Programming, 5th Edition
Tłumaczenie: Tomasz Walczak
Stron: 752
Druk: oprawa twarda
Data wydania książki drukowanej: 2016-10-17
Data wydania ebooka: 2016-10-16
Format: 164×239

Praktyki mistrza SQL. Programowanie zaawansowane.

 

To również może Cię zainteresować:

One thought on “Praktyki mistrza SQL. Programowanie zaawansowane. Recenzja książki.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *