Przewodnik po MongoDB. Wydajna i skalowalna baza danych. Wydanie III - ebook
Przewodnik po MongoDB. Wydajna i skalowalna baza danych. Wydanie III - 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!
Spis treści
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
Kategoria: | Bazy danych |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-6534-6 |
Rozmiar pliku: | 5,2 MB |