Szczegóły ebooka

NoSQL. Przyjazny przewodnik

NoSQL. Przyjazny przewodnik

Dan Sullivan

Ebook
Systemy do zarządzania danymi muszą dziś spełniać o wiele wyższe wymagania niż kiedyś. W wielu przypadkach nierelacyjne bazy danych, zwane NoSQL, są lepszym rozwiązaniem niż dominujące do niedawna bazy relacyjne. Projektant systemu ma więc do dyspozycji dobrze znane bazy relacyjne oraz systemy NoSQL, takie jak bazy klucz–wartość, bazy dokumentów, rodziny kolumn i bazy grafowe. Do rozstrzygnięcia pozostaje problem: którą technologię zarządzania danymi wybrać w danym przypadku.

Niniejsza książka jest przystępnym, pragmatycznym przewodnikiem po nierelacyjnych systemach bazodanowych. Pokazano w niej, czym różnią się NoSQL od baz relacyjnych. Szczególny nacisk położono na wyjaśnienie tych cech i funkcjonalności, które powinny być uwzględniane podczas projektowania aplikacji i wybierania technologii bazodanowych. Przedstawiono wewnętrzne mechanizmy baz NoSQL i wyjaśniono, w jaki sposób da się zbudować za ich pomocą skalowalne, niezawodne aplikacje. Nie zabrakło przydatnych wskazówek, zasad projektowych i najlepszych praktyk.

W tej książce znajdziesz:
  • podstawy relacyjnych baz danych w odniesieniu do systemów NoSQL
  • bazy klucz–wartość — ich charakterystykę, zasady projektowania i słabe strony
  • bazy dokumentów — koncepcje baz bez schematu, podstawowe operacje, najpowszechniejsze wzorce projektowe
  • bazy rodzin kolumn — aplikacje BigData, architekturę baz, zasady projektowania i wykorzystywania
  • bazy grafowe — modelowanie grafów i sieci, wskazówki projektowe, możliwe problemy
  • zasady dobierania technologii bazodanowej do konkretnych zastosowań

Nie wiesz jeszcze, którą bazę wybrać? Najwyższy czas to rozstrzygnąć!


Dan Sullivan — jest naukowcem i architektem danych. Od dwudziestu lat zajmuje się m.in. analizą biznesową, uczeniem maszynowym i data miningiem. Sullivan jest uznanym ekspertem w dziedzinie baz danych, zarówno relacyjnych, jak i NoSQL.

O autorze (15)

Przedmowa (17)

Wprowadzenie (19)

  • Kto powinien przeczytać tę książkę? (20)
  • Cel tej książki (21)
  • Jak czytać tę książkę (22)
  • Jak zorganizowana jest ta książka (22)
    • Część I: "Wprowadzenie" (22)
    • Część II: "Bazy klucz-wartość" (22)
    • Część III: "Bazy dokumentów" (23)
    • Część IV: "Bazy rodziny kolumn" (23)
    • Część V: "Bazy grafowe" (23)
    • Część VI: "Wybór bazy danych dla Twojej aplikacji" (24)
    • Dodatki (24)

CZĘŚĆ I. WPROWADZENIE (25)

Rozdział 1. Różne bazy do różnych zastosowań (27)

  • Projekt bazy relacyjnej (28)
    • Aplikacja e-commerce (28)
  • Wczesne systemy zarządzania bazami danych (29)
    • Systemy oparte na plikach płaskich (29)
    • Systemy z hierarchicznym modelem danych (33)
    • Systemy z sieciowym modelem danych (35)
    • Podsumowanie wczesnych systemów baz danych (37)
  • Rewolucja baz relacyjnych (38)
    • Relacyjne systemy zarządzania danymi (39)
  • Przyczyny powstania baz NoSQL (45)
    • Skalowalność (46)
    • Koszt (47)
    • Elastyczność (47)
    • Dostępność (48)
  • Podsumowanie (48)
  • Studium przypadku (50)
  • Pytania kontrolne (50)
  • Odniesienia (51)
  • Bibliografia (51)

Rozdział 2. Różnorodność baz NoSQL (53)

  • Zarządzanie danymi w bazach rozproszonych (54)
    • Przechowywanie danych w sposób trwały (55)
    • Utrzymanie spójności danych (56)
    • Zapewnienie dostępności danych (57)
    • Zrównoważenie czasów reakcji, spójności i trwałości (60)
    • Spójność, dostępność i partycjonowanie: teoria CAP (62)
  • ACID i BASE (64)
    • ACID: atomowość, spójność, izolacja, trwałość (64)
    • BASE: zasadnicza dostępność, miękki stan, ostateczna spójność (65)
    • Rodzaje ostatecznej spójności (66)
  • Cztery typy baz NoSQL (68)
    • Bazy par klucz-wartość (68)
    • Bazy dokumentów (73)
    • Bazy rodziny kolumn (75)
    • Bazy grafowe (77)
  • Podsumowanie (79)
  • Pytania kontrolne (80)
  • Odniesienia (81)
  • Bibliografia (81)

