E-book details

Przewodnik po MongoDB. Wydajna i skalowalna baza danych. Wydanie III

Przewodnik po MongoDB. Wydajna i skalowalna baza danych. Wydanie III

Shannon Bradshaw, Eoin Brazil, Kristina Chodorow

Ebook

MongoDB jest wieloplatformowym, nierelacyjnym systemem do obsługi baz danych, napisanym w języku C++. Nie przypomina ściśle ustrukturyzowanych relacyjnych baz danych, zamiast tego korzysta z dokumentów w formacie BSON. Ułatwia to bardziej naturalne przetwarzanie informacji w aplikacjach, oczywiście przy zachowaniu możliwości tworzenia hierarchii oraz indeksowania. W ten sposób cały system zyskuje na wydajności, co jest szczególnie istotne przy przetwarzaniu bardzo dużych zbiorów danych. MongoDB umożliwia stosowanie elastycznych modeli danych, uzyskiwanie wysokiego poziomu dostępności i poziome skalowanie.

Ten praktyczny przewodnik jest przeznaczony dla użytkowników bazy MongoDB w wersji 4.2. W przystępny i konkretny sposób opisuje zalety stosowania dokumentowych baz danych, równocześnie wskazuje zaawansowane metody konfiguracji systemu oraz możliwe zastosowania w różnych projektach. Książka zainteresuje zarówno użytkowników i administratorów MongoDB, jak i programistów tworzących złożone aplikacje. Przedstawia kwestie tworzenia zapytań, indeksów, agregacji, transakcji, zbiorów replik, zarządzania systemem, shardingu i administrowania danymi, trwałości danych, monitorowania systemu oraz jego zabezpieczenia. Znalazło się tu także wprowadzenie do pracy z MongoDB, omówiono też zasady pracy z klastrem shardów oraz administrowania aplikacją i serwerem bazy MongoDB.

W książce między innymi:

  • ogólne zasady pracy z MongoDB
  • operacje zapisu i wyszukiwania oraz tworzenie złożonych zapytań
  • indeksy w kolekcjach, agregowanie danych i transakcje
  • lokalny zbiór replik i korzystanie z replikacji
  • konfiguracja elementów klastra
  • monitorowanie systemu, kopie bezpieczeństwa i odtwarzanie bazy MongoDB

MongoDB - przekonaj się na własnym systemie!


Przedmowa 15

CZĘŚĆ I. WPROWADZENIE DO MONGODB 19

1. Wprowadzenie 21

  • Łatwość użycia 21
  • Skalowanie 21
  • Bogactwo funkcji... 23
  • ...bez ograniczania prędkości 23
  • Filozofia 24

2. Zaczynamy 25

  • Dokumenty 25
  • Kolekcje 26
    • Dynamiczne schematy 26
    • Nazewnictwo 27
  • Bazy danych 28
  • Pobieranie i uruchamianie MongoDB 29
  • Wprowadzenie do powłoki MongoDB 30
    • Uruchamianie powłoki 31
    • Klient MongoDB 31
    • Podstawowe operacje w powłoce 32
  • Typy danych 34
    • Proste typy danych 34
    • Daty 36
    • Tablice 37
    • Zagnieżdżone dokumenty 37
    • Klucz _id i typ ObjectId 38
  • Używanie powłoki MongoDB 40
    • Porady przy używaniu powłoki 40
    • Uruchamianie skryptów w powłoce 41
    • Tworzenie pliku .mongorc.js 43
    • Dostosowywanie znaku zachęty 44
    • Edytowanie złożonych zmiennych 45
    • Niewygodne nazwy kolekcji 45

3. Tworzenie, aktualizowanie i usuwanie dokumentów 47

  • Wstawianie dokumentów 47
    • Metoda insertMany 47
    • Sprawdzanie poprawności wstawiania 50
    • Metoda insert 50
  • Usuwanie dokumentów 51
    • Metoda drop 52
  • Aktualizowanie dokumentów 52
    • Zastępowanie dokumentów 53
    • Używanie operatorów aktualizacji 54
    • Operacje typu upsert 64
    • Aktualizowanie wielu dokumentów 66
    • Zwracanie zaktualizowanych dokumentów 67

4. Zapytania 71

  • Metoda find 71
    • Wybieranie zwracanych kluczy 72
    • Ograniczenia 72
  • Kryteria zapytania 73
    • Zapytania warunkowe 73
    • Zapytania LUB 74
    • Operator $not 75
  • Zapytania związane z różnymi typami 75
    • Typ null 75
    • Wyrażenia regularne 76
    • Zapytania dotyczące tablic 77
    • Zapytania do dokumentów zagnieżdżonych 81
  • Zapytania $where 83
  • Kursory 84
    • Limity, pominięcia i sortowanie 85
    • Unikanie pomijania dużej liczby dokumentów 87
    • Nieśmiertelne kursory 89

