Dostępny zorientowany na dokumenty DBMS MongoDB 5.0

Zaprezentowano wydanie zorientowanego na dokumenty systemu DBMS MongoDB 5.0, który zajmuje niszę pomiędzy szybkimi i skalowalnymi systemami obsługującymi dane w formacie klucz/wartość a relacyjnymi systemami DBMS, które są funkcjonalne i łatwe do tworzenia zapytań. Kod MongoDB napisany jest w C++ i rozpowszechniany na licencji SSPL, która opiera się na licencji AGPLv3, ale nie jest otwarta, gdyż zawiera dyskryminujący wymóg dostarczenia w ramach licencji SSPL nie tylko samego kodu aplikacji, ale także źródła kod wszystkich komponentów zaangażowanych w świadczenie usługi w chmurze.

MongoDB obsługuje przechowywanie dokumentów w formacie podobnym do JSON, posiada dość elastyczny język generowania zapytań, potrafi tworzyć indeksy dla różnych przechowywanych atrybutów, sprawnie zapewnia przechowywanie dużych obiektów binarnych, obsługuje logowanie operacji zmiany i dodawania danych do bazy danych, potrafi działa zgodnie z paradygmatem Map/Reduce, wspiera replikację i budowę konfiguracji odpornych na uszkodzenia.

MongoDB posiada wbudowane narzędzia umożliwiające sharding (dystrybucję zbioru danych pomiędzy serwerami w oparciu o określony klucz), w połączeniu z replikacją, co pozwala na zbudowanie poziomo skalowalnego klastra pamięci masowej, w którym nie ma pojedynczego punktu awarii (awaria dowolnego węzła nie ma wpływu na działanie bazy danych), automatyczne odtwarzanie po awarii i przeniesienie obciążenia z uszkodzonego węzła. Rozbudowa klastra lub konwersja jednego serwera w klaster odbywa się bez zatrzymywania bazy danych, po prostu dodając nowe maszyny.

Cechy nowego wydania:

  • Dodano kolekcje danych w postaci szeregów czasowych (kolekcje szeregów czasowych), zoptymalizowane do przechowywania wycinków wartości parametrów zarejestrowanych w określonych odstępach czasu (czas i zbiór wartości odpowiadający temu czasowi). Konieczność przechowywania takich danych pojawia się w systemach monitoringu, platformach finansowych, systemach odpytywania stanów czujników. Praca z danymi szeregów czasowych odbywa się jak przy zwykłych zbiorach dokumentów, ale indeksy i sposób ich przechowywania są zoptymalizowane z uwzględnieniem odniesienia czasowego, co może znacznie zmniejszyć zużycie miejsca na dysku, zmniejszyć opóźnienia w wykonywaniu zapytań i umożliwić dane w czasie rzeczywistym analiza.

    MongoDB traktuje takie kolekcje jako zapisywalne, niezmaterializowane widoki zbudowane na wewnętrznych kolekcjach, które po wstawieniu automatycznie grupują dane szeregów czasowych w zoptymalizowanym formacie przechowywania. W takim przypadku każdy zapis czasowy na żądanie traktowany jest jako odrębny dokument. Dane są automatycznie porządkowane i indeksowane według czasu (nie ma potrzeby jawnego tworzenia indeksów czasowych).

  • Dodano obsługę operatorów okien (funkcji analitycznych), które umożliwiają wykonanie akcji na określonym zestawie dokumentów w kolekcji. W przeciwieństwie do funkcji agregujących, funkcje okna nie zwijają zgrupowanego zestawu, lecz agregują na podstawie zawartości „okna”, które zawiera jeden lub więcej dokumentów ze zbioru wyników. Aby manipulować podzbiorem dokumentów, zaproponowano nowy etap $setWindowFields, za pomocą którego można na przykład określić różnice między dwoma dokumentami w kolekcji, obliczyć rankingi sprzedaży i analizować informacje w złożonych szeregach czasowych.
  • Dodano obsługę wersjonowania API, która pozwala powiązać aplikację z określonym stanem API i wyeliminować ryzyko związane z możliwym naruszeniem kompatybilności wstecznej podczas migracji do nowych wydań DBMS. Wersjonowanie API oddziela cykl życia aplikacji od cyklu życia DBMS i pozwala programistom na wprowadzanie zmian w aplikacji, gdy istnieje potrzeba użycia nowych funkcji, a nie podczas migracji do nowej wersji DBMS.
  • Dodano obsługę mechanizmu Live Resharding, który umożliwia zmianę kluczy fragmentu używanych do segmentacji na bieżąco, bez zatrzymywania systemu DBMS.
  • Rozszerzono możliwości szyfrowania pól po stronie klienta (Szyfrowanie na poziomie pola po stronie klienta). Można teraz rekonfigurować filtry audytu i obracać certyfikaty x509 bez zatrzymywania systemu DBMS. Dodano obsługę konfigurowania zestawu szyfrów dla protokołu TLS 1.3.
  • Zaproponowano nową powłokę wiersza poleceń MongoDB Shell (mongosh), która jest rozwijana jako odrębny projekt, napisany w języku JavaScript z wykorzystaniem platformy Node.js i dystrybuowany na licencji Apache 2.0. MongoDB Shell umożliwia łączenie się z DBMS, zmianę ustawień i wysyłanie zapytań. Obsługuje inteligentne autouzupełnianie przy wprowadzaniu metod, poleceń i wyrażeń MQL, podświetlanie składni, pomoc kontekstową, analizowanie komunikatów o błędach oraz możliwość rozszerzania funkcjonalności poprzez dodatki. Stare opakowanie CLI „mongo” jest przestarzałe i zostanie usunięte w przyszłej wersji.
    Dostępny zorientowany na dokumenty DBMS MongoDB 5.0
  • Dodano nowe operatory: $count, $dateAdd, $dateDiff, $dateSubtract, $sampleRate i $rand.
  • Zapewnia użycie indeksów podczas używania operatorów $eq, $lt, $lte, $gt i $gte w wyrażeniu $expr.
  • Polecenia zagregowane, find, findAndModify, update, Delete oraz metody db.collection.aggregate(), db.collection.findAndModify(), db.collection.update() i db.collection.remove() obsługują teraz funkcję „let ” opcja zdefiniowania listy zmiennych, które zwiększają czytelność poleceń poprzez oddzielenie zmiennych od treści żądania.
  • Operacje wyszukiwania, liczenia, rozróżniania, agregowania, mapReduce, listCollections i listIndexes nie są już blokowane, jeśli równolegle działa operacja, która wymaga wyłącznej blokady zbioru dokumentów.
  • W ramach inicjatywy mającej na celu usunięcie niepoprawnych politycznie terminów nazwy poleceń isMaster i metody db.isMaster() zostały przemianowane hello i db.hello().
  • Schemat numeracji wydań został zmieniony i dokonano przejścia na przewidywalny harmonogram wydań. Raz w roku będą wydawane istotne wydania (5.0, 6.0, 7.0), co trzy miesiące wydania pośrednie z nowymi funkcjami (5.1, 5.2, 5.3) oraz, w razie potrzeby, aktualizacje korygujące z poprawkami błędów i lukami w zabezpieczeniach (5.1.1, 5.1.2 .5.1.3, 5.1). Wersje tymczasowe będą zapewniać funkcjonalność dla następnej wersji głównej, tj. MongoDB 5.2, 5.3 i 6.0 zapewnią nowe funkcje w wydaniu MongoDB XNUMX.

Źródło: opennet.ru

Dodaj komentarz