CZĘŚĆ II. BAZY KLUCZ-WARTOŚĆ (83)

Rozdział 3. Wprowadzenie do baz klucz-wartość (85)

  • Od tablic do baz klucz-wartość (86)
    • Tablice: baza klucz-wartość z kółkami treningowymi (86)
    • Tablice asocjacyjne: zdjęcie kółek treningowych (87)
    • Pamięć podręczna: dodanie do roweru biegów (88)
    • Bazy klucz-wartość w pamięci i na dysku: od rowerów do pojazdów zmotoryzowanych (91)
  • Podstawowe funkcjonalności baz klucz-wartość (92)
    • Prostota: komu w ogóle potrzebne są skomplikowane modele danych? (93)
    • Szybkość: nie ma czegoś takiego jak "za szybko" (94)
    • Skalowalność: nadążaj za wyścigiem (95)
  • Klucze: więcej niż tylko nic nieznaczące identyfikatory (101)
    • Jak konstruować klucze (101)
    • Używanie kluczy do odnajdywania wartości (102)
  • Wartości: przechowywanie prawie dowolnych danych (106)
    • Wartości nie wymagają silnego typowania (106)
    • Ograniczenia w wyszukiwaniu wartości (107)
  • Podsumowanie (108)
  • Pytania kontrolne (109)
  • Odniesienia (109)
  • Bibliografia (110)

Rozdział 4. Terminologia baz klucz-wartość (111)

  • Terminy związane z modelowaniem danych w bazach klucz-wartość (112)
    • Klucz (114)
    • Wartość (116)
    • Przestrzeń nazw (117)
    • Partycja (118)
    • Klucz partycjonowania (120)
    • Brak schematu (121)
  • Terminy związane z architekturą baz klucz-wartość (122)
    • Klaster (122)
    • Pierścień (124)
    • Replikacja (124)
  • Terminy związane z implementacją baz klucz-wartość (126)
    • Funkcje haszujące (126)
    • Kolizja (127)
    • Kompresja (128)
  • Podsumowanie (129)
  • Pytania kontrolne (129)
  • Odniesienia (130)

Rozdział 5. Projektowanie baz klucz-wartość (131)

  • Projektowanie kluczy i partycjonowanie (132)
    • Klucze powinny posiadać konwencję nazewniczą (132)
    • Dobrze zaprojektowane klucze wymagają mniej kodu (133)
    • Praca z zakresami wartości (134)
    • Klucze muszą brać pod uwagę ograniczenia (135)
    • Wykorzystanie kluczy do partycjonowania (136)
  • Projektowanie struktury wartości (137)
    • Typy posiadające strukturę pomagają skrócić czas oczekiwania (138)
    • Duże wartości mogą prowadzić do mało wydajnych operacji odczytu i zapisu (140)
  • Ograniczenia baz klucz-wartość (142)
    • Pobieranie wartości wyłącznie za pomocą klucza (143)
    • Bazy klucz-wartość nie wspierają przeszukiwania zakresów (144)
    • Brak standardowego języka zapytań podobnego do SQL dla baz relacyjnych (144)
  • Wzorce projektowe dla baz klucz-wartość (145)
    • Klucze z ograniczonym czasem życia (145)
    • Emulowanie tabel (147)
    • Agregacje (148)
    • Agregacje atomowe (150)
    • Indeksy (151)
  • Podsumowanie (153)
  • Studium przypadku: bazy klucz-wartość dla konfiguracji aplikacji mobilnej (153)
  • Pytania kontrolne (156)
  • Odniesienia (156)

CZĘŚĆ III. BAZY DOKUMENTÓW (157)

Rozdział 6. Wprowadzenie do baz dokumentów (159)

  • Czym jest dokument? (160)
    • Dokumenty nie są wcale takie proste (160)
    • Dokumenty a pary klucz-wartość (163)
    • Zarządzanie wieloma dokumentami w kolekcji (164)
  • Unikaj jawnego definiowania schematu (172)
  • Podstawowe operacje na bazach dokumentów (173)
    • Wstawianie dokumentów do kolekcji (175)
    • Usuwanie dokumentów z kolekcji (176)
    • Aktualizacja dokumentów w kolekcji (177)
    • Pobieranie dokumentów z kolekcji (178)
  • Podsumowanie (180)
  • Pytania kontrolne (180)
  • Odniesienia (181)