CZĘŚĆ II. PROJEKTOWANIE APLIKACJI 91

5. Indeksy 93

  • Wprowadzenie do indeksów 93
    • Tworzenie indeksu 95
    • Wprowadzenie do indeksów złożonych 98
    • W jaki sposób MongoDB wybiera indeks? 102
    • Używanie indeksów złożonych 103
    • W jaki sposób operatory $ korzystają z indeksów? 120
    • Indeksowanie obiektów i tablic 130
    • Liczność indeksu 132
  • Dane z polecenia explain 132
  • Kiedy nie używać indeksu? 140
  • Rodzaje indeksów 141
    • Indeksy unikalne 141
    • Indeksy częściowe 143
  • Administrowanie indeksem 144
    • Identyfikowanie indeksów 145
    • Zmienianie indeksów 146

6. Specjalne typy indeksów i kolekcji 147

  • Indeksy geoprzestrzenne 147
    • Rodzaje zapytań geoprzestrzennych 148
    • Używanie indeksów geoprzestrzennych 149
    • Złożone indeksy geoprzestrzenne 157
    • Indeksy 2d 157
  • Indeksy wyszukiwania pełnotekstowego 159
    • Tworzenie indeksu tekstowego 160
    • Wyszukiwanie tekstowe 161
    • Optymalizowanie wyszukiwania pełnotekstowego 163
    • Wyszukiwanie w innych językach 164
  • Kolekcje ograniczone 164
    • Tworzenie kolekcji ograniczonych 166
    • Wieczne kursory 167
  • Indeksy o ograniczonym czasie życia 167
  • Przechowywanie plików za pomocą GridFS 168
    • Zaczynamy pracę z GridFS - mongofiles 168
    • Praca z GridFS w sterownikach MongoDB 169
    • Pod maską 170

7. Wprowadzenie do frameworka agregacji 173

  • Potoki, etapy i regulatory 173
  • Praca z etapami - typowe operacje 175
  • Wyrażenia 179
    • Etap typu $project 180
    • Etap typu $unwind 185
  • Wyrażenia tablicowe 192
  • Akumulatory 196
    • Używanie akumulatorów w etapie projekcji 197
  • Wprowadzenie do grupowania 198
    • Pole _id w etapie grupowania 202
    • Etap grupowania i etap projekcji 205
  • Zapisywanie wyników potoku agregacji do kolekcji 208

8. Transakcje 209

  • Wprowadzenie do transakcji 209
    • Definicja standardu ACID 209
  • Jak używać transakcji? 210
  • Dostosowywanie limitów transakcji w swojej aplikacji 214
    • Ograniczenia czasowe i limity wielkości protokołu 215

9. Projektowanie aplikacji 217

  • Projektowanie schematu danych 217
    • Wzorce projektowe schematów 218
  • Normalizacja i denormalizacja 221
    • Przykłady reprezentacji danych 222
    • Kardynalność 226
    • Znajomi, obserwujący i inne nieprzyjemności 226
  • Optymalizowanie manipulacji na danych 229
    • Usuwanie starych danych 229
  • Planowanie baz danych i kolekcji 230
  • Spójność danych 231
  • Migrowanie schematów 232
  • Zarządzanie schematami 233
  • Kiedy nie używać MongoDB? 233

CZĘŚĆ III. REPLIKACJA 235

10. Konfigurowanie zbioru replik 237

  • Wprowadzenie do replikacji 237
  • Konfigurowanie zbioru replik, część 1. 238
  • Przemyślenia na temat sieci 239
  • Przemyślenia na temat bezpieczeństwa 239
  • Konfigurowanie zbioru replik, część 2. 240
  • Kontrolowanie replikacji 243
  • Modyfikowanie konfiguracji zbioru replik 248
  • Jak zaprojektować zbiór? 250
    • Jak działa wybieranie serwera podstawowego? 252
  • Opcje konfiguracji elementów zbioru replik 253
    • Priorytet 254
    • Ukrywanie serwerów 254
    • Arbiter wyborów 255
    • Tworzenie indeksów 257

11. Komponenty zbioru replik 259

  • Synchronizacja 259
    • Synchronizacja początkowa 261
    • Replikacja 263
    • Jak radzić sobie z przestarzałymi danymi? 263
  • Żądania heartbeat 263
    • Stany elementów zbioru 264
  • Wybory 265
  • Cofanie zmian 266
    • Gdy cofanie operacji się nie powiedzie 269

