MongoDB 4.4 (obecnie w wersji beta) jest wprowadzany z głównym planem uwzględniania sugestii programistów ze społeczności MongoDB . Ta wersja została wydana, aby zwiększyć zdolność bazy danych do działania w wygodnej i niezawodnej skali, dlatego została opracowana zgodnie z zasadą „inżynierii zorientowanej na użytkownika”, aby umożliwić jej dostarczanie wielu ulepszonych funkcji.
Ulepszone funkcje w MongoDB 4.4
Zabezpieczone odczyty
Router zapytań MongoDB wysyła żądania odczytu równolegle do wielu zestawów replik, a wyniki danych z najbardziej wydajnego węzła są zwracane, co zmniejsza opóźnienie aplikacji.
Definiowalne klucze wspólne
Dodawanie przyrostków do klucza fragmentu po zmodyfikowaniu dystrybucji danych podczas procesu skalowania.
Odczyty lustrzane
Jest to funkcja, która wstępnie podgrzewa pamięć podręczną replik wtórnych, aby ograniczyć następstwa prawyborów, które mogą wynikać z planowanej konserwacji lub przestojów.
Ulepszenia agregacji
Ulepszenie agregacji obejmuje różne ulepszenia, w tym definiowanie i konfigurowanie wyrażeń agregacji, łączenie danych z wielu kolekcji mongo w jeden zestaw wyników, manipulację ciągami i nowe operatory w obsłudze tablic. Oto niektóre z ulepszeń:
$out
Operacja $out została ulepszona, aby wyprowadzać wyniki kolekcji do różnych baz danych, w przeciwieństwie do wcześniejszej wersji, która mogła wyprowadzać tylko kolekcję w tej samej bazie danych, co agresja.
$indexStats
$indexStats ma nowe dane wyjściowe pól w MongoDB 4.4, które zawierają pola:
budynek | Jest to flaga logiczna, która wskazuje budowany indeks. |
specyfikacja | Dokument specyfikacji dla każdego indeksu |
odłamek | Konkretna nazwa fragmentu, jeśli jest wymagana |
$scal
W MongoDB 4.4 $merge zostało ulepszone do wyświetlania tej samej kolekcji, która jest aktualizowana. Dodatkowo można również wypisać w kolekcji, która pojawia się w potoku, jak $lookup.
Zmiany $planCacheStats
stan $planCacheStats został ulepszony, aby uruchamiać zarówno instancje mongod, jak i mongos w MongoDB 4.4. Co więcej, $planCacheSTats ma nowe pole znane jako pole hosta podczas uruchamiania mongo. PlanCache.list() to opakowanie dla etapu agregacji $planCacheStats.
Zmiany $collStats
$collStats został utworzony, aby akceptować statystyki exec zapytania podczas dokumentacji rozszerzania. Ponadto skanowanie kolekcji jako pola o następującym opisie;
Nazwa pola | Opis |
bez ogona | Jest to 64-bitowa liczba całkowita, która wykonuje skanowanie kolekcji na kilku zapytaniach, które nie używają kursora z możliwością śledzenia. |
łącznie | Total to zbiór zapytań wykonanych w skanowaniu kolekcji, który nie używa kursora z możliwością śledzenia. |
$unionWith Aggregation
MongoDB dodał $unionWith, funkcję, która ujednolica zestawy kolekcji, to znaczy łączy wyniki potoku z kilku kolekcji w jeden zestaw.
$unionWith Składnia
$unionWith ma następującą ogólną składnię:
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith ma uproszczoną wersję składni, która jest używana do dołączania wszystkich dokumentów z kolekcji:
{ $unionWith: "<collection>" } // include all documents from the specified collection
Agregacja $accumulator
$accumulator to kolejna nowa funkcja w MongoDB 4.4, która określa niestandardowy operator akumulatora. Akumulatory to operatory, które nie zmieniają stanu w miarę postępu dokumentów w potoku. Możesz użyć operatora $accumulator do wykonania funkcji JavaScript, które nie są obsługiwane przez MongoDB. $accumulator znajduje się w następujących trzech etapach potoku:
- Etap $bucket:Wyprowadza tylko dokumenty zawierające nie mniej niż jeden dokument wejściowy.
- Etap grupy $:Wprowadza dokumenty według określonego _id i wyprowadza dokument dla każdej konkretnej grupy
- Etap $bucketAuto:sortuje wpisy dokumentów według określonych numerów grup, znanych jako segmenty.
Składnia
Składnia $accumulator jest następująca:
{ $accumulator:{
init: <code>,
initArgs: <array expression>, // Optional
accumulate: <code>,
accumulateArgs: <array expression>,
merge: <code>,
finalize: <code>, // Optional
lang: <string>
}}
$function Agregacja
Agregacja $function definiuje funkcję agregującą w JavaScript.
Operator funkcji $ może być użyty do zdefiniowania funkcji do używania zachowań, które nie są obsługiwane przez MongoDB
Składnia funkcji $ jest następująca:
{
$function: {
body: <code>,
args: <array expression>,
lang: "js"
}
}
Inne funkcje zawarte w najnowszej wersji MongoDB 4.4 to:problemy związane z zapisem, odczyty globalne, replikacja strumienia, początkowa synchronizacja z możliwością wznowienia i złożony fragment zaszyfrowany.
Co nowego w zestawach replik MongoDB?
Wznowienie początkowej synchronizacji
MongoDB 4.4 ma funkcję, która próbuje wznowić przerwany proces synchronizacji.
Replikacje strumieniowe
W poprzednich wersjach MongoDB serwery pomocnicze gromadziły partie oploga na podstawie żądań wystosowanych do synchronizacji ze źródła. W MongoDB 4.4 procesy synchronizacji ze źródeł będą wysyłać ciągłe strumienie wpisów oplog do wtórnych procesów synchronizacji.
Katalog wycofywania
Z MongoDB 4.4 podczas przywracania katalog kolekcji otrzymuje nazwę zgodną z identyfikatorem UUID kolekcji i przestrzenią nazw kolekcji.
Minimalny okres przechowywania Oplog
Od MongoDB 4.4 można określić najmniejszą liczbę godzin, przez jaką chcesz zachować wpis oplog.
Zmiany ponownej konfiguracji zestawu replik
MongoDB 4.4 posiada polecenie o nazwie replSetReconfig, które umożliwia dodanie lub usunięcie nie więcej niż jednego głosującego na raz. Kolejną nowością w MongoDB 4.4 są zmiany w replSetGetConfig. MongoDB 4.4 replSetConfig może określić nowy status zobowiązania opcji.
Złożone zaszyfrowane klucze odłamkowe
Począwszy od MongoDB 4.4, możesz podzielić kolekcję za pomocą złożonego klucza fragmentu z pojedynczym zaszyfrowanym polem. Przed wersją 4.4 MongoDB nie obsługiwał złożonych kluczy fragmentów z polem zaszyfrowanym. Złożone fragmentowanie zaszyfrowane obsługuje funkcje, takie jak fragmentowanie stref, w których przedrostek (tj. pierwsze) pole lub pola nie zaszyfrowane obsługują zakresy stref, podczas gdy pole zaszyfrowane obsługuje większą dystrybucję podzielonych danych. Na przykład następująca operacja fragmentuje kolekcję na złożonym zaszyfrowanym kluczu fragmentu obsługującym fragmentowanie strefowe:
sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)
Ogólne ulepszenia klastrów podzielonych na fragmenty
Kontrole spójności indeksu
W MongoDB 4.4 serwer konfiguracyjny zasadniczo domyślnie sprawdza nieprawidłowości w plikach we fragmentach pod kątem kolekcji podzielonych na fragmenty. Polecenie serverStatus zwraca pole shardedIndexConsistency do zgłaszania nieprawidłowości w plikach podczas uruchamiania na serwerze konfiguracji niezbędne. W MongoDB 4.4 będziesz mieć więcej niż jedną operację removeShard z góry. W poprzednich adaptacjach removeShard zwraca błąd w przypadku wcześniejszego wystąpienia kolejnej operacji removeShard.
Limit klucza odłamkowego
Począwszy od wersji 4.4, MongoDB usuwa ograniczenie 512 bajtów na oszacowanie klucza odłamkowego. W przypadku MongoDB 4.2 i wcześniejszych klucz fragmentu nie może przekroczyć 512 bajtów.
Ulepszone odświeżanie pamięci podręcznej katalogu
W MongoDB 4.4, w przypadku starego fragmentu, pamięć podręczna katalogu przywraca go, aby uzyskać fragment, który ma ten fragment.
MongoDB 4.4 ma parametr enableFinerGrainedCatalogCacheRefresh, który jest parametrem utrudniającym przywrócenie pamięci podręcznej katalogu. enableFinerGrainedCatalogCacheRefresh koncentruje się na fragmencie i korzysta z bardziej doświadczonego zachowania pamięci podręcznej katalogu.
Parametr enableFinerGrainedCatalogCacheRefresh domyślnie ma wartość true.
Ulepszenia zapytań i dzielenia na fragmenty w MongoDB 4.4
MongoDB ma tradycję ciągłego skalowania poprzez dystrybucję danych do wielu węzłów lub poprzez sharding. Klucz fragmentu przechowuje dokument, ponieważ klucz fragmentu danego dokumentu można zmienić tylko przed przypisaniem, a nie po przypisaniu.
Ewolucja MongoDB sprawiła, że ponowna kalibracja fragmentów dostarczonej zawartości w MongoDB stała się trudna. Aby umożliwić ponowne równoważenie, w wersji MongoDB 4.4 wprowadzono modyfikowalne klucze fragmentów, które umożliwiają modyfikowanie kluczy fragmentów dokumentów.
Redefiniowalne klucze fragmentu umożliwiają zmianę kluczy fragmentu dokumentów poprzez umożliwienie dokumentom należącym do fragmentu zmiany ich wymagań, a tym samym dynamiczne ponowne zrównoważenie.
Zrównoważenie może odbywać się programowo lub agresywnie, w zależności od tego, jak użytkownik ogląda je w czasie.
Inne ulepszenia
Agregacja kolekcji MongoDB, gdy różne zestawy danych pozwalają na zapytania za pośrednictwem Unii. Taka zdolność umożliwia traktowanie danych w inny sposób, a nie jako oddzielny ETL.
Dane mogą być przenoszone i konsolidowane na serwerze oraz przekazywane do klienta, a proces nie wymaga wielu podróży w celu zarządzania pełnym wynikiem.
Funkcja $ należy do agregacji kostiumowej, która umożliwia wykonywanie bardziej złożonych agregacji po stronie serwera i usprawnia proces przetwarzania danych.
W wydanej MongoDB 4.4 pojawiają się różne wersje procedur kostiumowych. Funkcje kostiumów zostały połączone ze zwiększoną wydajnością wersji beta. Niemniej jednak funkcja $ jest wywoływana tylko wtedy, gdy inne przebrane i wbudowane funkcje nie są wystarczające w trwającym procesie.
Język zapytań MongoDB i sterowniki
- Wyglądy niestandardowej agregacji mają właścicieli funkcji rozszerzających MongoDB w ramach potoku wykonywania agregacji.
- Union Aggregation ma bardziej dogłębną analizę i eksplorację poprzez łączenie danych z wielu kolekcji w potok Union Aggregation.
- Problemy z zapisem i globalny odczyt w celu zapewnienia trwałości zapisu i skonfigurowania izolacji odczytu klastra.
- Szybkie sterowniki i nowa rdza
- Skalowana elastyczność i wydajność
- Replikacja strumieniowa i jednoczesne indeksowanie zmniejszają opóźnienie repliki w celu udostępniania danych użytkownikom w MongoDB 4.4.
- Wyniki są zwracane tak szybko, jak to możliwe dzięki Hedged Reads, minimalizującym opóźnienia p65 i p99 poprzez przesłanie żądania odczytu do wielu replik danych w MongoDB.
- Zachowywanie lokalizacji danych jako złożone klucze zaszyfrowane są rozmieszczone równomiernie w różnych fragmentach za pomocą ich klucza fragmentu.
- Brak systemu w centrum podczas definiowania i poprawiania klucza fragmentu w dowolnym momencie.
Odporność i bezpieczeństwo
- Uwierzytelnianie w MongoDB 4.4 beta jest ponad 50% szybsze i TLS 1.3.
- Połączenie z MongoDB Atlas wymaga uwierzytelniania AWS IASM, które upraszcza zabezpieczenia natywne dla chmury poprzez ponowne wykorzystanie tymczasowych poświadczeń Amazon IAM i istniejących zwykłych.
- Odzyskuje węzły przez wznawianie wstępnej synchronizacji, która ułatwia proces skalowania w poziomie przez dodanie nowych replik. Zmniejszony wpływ prawyborów dzięki odczytom lustrzanym, które ogrzewają pamięci podręczne drugorzędnych po planowanej konserwacji lub wyłączeniu.
Wnioski
MongoDB 4.4 umożliwił lepsze działanie nierelacyjnej bazy danych opartej na dokumentach dzięki poprawie funkcji wydajności w swoim systemie. Ulepszenia umożliwiły szybsze aplikacje analityczne, operacyjne i transakcyjne z MongoDB 4.4.
MongoDB 4.4 pozwolił również na Elastyczność przy definiowaniu dystrybucji danych jako wymagań zmieniających się operacji. Ulepszenia wprowadzone w MongoDB 4.4 sprawiły, że jest bardziej niezawodny pod względem opóźnień, wyrafinowania i kontroli bezpieczeństwa podczas korzystania z Mongo Atlas, czyli chmury.