Rozdział 7. Terminologia baz dokumentów (183)

  • Terminy dotyczące dokumentów i kolekcji (184)
    • Dokument (184)
    • Kolekcja (186)
    • Dokument osadzony (187)
    • Brak schematu (188)
    • Schemat polimorficzny (190)
  • Typy partycji (191)
    • Partycjonowanie pionowe (192)
    • Partycjonowanie poziome, czyli sharding (194)
  • Modelowanie danych i przetwarzanie zapytań (198)
    • Normalizacja (198)
    • Denormalizacja (200)
    • Procesor zapytań (200)
  • Podsumowanie (201)
  • Pytania kontrolne (201)
  • Odniesienia (201)

Rozdział 8. Projektowanie baz dokumentów (203)

  • Normalizacja, denormalizacja i poszukiwanie równowagi (204)
    • Relacja jeden-do-wielu (206)
    • Relacja wiele-do-wielu (206)
    • Potrzeba złączeń (206)
    • Wykonywanie złączeń: podnoszenie ciężarów dla baz relacyjnych (208)
    • Co zrobiłby projektant bazy dokumentów? (210)
  • Planowanie z uwzględnieniem dokumentów zmiennych (215)
    • Unikanie przenoszenia dużych dokumentów (218)
  • Strefa Złotowłosej w indeksach (218)
    • Aplikacje zorientowane na odczyt (218)
    • Aplikacje zorientowane na zapis (219)
  • Modelowanie powszechnych relacji (221)
    • Relacja jeden-do-wielu w bazach dokumentów (221)
    • Relacja wiele-do-wielu w bazach dokumentów (222)
    • Modelowanie hierarchii w bazach dokumentów (223)
  • Podsumowanie (225)
  • Studium przypadku: manifesty użytkowników (226)
    • Osadzać czy nie? (227)
    • Wybór indeksów (228)
    • Osobne kolekcje dla typów? (228)
  • Pytania kontrolne (229)
  • Odniesienia (229)

CZĘŚĆ IV. BAZY RODZINY KOLUMN (231)

Rozdział 9. Wprowadzenie do baz rodziny kolumn (233)

  • Na początku było Google BigTable (234)
    • Wykorzystanie dynamicznej kontroli nad kolumnami (236)
    • Indeksowanie po rekordzie, nazwie kolumny i stemplu czasowym (236)
    • Kontrolowanie lokalizacji danych (237)
    • Odczyt i zapis wierszy atomowych (237)
    • Utrzymywanie posortowanych wierszy (238)
  • Podobieństwa i różnice między bazami rodziny kolumn a bazami klucz-wartość i bazami dokumentów (240)
    • Cechy baz rodziny kolumn (240)
    • Podobieństwa i różnice między bazami rodziny kolumn i bazami dokumentów (241)
    • Bazy rodziny kolumn kontra bazy relacyjne (242)
  • Architektura baz rodziny kolumn (245)
    • Architektura HBase: różnorodność węzłów (245)
    • Architektura Cassandry: peer-to-peer (247)
    • Rozgłaszanie: protokół plotki (248)
    • Termodynamika i bazy rozproszone: po co nam antyentropia (250)
    • Przechowaj to dla mnie: przekazanie ze wskazaniem (251)
  • Kiedy korzystać z baz rodziny kolumn (252)
  • Podsumowanie (254)
  • Pytania kontrolne (254)
  • Odniesienia (255)

Rozdział 10. Terminologia baz rodziny kolumn (257)

  • Podstawowe komponenty baz rodziny kolumn (258)
    • Przestrzeń kluczy (258)
    • Klucz wiersza (258)
    • Kolumna (259)
    • Rodziny kolumn (260)
  • Struktury i procesy: implementacja baz rodziny kolumn (261)
    • Wewnętrzne struktury i parametry konfiguracyjne baz rodziny kolumn (261)
    • Starzy znajomi: klastry i partycje (262)
    • Rzut oka pod maskę: inne komponenty baz rodziny kolumn (264)
  • Procesy i protokoły (268)
    • Replikacja (268)
    • Antyentropia (268)
    • Protokół plotki (269)
    • Przekazanie ze wskazaniem (270)
  • Podsumowanie (271)
  • Pytania kontrolne (271)
  • Odniesienia (272)

Rozdział 11. Projektowanie baz rodziny kolumn (273)

  • Wskazówki dotyczące projektowania tabel (275)
    • Denormalizuj, zamiast łączyć (276)
    • Wykorzystuj kolumny bez wartości (276)
    • Używaj zarówno nazwy kolumny, jak i wartości kolumn do przechowywania danych (277)
    • Modeluj encje za pomocą pojedynczego wiersza (278)
    • Unikaj punktów zapalnych w kluczach wierszy (279)
    • Utrzymuj odpowiednią liczbę wersji wartości kolumn (280)
    • Unikaj rozbudowanych struktur danych w wartościach kolumn (281)
  • Wskazówki dotyczące indeksowania (282)
    • Kiedy korzystać z indeksów pomocniczych zarządzanych przez system bazy rodziny kolumn (282)
    • Kiedy tworzyć indeksy pomocnicze i zarządzać nimi za pomocą tabeli (286)
  • Narzędzia do pracy z bazami Big Data (288)
    • Ekstrakcja, transformacja i ładowanie danych Big Data (289)
    • Analizowanie danych Big Data (290)
    • Narzędzia do monitorowania Big Data (293)
  • Podsumowanie (294)
  • Studium przypadku: analiza danych klienta (294)
    • Zrozumienie potrzeb użytkownika (295)
  • Pytania kontrolne (296)
  • Odniesienia (297)