12. Łączenie aplikacji ze zbiorem replik 271

  • Zachowania związane z łączeniem klienta ze zbiorem replik 271
  • Oczekiwanie na replikację operacji zapisu 273
    • Pozostałe wartości klucza "w" 275
  • Definiowanie gwarancji dla replikacji 275
    • Gwarantowany jeden serwer na centrum danych 275
    • Gwarancja większości nieukrytych serwerów 277
    • Tworzenie innych gwarancji 277
  • Wysyłanie żądań odczytu do serwerów wtórnych 278
    • Problemy ze spójnością danych 278
    • Problemy z obciążeniem serwerów 279
    • Kiedy warto korzystać z serwerów wtórnych do odczytywania danych 280

13. Administracja 283

  • Uruchamianie serwerów w trybie samodzielnym 283
  • Konfiguracja zbioru replik 284
    • Tworzenie zbioru replik 284
    • Zmienianie serwerów w zbiorze 285
    • Tworzenie większych zbiorów 285
    • Wymuszanie rekonfiguracji 286
  • Manipulowanie stanem serwera 286
    • Przekształcanie serwera podstawowego we wtórny 287
    • Zapobieganie wyborom 287
  • Monitorowanie replikacji 287
    • Odczytywanie statusu 288
    • Wizualizacja grafu replikacji 291
    • Pętle replikacji 292
    • Wyłączanie chainingu 292
    • Wyliczanie opóźnień 293
    • Zmiana wielkości protokołu operacji 294
    • Tworzenie indeksów 295
    • Replikacja budżetowa 296

CZĘŚĆ IV. SHARDING 299

14. Wprowadzenie do shardingu 301

  • Czym jest sharding? 301
    • Komponenty klastra 302
  • Sharding w klastrze jednoserwerowym 303

15. Konfigurowanie shardingu 313

  • Kiedy stosować sharding? 313
  • Uruchamianie serwerów 314
    • Serwery konfiguracji 314
    • Procesy mongos 315
    • Tworzenie sharda ze zbioru replik 316
    • Zwiększanie pojemności 319
    • Dzielenie danych 320
  • W jaki sposób MongoDB kontroluje dane klastra? 320
    • Zakresy kawałków 321
    • Dzielenie kawałków 323
  • Równoważenie obciążeń 325
  • Zestawienia 326
  • Strumienie zmian 326

16. Wybieranie klucza shardingu 329

  • Mierzenie sposobu używania kolekcji 329
  • Rozrysowywanie rozdziału danych 330
    • Rosnące klucze shardingu 330
    • Klucze shardingu o losowym rozkładzie 333
    • Klucze shardingu zależne od lokalizacji 335
  • Strategie kluczy shardingu 336
    • Haszowany klucz shardingu 336
    • Haszowane klucze shardingu dla systemu GridFS 338
    • Strategia węża strażackiego 338
    • Hotspoty 339
  • Reguły i wskazówki dotyczące kluczy shardingu 341
    • Ograniczenia kluczy shardingu 341
    • Kardynalność kluczy shardingu 343
  • Kontrolowanie rozdziału danych 343
    • Używanie klastra z wieloma bazami danych i kolekcjami 343
    • Sharding manualny 345

17. Administrowanie shardingiem 347

  • Sprawdzanie aktualnego stanu 347
    • Przeglądanie podsumowania za pomocą metody sh.status() 347
    • Przeglądanie informacji o konfiguracji 349
  • Kontrolowanie połączeń sieciowych 355
    • Pobieranie statystyk dotyczących połączeń 355
    • Ograniczanie liczby połączeń 362
  • Administrowanie serwerem 363
    • Dodawanie serwerów 363
    • Zmienianie serwerów w shardzie 363
    • Usuwanie sharda 364
  • Równoważenie danych 367
    • Proces równoważący 367
    • Zmiana wielkości kawałka 368
    • Przenoszenie kawałków 369
    • Wielkie kawałki 371
    • Odświeżanie konfiguracji 374

CZĘŚĆ V. ADMINISTROWANIE APLIKACJĄ 375

18. Kontrolowanie działania aplikacji 377

  • Przeglądanie aktualnych operacji 377
    • Wyszukiwanie problematycznych operacji 380
    • Zatrzymywanie operacji 380
    • Fałszywe alarmy 381
    • Zapobieganie powstawaniu fantomowych operacji 381
  • Używanie profilera systemowego 382
  • Wyliczanie wielkości 385
    • Dokumenty 385
    • Kolekcje 386
    • Bazy danych 390
  • Używanie narzędzi mongotop i mongostat 391

