MongoDB jest zdecydowanie najpopularniejszym wyborem w świecie NoSQL, ponieważ jego rozproszona architektura pozwala na większą skalowalność, a model danych dokumentów zapewnia dużą elastyczność programistom. Prawie każdego roku wydawana jest główna wersja MongoDB, a rok 2018 nie jest wyjątkiem. MongoDB 4.0 został wydany w lipcu 2018 r., a po nim pojawiły się również inne pomniejsze wydania. Dzięki MongoDB w wersji 4.0 transakcje wielodokumentowe i konwersje typów są teraz obsługiwane. MongoDB wprowadziła nowe narzędzie o nazwie wykresy MongoDB (beta) i dodała obsługę konstruktora potoku agregacji w kompasie MongoDB również w 2018 roku. W tym artykule omówimy kilka ekscytujących funkcji MongoDB, które zostały wydane w 2018 roku.
Transakcje dotyczące wielu dokumentów w ACID
To była najbardziej oczekiwana funkcja w MongoDB. Począwszy od wersji 4.0, wielodokumentowe transakcje acid na zestawach replik są gotowe do produkcji i obsługiwane przez MongoDB. Wszystkie transakcje MongoDB rozszerzają teraz właściwości ACID, co zapewnia integralność danych. Bardzo łatwo jest dodać transakcje kwasowe w każdej aplikacji, która ich potrzebuje i nie wpływają one na inne operacje, które ich nie wymagają. Dzięki obsłudze wielodokumentowych transakcji kwasowych żadna operacja zapisu, która jest wykonywana wewnątrz transakcji, nie będzie widoczna poza transakcją. Oto kilka przydatnych poleceń do dodawania transakcji kwasowych w wielu dokumentach w Twojej aplikacji.
Funkcja | Opis |
---|---|
Session.startTransaction() | Rozpocznij nową transakcję |
Session.commitTransaction() | Zatwierdza transakcję |
Session.abortTransaction() | Przerywa transakcję |
Oto mały przykład dodawania operacji transakcyjnych za pomocą powłoki Mongo:
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Wszystkie transakcje zapewniają spójny widok danych w jednej lub wielu kolekcjach w bazie danych przy użyciu izolacji migawki. MongoDB nie wypchnie żadnych niezatwierdzonych zmian do węzłów/replik drugorzędnych. Po zatwierdzeniu transakcji wszystkie zmiany zostaną zastosowane do węzłów drugorzędnych.
Istnieje wiele przykładów, w których możemy użyć wielodokumentowych transakcji kwasowych MongoDB, takich jak,
- Przelew środków między kontami bankowymi
- System płatności
- System transakcyjny
- System łańcucha dostaw
- System rozliczeniowy
Rzeczy do rozważenia podczas dodawania transakcji
- MongoDB przerwie każdą transakcję, która trwa dłużej niż 60 sekund.
- W jednej transakcji należy zmienić nie więcej niż 1000 dokumentów. Brak limitu operacji odczytu.
- Każda transakcja powinna mieć rozmiar mniejszy niż 16 MB, ponieważ MongoDb przechowuje każdą transakcję jako pojedynczy wpis w oplogu.
- Kiedy przerwasz jakąkolwiek transakcję, wszystkie zmiany zostaną cofnięte.
Nowe operatory konwersji typów w potoku agregacji
Aby uzyskać wgląd w dane w czasie rzeczywistym i pisać złożone zapytania, programiści MongoDB zazwyczaj wolą tworzyć potok agregacji. W wersji MongoDB 4.0 dodano kilka nowych operatorów konwersji typu agregacji do odpytywania danych bez czyszczenia poszczególnych pól.
Operator agregacji | Opis |
---|---|
$konwertuj | Konwertuje wartość na określony typ |
$toDate | Konwertuje wartość na datę |
$toDecimal | Konwertuje wartość na dziesiętny |
$toDouble | Konwertuje wartość na Double |
$toLong | Konwertuje wartość na długą |
$toInt | Konwertuje wartość na liczbę całkowitą |
$toObjectId | Konwertuje wartość na ObjectId |
$toString | Konwertuje wartość na ciąg |
$ltrim | Usuń niepotrzebne znaki z początku ciągu |
$rtrim | Usuń niepotrzebne znaki z końca ciągu |
$przytnij | Usuń niepotrzebne znaki z obu stron ciągu |
Rozszerzona funkcjonalność strumieni zmian
W wersji 3.6 wprowadzono funkcjonalność strumieni zmian, która zapewnia aktualizacje zmian danych w czasie rzeczywistym bez skomplikowanych ustawień. W wersji 4.0 strumienie zmian mogą śledzić zmiany całej bazy danych lub klastra zamiast tylko jednej kolekcji. Oprócz tego teraz strumienie zmian zwracają również znacznik czasu klastra powiązany ze zdarzeniem, co może być pomocne dla aplikacji serwerowych.
Szybsze migracje danych
Gdy baza danych jest podzielona na fragmenty w klastrze, elastyczne dodawanie i usuwanie węzłów z klastra podzielonego na fragmenty może czasami być czasochłonne. Sharded cluster balancer, który jest odpowiedzialny za dystrybucję danych we wszystkich shardach, został znacznie uaktualniony w wersji 4.0. Teraz może zakończyć migrację danych o 40% szybciej.
Nieblokujące odczyty dodatkowe
Wcześniej MongoDB używał do blokowania wszystkich odczytów pomocniczych, gdy wpisy oplog były stosowane do węzłów pomocniczych. To powodowało zmienne opóźnienie odczytów wtórnych. Od MongoDB 4.0 odczyty pomocnicze stały się nieblokujące ze względu na zwiększoną przepustowość zestawu replik i ulepszone opóźnienia odczytu.
Konstruktor potoku agregacji w kompasie
Kompas MongoDB to narzędzie graficzne dla MongoDB do wizualizacji i wyszukiwania danych. W tym roku kompas MongoDB otrzymał nową funkcję potoku agregacji. Zapewnia wizualny edytor zapytań do budowania wieloetapowych potoków agregacji. Oto jego migawka:
Narzędzie do tworzenia zapytań agregujących w programie CompassOprócz tej funkcji, compass może teraz eksportować Twoje zapytania do dowolnego wybranego przez Ciebie natywnego języka kodu.
Wykresy MongoDB
MongoDB Charts to nowe narzędzie, które umożliwia użytkownikowi szybkie tworzenie wizualizacji danych MongoDB w czasie rzeczywistym. To narzędzie jest zbudowane dla modelu danych dokumentu z obsługą obsługi typów, redukcji tablic i dokumentów zagnieżdżonych. To narzędzie pozwala użytkownikowi tworzyć kokpity wykresów i udostępniać je innym użytkownikom. Wykresy MongoDB są teraz w pełni zintegrowane z Atlasem MongoDB.
Inne nowe funkcje MongoDB
- MongoDB Stitch:bezserwerowa platforma do tworzenia aplikacji klienckich, która może bezpiecznie uzyskiwać dostęp do usług Mongo.
- MongoDB Kubernetes:Do wdrażania MongoDB w klastrze Kubernetes.
- MongoDB Mobile:zapewnia elastyczność i moc MongoDB w kompaktowej formie, dzięki czemu można go używać w urządzeniach IOT.
- Usługa monitorowania MongoDB w chmurze:aby bezpłatnie przesyłać metadane monitorowania do chmury monitorowania MongoDB.
Przyszłość MongoDB
MongoDB planuje również wprowadzić kilka nowych funkcji w wersji 4.2, która obejmuje
- Bardziej rozbudowany silnik WiredTiger
- Menedżer transakcji
- Transakcje w ramach wdrożenia podzielonego na fragmenty
- Globalne odczyty punktu w czasie