-
nowość
Przetwarzanie danych w dużej skali. Niezawodność, skalowalność i konserwacja systemów - ebook
Przetwarzanie danych w dużej skali. Niezawodność, skalowalność i konserwacja systemów - ebook
Zrozum systemy danych od fundamentów po architekturę na skalę globalną.
Przetwarzanie danych w dużej skali stało się biblią w dziedzinie systemów rozproszonych. Niemal każdy poważny specjalista, jakiego znam, posiada jej egzemplarz.
Will Wilson, CEO, Antithesis
Ta książka powinna być lekturą obowiązkową dla inżynierów oprogramowania.
Kevin Scott, CTO, Microsoft
W erze chmury obliczeniowej, mikroserwisów i eksplozji danych każda nowoczesna aplikacja musi się mierzyć z wyzwaniami skalowalności, niezawodności i wydajności. Drugie wydanie kultowej książki Martina Kleppmanna, uzupełnione o współautorstwo Chrisa Riccominiego, to kompleksowy przewodnik po architekturze systemów danych od relacyjnych baz danych, przez rozproszone systemy NoSQL, po chmurowe hurtownie danych i przetwarzanie strumieniowe. Zaktualizowane wydanie uwzględnia najnowsze trendy: architekturę natywną dla chmury, indeksy wektorowe dla AI, silniki synchronizacji i oprogramowanie local-first.
Książka prowadzi czytelnika przez cały ekosystem systemów danych od modeli przechowywania i indeksowania danych, przez replikację i sharding, po transakcje rozproszone i algorytmy uzgadniania konsensusu. Autorzy nie ograniczają się do opisu narzędzi tłumaczą, dlaczego systemy działają tak, a nie inaczej, i jakie kompromisy kryją się za każdą decyzją architektoniczną. Osobne rozdziały zostały poświęcone przetwarzaniu wsadowemu i strumieniowemu, filozofii systemów sterowanych zdarzeniami i etycznym aspektom pracy z danymi osobowymi.
W książce:
- Modele danych i języki zapytań
- Silniki przechowywania danych
- Replikacja, sharding i transakcje
- Systemy rozproszone
- Przetwarzanie wsadowe i strumieniowe
- Architektura natywna dla chmury
- Etyka i prawo
Spis treści
Przedmowa
1. Kompromisy w architekturze systemów danych
- Systemy transakcyjne a systemy analityczne
- Charakterystyka przetwarzania transakcji i analityki
- Hurtownie danych
- Systemy zapisu a systemy danych pochodnych
- Chmura a hosting własny
- Wady i zalety usług chmurowych
- Architektura systemów natywnych dla chmury
- Operacje w erze chmury
- Systemy rozproszone a systemy jednowęzłowe
- Problemy z systemami rozproszonymi
- Mikrousługi i architektura bezserwerowa
- Przetwarzanie w chmurze i superkomputery
- Systemy danych, prawo i społeczeństwo
- Podsumowanie
2. Definiowanie wymagań niefunkcjonalnych
- Studium przypadku: główne osie czasu w sieciach społecznościowych
- Reprezentacja użytkowników, wpisów i obserwujących
- Materializacja i aktualizacja osi czasu
- Opis wydajności
- Opóźnienie i czas odpowiedzi
- Średnia, mediana i percentyle
- Stosowanie miar czasu odpowiedzi
- Niezawodność i odporność na błędy
- Odporność na błędy
- Błędy sprzętowe i programowe
- Niezawodność a czynnik ludzki
- Skalowalność
- Opisywanie obciążenia
- Architektura ze współdzieloną pamięcią, współdzielonym dyskiem i bez współdzielenia zasobów
- Zasady zapewniania skalowalności
- Łatwość konserwacji
- Łatwość eksploatacji - ułatwianie życia pracownikom operacyjnym
- Prostota - zarządzanie złożonością
- Łatwość modyfikowania - umożliwianie prostego wprowadzania zmian
- Podsumowanie
3. Modele danych i języki zapytań
- Model relacyjny a model dokumentowy
- Niedopasowanie modeli obiektowego i relacyjnego
- Normalizacja, denormalizacja i złączenia
- Relacje wiele do jednego i wiele do wielu
- Gwiazdy i płatki śniegu - schematy używane w analityce
- Kiedy stosować poszczególne modele?
- Modele danych przypominające graf
- Grafy właściwości
- Język zapytań Cypher
- Zapytania o grafy w SQL-u
- Model triplestore i język SPARQL
- Datalog - rekurencyjne zapytania relacyjne
- GraphQL
- Event sourcing i CQRS
- Ramki danych, macierze i tablice
- Podsumowanie
4. Przechowywanie i pobieranie danych
- Przechowywanie i indeksy w systemach OLTP
- Przechowywanie danych w plikach o strukturze dziennika
- B-drzewa
- Porównanie b-drzew z drzewami LSM
- Indeksy wielokolumnowe i pomocnicze
- Przechowywanie wartości w indeksie
- Utrzymywanie wszystkiego w pamięci
- Przechowywanie danych na potrzeby analityki
- Chmurowe hurtownie danych
- Bazy kolumnowe
- Wykonywanie zapytań: kompilacja i wektoryzacja
- Widoki zmaterializowane i kostki danych
- Indeksy wielowymiarowe i pełnotekstowe
- Wyszukiwanie pełnotekstowe
- Reprezentacje wektorowe
- Podsumowanie
5. Kodowanie i zmiany
- Formaty kodowania danych
- Formaty specyficzne dla języków
- JSON, XML i ich wersje binarne
- Protocol Buffers
- Avro
- Zalety schematów
- Sposoby przepływu danych
- Przepływ danych z wykorzystaniem baz
- Przepływ danych z użyciem usług w REST i RPC
- Wykonywanie odporne na awarie i przepływy pracy
- Architektury sterowane zdarzeniami
- Podsumowanie
6. Replikacja
- Replikacja z jednym liderem
- Replikacja synchroniczna i asynchroniczna
- Tworzenie nowych obserwatorów
- Radzenie sobie z przestojami węzłów
- Implementowanie dzienników replikacji
- Problemy z opóźnieniem replikacji
- Rozwiązania problemu opóźnienia replikacji
- Replikacja z wieloma liderami
- Praca w środowisku rozproszonym geograficznie
- Silniki synchronizacji i oprogramowanie local-first
- Radzenie sobie z konfliktami przy zapisie
- Replikacja bez lidera
- Zapis danych w bazie, gdy węzeł nie działa
- Porównanie wydajności replikacji z jednym liderem i replikacji bez lidera
- Eksploatacja w wielu regionach
- Wykrywanie współbieżnych zapisów
- Podsumowanie
7. Sharding
- Wady i zalety shardingu
- Sharding w architekturze multitenant
- Sharding danych typu klucz - wartość
- Podział na podstawie przedziałów kluczy
- Sharding na podstawie skrótów kluczy
- Asymetryczne obciążenie robocze i odciążanie hot spotów
- Eksploatacja - równoważenie automatyczne lub ręczne
- Trasowanie żądań
- Sharding a indeksy pomocnicze
- Podział indeksów pomocniczych na podstawie dokumentów
- Globalne indeksy pomocnicze
- Podsumowanie
8. Transakcje
- Czym dokładnie jest transakcja?
- Znaczenie gwarancji ACID
- Operacje na pojedynczych obiektach i na wielu obiektach
- Niskie poziomy izolacji
- Odczyt zatwierdzonych danych
- Izolacja snapshotów i powtarzalny odczyt
- Zapobieganie utracie aktualizacji
- Zapis zniekształcający i fantomy
- Sekwencyjność
- Rzeczywiste sekwencyjne wykonywanie transakcji
- Blokady dwuetapowe
- Algorytm SSI
- Transakcje rozproszone
- Zatwierdzanie dwuetapowe
- Transakcje rozproszone w różnych systemach
- Transakcje rozproszone wewnątrz bazy danych
- Jeszcze o przetwarzaniu komunikatów dokładnie raz
- Podsumowanie
9. Problemy z systemami rozproszonymi
- Błędy i awarie częściowe
- Zawodne sieci
- Ograniczenia protokołu TCP
- Błędy sieci w praktyce
- Wykrywanie błędów
- Limity czasu i nieograniczone opóźnienia
- Sieci synchroniczne i asynchroniczne
- Zawodne zegary
- Zegary monotoniczne a zegary czasu rzeczywistego
- Synchronizacja i precyzja zegarów
- Poleganie na zegarach synchronizowanych
- Wstrzymywanie procesów
- Wiedza, prawda i kłamstwa
- Rządy większości
- Blokady i dzierżawy w środowisku rozproszonym
- Błędy bizantyjskie
- Model systemu a rzeczywistość
- Metody formalne i testy randomizowane
- Podsumowanie
10. Spójność i konsensus
- Liniowość
- Co sprawia, że system jest liniowy?
- Poleganie na liniowości
- Implementowanie systemów liniowych
- Koszty liniowości
- Generatory identyfikatorów i zegary logiczne
- Zegary logiczne
- Liniowe generatory identyfikatorów
- Konsensus
- Rodzaje konsensusu
- Konsensus w praktyce
- Usługi koordynacji
- Podsumowanie
11. Przetwarzanie wsadowe
- Przetwarzanie wsadowe z użyciem narzędzi uniksowych
- Prosta analiza dziennika
- Łańcuch wywołań a niestandardowe programy
- Sortowanie a agregowanie w pamięci
- Przetwarzanie wsadowe w systemach rozproszonych
- Rozproszone systemy plików
- Pamięć obiektowa
- Orkiestracja zadań w środowisku rozproszonym
- Modele przetwarzania wsadowego
- MapReduce
- Systemy przepływu danych
- Tasowanie danych
- Złączenia i grupowanie
- Języki zapytań
- Ramki danych
- Zastosowania przetwarzania wsadowego
- Procesy ETL
- Analityka
- Uczenie maszynowe
- Udostępnianie danych pochodnych
- Podsumowanie
12. Przetwarzanie strumieniowe
- Przesyłanie strumieni zdarzeń
- Systemy obsługi komunikatów
- Brokery komunikatów oparte na dziennikach
- Strumienie a bazy danych
- Utrzymywanie synchronizacji systemów
- Przechwytywanie zmian w danych
- Stan, strumienie i niemodyfikowalność
- Przetwarzanie strumieniowe
- Zastosowania przetwarzania strumieniowego
- Wnioskowanie na temat czasu
- Złączanie strumieni
- Odporność na błędy
- Podsumowanie
13. Filozofia systemów strumieniowych
- Integrowanie danych
- Łączenie wyspecjalizowanych narzędzi za pomocą generowania danych
- Przetwarzanie wsadowe i strumieniowe
- Podział baz danych na komponenty
- Łączenie technologii składowania danych
- Projektowanie aplikacji na podstawie przepływu danych
- Obserwowanie stanu pochodnego
- Dążenie do poprawności
- Zasada punktów końcowych dla baz danych
- Wymuszanie przestrzegania ograniczeń
- Aktualność a integralność
- Ufaj, ale kontroluj
- Podsumowanie
14. Robienie tego, co słuszne
- Analityka prognostyczna
- Uprzedzenia i dyskryminacja
- Odpowiedzialność i rozliczalność
- Pętle sprzężenia zwrotnego
- Prywatność i śledzenie
- Inwigilacja
- Zgoda i wolność wyboru
- Prywatność i wykorzystanie danych
- Dane jako zasoby i źródło władzy
- Pamiętając o rewolucji przemysłowej.
- Ustawodawstwo i samoregulacja
- Podsumowanie
Słowniczek
Skorowidz
| Kategoria: | Bazy danych |
| Zabezpieczenie: |
Watermark
|
| ISBN: | 978-83-289-3955-4 |
| Rozmiar pliku: | 8,8 MB |