Recenzja książki "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence"

Recenzja książki "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence"

Adam Markowski

Zastanawialiście się kiedyś czym są nierelacyjne bazy danych? I co ważniejsze – w jakich sytuacjach ich użycie jest wskazane, a kiedy je omijać szerokim łukiem? Książka “NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence” odpowiada na te pytania. Autorzy, z których jeden zajmuje się doradztwem firmom zmagającym się ze szczególnie skomplikowanymi zbiorami danych (J. Sadalage), a drugi jest autorem wielu książek skupiających się na perfekcyjnym projektowaniu systemów informatycznych oraz wspieraniu produktywności programistów są zdecydowanie osobami na odpowiednim miejscu.

We wstępie tej pozycji znajdziecie przypomnienie czynników, które zadecydowały o dominacji relacyjnych baz danych od niemal 20 lat. Omawiane są ich główne zalety, jak np. trwałe składowanie danych, współbieżność, łatwość w integracji z zewnętrznymi systemami oraz (prawie) ustandaryzowany język, a także wady jak m.in. Impedance Mismatch czy brak skalowania horyzontalnego.

Następnie omówiona zostaje różnica w sposobie przechowywania danych i manipulacji nimi (Aggregation Data Models) w bazach relacyjnych i tych nierelacyjnych. Poznajemy 4 główne kategorie podziału baz nierelacyjnych ze względu na różny model przechowywania danych (klucz-wartość, dokumentacyjne, zorientowane kolumnowo, grafowe ) oraz wynikające z tego konsekwencje.

Głównym czynnikiem zainteresowania nierelacyjnymi bazami danych jest ich umiejętność działania na dużych klastrach serwerowych. Pociąga to za sobą konieczność podziału danych na poszczególne węzły (sharding) i koordynację zapytań pomiędzy nimi. Szczegółowo poznajemy sposoby replikacji danych między węzłami (Master-Slave oraz Master-Master).

Znaczną wadą nierelacyjnych baz danych jest utrata spójności (consistency) danych na rzecz operowania na wielu serwerach. Problematyka przedstawiona jest na wielu przykładach, np. jednoczesna aktualizacja tego samego rekordu znajdującego się na dwóch oddzielnych węzłach, co doprowadza do istnienia dwóch takich samych rekordów zawierających inny zbiór danych. Dowiecie się również w jaki sposób radzić sobie z utratą spójności.

Część teoretyczną kończy przedstawienie zapytań typu Map-Reduce, które obecne są w praktycznie każdej nierelacyjnej bazie danych. Dogłębnie zostaniecie zaznajomieni z zasadami działania takich zapytań, a także sposobami ich wykorzystania.

Zwieńczeniem książki są rozważania na temat możliwych implementacji przedstawionych wcześniej typów nierelacyjnych baz danych, przypadki ich użycia, porady jak najlepiej dobrać odpowiedni typ bazy i jak przeprowadzać migrację danych.

Książka szybko i sprawnie wprowadza w świat nierelacyjnych bazach danych i omawia ich główne koncepcje oraz problematykę. Jeżeli posiadacie już doświadczenie w pracy z relacyjnymi bazami danych jest to dla Was pozycja obowiązkowa.