CZĘŚĆ V. BAZY GRAFOWE (299)

Rozdział 12. Wprowadzenie do baz grafowych (301)

  • Czym jest graf? (301)
  • Modelowanie grafów i sieci (302)
    • Modelowanie lokalizacji geograficznych (303)
    • Modelowanie chorób zakaźnych (303)
    • Modelowanie encji abstrakcyjnych i konkretnych (305)
    • Modelowanie mediów społecznościowych (307)
  • Zalety baz grafowych (308)
    • Szybsze wykonywanie zapytań dzięki unikaniu złączeń (308)
    • Upraszczanie modelowania (310)
    • Wiele relacji pomiędzy encjami (310)
  • Podsumowanie (311)
  • Pytania kontrolne (311)
  • Odniesienia (312)

Rozdział 13. Terminologia baz grafowych (313)

  • Elementy grafów (314)
    • Wierzchołek (314)
    • Krawędź (315)
    • Ścieżka (317)
    • Pętla (317)
  • Operacje na grafach (318)
    • Unia grafów (318)
    • Przecięcie grafów (319)
    • Przeszukiwanie grafu (320)
  • Właściwości grafów i krawędzi (320)
    • Izomorfizm (321)
    • Rząd i rozmiar (321)
    • Stopień (322)
    • Bliskość (322)
    • Pośrednictwo (322)
  • Typy grafów (323)
    • Grafy skierowane i nieskierowane (324)
    • Sieć przepływowa (324)
    • Grafy dwudzielne (325)
    • Multigraf (325)
    • Graf ważony (326)
  • Podsumowanie (327)
  • Pytania kontrolne (327)
  • Odniesienia (327)

Rozdział 14. Projektowanie baz grafowych (329)

  • Początki projektowania grafów (329)
    • Projektowanie bazy grafowej sieci społecznościowej (331)
    • Projektowanie sterowane przez zapytania (znowu) (334)
  • Odpytywanie grafu (336)
    • Cypher: zapytania deklaratywne (336)
    • Gremlin: zapytania przez trawersowanie grafu (337)
  • Wskazówki i sztuczki przydatne w projektowaniu baz grafowych (341)
    • Użyj indeksów do poprawienia czasu pobierania danych (342)
    • Używaj krawędzi odpowiedniego rodzaju (342)
    • Podczas przeszukiwania grafu uważaj na cykle (343)
    • Weź pod uwagę skalowalność swojej bazy grafowej (344)
  • Podsumowanie (345)
  • Studium przypadku: optymalizacja tras transportowych (345)
    • Zrozumieć potrzeby użytkownika (345)
    • Projektowanie rozwiązania polegającego na analizie grafu (346)
  • Pytania kontrolne (347)
  • Odniesienia (347)

CZĘŚĆ VI. WYBÓR BAZY DANYCH DLA TWOJEJ APLIKACJI (349)

Rozdział 15. Wytyczne do wyboru bazy danych (351)

  • Wybór bazy danych NoSQL (352)
    • Przypadki użycia i kryteria wyboru baz klucz-wartość (353)
    • Przypadki użycia i kryteria wyboru baz dokumentów (354)
    • Przypadki użycia i kryteria wyboru baz rodziny kolumn (354)
    • Przypadki użycia i kryteria wyboru baz grafowych (356)
  • Używanie baz NoSQL i baz relacyjnych razem (357)
  • Podsumowanie (358)
  • Pytania kontrolne (358)
  • Odniesienia (359)

DODATKI (361)

Dodatek A. Odpowiedzi do pytań kontrolnych (363)

Dodatek B. Lista baz NoSQL (389)

Dodatek C. Słowniczek (393)

Skorowidz (401)

  • Tytuł: NoSQL. Przyjazny przewodnik
  • Autor: Dan Sullivan
  • Tytuł oryginału: NoSQL for Mere Mortals
  • Tłumaczenie: Jakub Hubisz
  • ISBN: 978-83-283-2489-3, 9788328324893
  • Data wydania: 2016-08-07
  • Format: Ebook
  • Identyfikator pozycji: nosqlp
  • Wydawca: Helion