Poznaj fascynujący świat baz danych NoSQL!
Bazy danych NoSQL są coraz popularniejsze. Pozwalają na przechowywanie gigantycznych ilości danych, a przy tym zachowują cały czas najwyższą wydajność. Sprawdzają się doskonale wszędzie tam, gdzie konieczne są wysoka skalowalność systemu, elastyczne przechowywanie często zmieniających się danych lub inne specyficzne zastosowania. Jeżeli jesteś zagorzałym użytkownikiem relacyjnych baz danych SQL, jeżeli słyszałeś o bazach NoSQL i chcesz je poznać, trafiłeś na doskonałą książkę!
Stanowi ona doskonałe wprowadzenie do świata baz danych NoSQL. Na własnej skórze przekonasz się, w jakich zastosowaniach sprawdzą się one doskonale, a w jakich lepiej ich nie używać. W kolejnych rozdziałach poznasz stosowane modele danych oraz dowiesz się, co to jest map-reduce. Część druga książki została poświęcona konkretnym implementacjom - zapoznasz się z bazami klucz-wartość, bazami dokumentów oraz bazami grafowymi. Sprawdź, które najlepiej rozwiążą Twoje problemy! Sięgnij po tę książkę i śmiało wkrocz w świat baz danych NoSQL!
Omawiane w książce zagadnienia:
Określenie, dla których zastosowań bazy NoSQL będą (albo nie będą) odpowiednie.
Zrozumienie architektonicznych kompromisów związanych z wdrożeniem NoSQL.
Wykorzystanie NoSQL do uproszczenia procesu tworzenia oprogramowania i uniknięcia problemu mapowania pomiędzy strukturami w pamięci a bazą relacyjną.
Porównanie przodujących systemów NoSQL.
Omówienie języków zapytań: CQL i Cypher.
Zarządzanie wydajnością, niezawodnością, dostępnością i zdolnością do odzyskiwania po awarii.
Wykorzystanie NoSQL w środowiskach zwinnych.
Wykorzystanie NoSQL do wyszukiwania danych, zarządzania metadanymi, analizy tekstu, sieci społecznościowych, analizy danych i usług finansowych.
Bardziej efektywne kosztowo zarządzanie dużymi danymi dzięki wykorzystaniu klastrów.
Jak teoria CAP wpływa na sposób myślenia o spójności, dostępności i wydajności.
Równoległe przetwarzanie danych w klastrze za pomocą map-reduce.
Dlaczego NoSQL to termin bez jasno zdefiniowanego znaczenia.
Zmień sposób myślenia na nierelacyjny!
O autorach
Pramod J. Sadalage, główny doradca w firmie ThoughtWorks, w swojej pracy łączy kompetencje specjalisty baz danych i twórcy oprogramowania. Regularnie konsultuje się z klientami, którzy mają szczególnie wymagające potrzeby związane z przechowywaniem danych, wymagające wprowadzania nowych technologii i technik. Wymyślił pionierskie techniki pozwalające przechowywać dane w sposób ewolucyjny, podobny jak w przypadku systemów kontroli wersji, w bazach relacyjnych.
Martin Fowler to niezależny konsultant, od ponad dziesięciu lat stosujący obiekty do rozwiązania ważnych problemów biznesowych. Wśród jego klientów można wymienić Chryslera, Citibank, brytyjską Narodową Służbę Zdrowia, Andersen Consulting i Netscape Communications. Ponadto Fowler regularnie wypowiada się na temat obiektów, języka UML oraz wzorców projektowych. Jest autorem nagradzanych książek, na przykład takich, jak Analysis Patterns, UML w kropelce, Architektura systemów zarządzania przedsiębiorstwem. Wzorce projektowe.
Author(s): Pramod J. Sadalage, Martin Fowler
Publisher: Helion
Year: 2014
Spis treści
Przedmowa
Część I. Zrozumienie
Rozdział 1. Dlaczego NoSQL?
1.1. Wartość baz relacyjnych
1.1.1. Przechowywanie trwałych danych
1.1.2. Współbieżność
1.1.3. Integracja
1.1.4. Ustandaryzowany (przeważnie) model
1.2. Niezgodność impedancji
1.3. Bazy aplikacji i integracji
1.4. Atak klastrów
1.5. Pojawienie się baz NoSQL
1.6. Najważniejsze kwestie
Rozdział 2. Agregacyjne modele danych
2.1. Agregacje
2.1.1. Przykłady relacji i agregacji
2.1.2. Konsekwencje orientacji na agregacje
2.2. Modele klucz – wartość i dokumentów
2.3. Magazyny rodziny kolumn
2.4. Podsumowanie baz zorientowanych na agregacje
2.5. Dalsza lektura
2.6. Najważniejsze kwestie
Rozdział 3. Więcej szczegółów na temat modelów danych
3.1. Relacje
3.2. Bazy grafowe
3.3. Bazy danych bez schematu
3.4. Widoki zmaterializowane
3.5. Modelowanie z myślą o dostępie do danych
3.6. Najważniejsze kwestie
Rozdział 4. Modele dystrybucyjne
4.1. Pojedynczy serwer
4.2. Współdzielenie
4.3. Replikacja master-slave
4.4. Replikacja peer-to-peer
4.5. Łączenie shardingu i replikacji
4.6. Najważniejsze kwestie
Rozdział 5. Spójność
5.1. Spójność aktualizacji
5.2. Spójność odczytu
5.3. Rozluźnianie spójności
5.3.1. Teoria CAP
5.4. Rozluźnianie trwałości
5.5. Kwora
5.6. Dalsza lektura
5.7. Najważniejsze kwestie
Rozdział 6. Stemple wersji
6.1. Transakcje biznesowe i systemowe
6.2. Stemple wersji na wielu serwerach
6.3. Najważniejsze kwestie
Rozdział 7. Map-reduce
7.1. Podstawy map-reduce
7.2. Partycjonowanie i łączenie
7.3. Tworzenie obliczeń map-reduce
7.3.1. Przykład dwuetapowego map-reduce
7.3.2. Inkrementacyjny map-reduce
7.4. Dalsza lektura
7.5. Najważniejsze kwestie
Część II. Implementacja
Rozdział 8. Bazy klucz – wartość
8.1. Czym jest magazyn klucz – wartość?
8.2. Funkcjonalności magazynów klucz – wartość
8.2.1. Spójność
8.2.2. Transakcje
8.2.3. Możliwości zapytań
8.2.4. Struktura danych
8.2.5. Skalowanie
8.3. Pasujące przypadki użycia
8.3.1. Przechowywanie informacji o sesjach
8.3.2. Profile i preferencje użytkownika
8.3.3. Dane koszyka zakupów
8.4. Kiedy nie stosować
8.4.1. Relacje pomiędzy danymi
8.4.2. Transakcje dla wielu operacji
8.4.3. Zapytania na danych
8.4.4. Operacje na zestawach
Rozdział 9. Bazy dokumentów
9.1. Czym jest baza dokumentów?
9.2. Funkcjonalności
9.2.1. Spójność
9.2.2. Transakcje
9.2.3. Dostępność
9.2.4. Możliwości zapytań
9.2.5. Skalowanie
9.3. Pasujące przypadki użycia
9.3.1. Logowanie zdarzeń
9.3.2. Systemy zarządzania zawartością i platformy blogerskie
9.3.3. Analizy stron internetowych lub analizy w czasie rzeczywistym
9.3.4. Aplikacje e-commerce
9.4. Kiedy nie stosować
9.4.1. Złożone transakcje obejmujące różne operacje
9.4.2. Zapytania na zmiennej strukturze agregacji
Rozdział 10. Bazy rodziny kolumn
10.1. Czym jest magazyn rodziny kolumn?
10.2. Funkcjonalności
10.2.1. Spójność
10.2.2. Transakcje
10.2.3. Dostępność
10.2.4. Możliwości zapytań
10.2.5. Skalowanie
10.3. Pasujące przypadki użycia
10.3.1. Logowanie zdarzeń
10.3.2. Systemy zarządzania treścią i platformy blogowe
10.3.3. Liczniki
10.3.4. Wygasające dane
10.4. Kiedy nie stosować
Rozdział 11. Bazy grafowe
11.1. Czym jest baza grafowa?
11.2. Funkcjonalności
11.2.1. Spójność
11.2.2. Transakcje
11.2.3. Dostępność
11.2.4. Możliwości zapytań
11.2.5. Skalowanie
11.3. Pasujące przypadki użycia
11.3.1. Dane połączone
11.3.2. Wytyczanie trasy, wysyłka i usługi oparte o położenie
11.3.3. Silniki rekomendacji
11.4. Kiedy nie stosować
Rozdział 12. Zmiany schematów
12.1. Zmiany schematu
12.2. Zmiany schematu w bazach transakcyjnych
12.2.1. Zmiany w projektach budowanych od podstaw
12.2.2. Zmiany w projektach zastanych
12.3. Zmiany schematu w magazynach danych NoSQL
12.3.1. Zmiany inkrementacyjne
12.3.2. Zmiany w bazach grafowych
12.3.3. Zmiana struktury agregacji
12.4. Dalsza lektura
12.5. Najważniejsze kwestie
Rozdział 13. Poliglotyczne przechowywanie danych
13.1. Odmienne potrzeby przechowywania danych
13.2. Poliglotyczne wykorzystanie magazynu danych
13.3. Usługi a bezpośrednie przechowywanie danych
13.4. Rozszerzanie dla polepszenia funkcjonalności
13.5. Wybór odpowiedniej technologii
13.6. Problemy korporacyjne przy poliglotycznym przechowywaniu danych
13.7. Złożoność wdrożenia
13.8. Najważniejsze kwestie
Rozdział 14. Poza NoSQL
14.1. Systemy plików
14.2. Event sourcing
14.3. Obraz w pamięci
14.4. Kontrola wersji
14.5. Bazy XML
14.6. Bazy obiektowe
14.7. Najważniejsze kwestie
Rozdział 15. Wybór bazy danych
15.1. Wydajność programistów
15.2. Wydajność dostępu do danych
15.3. Trzymanie się standardów
15.4. Odwoływanie przypuszczeń
15.5. Najważniejsze kwestie
15.6. Końcowe przemyślenia
Bibliografia
Skorowidz