19. Wprowadzenie do bezpieczeństwa MongoDB 395

  • Uwierzytelnianie i autoryzacja 395
    • Mechanizmy uwierzytelniania 395
    • Autoryzacja 396
    • Stosowanie certyfikatów X.509 do uwierzytelniania serwerów i klientów 398
  • Samouczek uwierzytelniania i szyfrowania komunikacji w MongoDB 400
    • Tworzenie centrum certyfikacji 400
    • Generowanie i podpisywanie certyfikatów serwerów 405
    • Generowanie i podpisywanie certyfikatów klientów 406
    • Uruchamianie zbioru replik bez włączonego uwierzytelniania i autoryzacji 406
    • Tworzenie użytkownika administracyjnego 407
    • Ponowne uruchomienie zbioru replik z włączonym uwierzytelnianiem i autoryzacją 408

20. Trwałość danych 411

  • Trwałość danych na poziomie serwera dzięki mechanizmowi księgowania 411
  • Trwałość danych na poziomie klastra dzięki opcjom "write concern" 413
    • Opcje "w" i "wtimeout" 413
    • Używanie opcji "j" w dokumencie writeConcern 414
  • Trwałość danych na poziomie klastra dzięki opcjom "read concern" 415
  • Trwałość danych w transakcjach dzięki opcjom "write concern" 415
  • Czego MongoDB nie gwarantuje? 416
  • Poszukiwanie uszkodzeń danych 417

CZĘŚĆ VI. ADMINISTROWANIE SERWEREM 419

21. Konfigurowanie MongoDB w środowisku produkcyjnym 421

  • Uruchamianie z wiersza poleceń 421
    • Konfiguracja zapisana w pliku 425
  • Zatrzymywanie serwera MongoDB 426
  • Bezpieczeństwo 426
    • Szyfrowanie danych 427
    • Połączenia SSL 428
  • Protokołowanie 428

22. Monitorowanie MongoDB 431

  • Monitorowanie wykorzystania pamięci 431
    • Wprowadzenie do pamięci komputerów 431
    • Kontrolowanie wykorzystania pamięci 432
    • Kontrolowanie liczby błędów stron 433
    • Parametr I/O wait 435
  • Wyliczanie wielkości zbioru roboczego 435
    • Kilka przykładów zbiorów roboczych 437
  • Kontrolowanie wydajności 437
  • Kontrolowanie wolnej przestrzeni na dysku 439
  • Monitorowanie procesu replikacji 439

23. Tworzenie kopii zapasowych 443

  • Metody tworzenia kopii zapasowych 443
  • Tworzenie kopii zapasowej serwera 444
    • Migawka systemu plików 444
    • Kopiowanie plików z danymi 447
    • Używanie narzędzia mongodump 449
  • Szczególny przypadek kopii zapasowej zbioru replik 451
  • Szczególny przypadek kopii zapasowej klastra shardów 452
    • Tworzenie kopii zapasowej całego klastra i jej odtwarzanie 453
    • Tworzenie kopii zapasowej pojedynczego sharda i jej odtwarzanie 453

24. Wdrożenia MongoDB 455

  • Projektowanie systemu 455
    • Wybieranie nośników danych 455
    • Zalecane konfiguracje macierzy RAID 456
    • Procesor 457
    • System operacyjny 457
    • Przestrzeń wymiany 458
    • System plików 458
  • Wirtualizacja 459
    • Nadmierne używanie pamięci 459
    • Tajemnicza pamięć 459
    • Problemy z dyskami sieciowymi 459
    • Używanie dysków niesieciowych 461
  • Konfigurowanie ustawień systemowych 461
    • Wyłączanie opcji NUMA 461
    • Opcja readahead 463
    • Wyłączanie opcji THP 464
    • Wybieranie algorytmu planisty dysku 465
    • Wyłączanie śledzenia czasu dostępu 465
    • Modyfikowanie limitów 466
  • Konfigurowanie sieci 467
  • Porządkowanie systemu 469
    • Synchronizowanie zegarów 469
    • Proces OOM killer 469
    • Wyłączanie zadań okresowych 470

A. Instalowanie MongoDB 471

  • Wybieranie wersji 471
  • Instalowanie w systemie Windows 472
    • Instalowanie jako usługa 473
  • Instalowanie w systemach POSIX (Linux i Mac OS X) 473
    • Instalowanie za pomocą menedżera pakietów 474

B. Wewnętrzne elementy MongoDB 475

  • BSON 475
  • Protokół komunikacji 476
  • Pliki danych 476
  • Przestrzenie nazw 478
  • Mechanizm zapisywania danych WiredTiger 478
  • Title: Przewodnik po MongoDB. Wydajna i skalowalna baza danych. Wydanie III
  • Author: Shannon Bradshaw, Eoin Brazil, Kristina Chodorow
  • Original title: MongoDB: The Definitive Guide: Powerful and Scalable Data Storage, 3rd Edition
  • Translation: Wojciech Moch
  • ISBN: 978-83-283-6534-6, 9788328365346
  • Date of issue: 2020-11-23
  • Format: Ebook
  • Item ID: pmodb3
  • Publisher: Helion