MongoDB je zdaleka nejoblíbenější volbou ve světě NoSQL, protože jeho distribuovaná architektura umožňuje větší škálovatelnost a jeho datový model dokumentů poskytuje vývojářům dobrou flexibilitu. Téměř každý rok vychází hlavní verze MongoDB a rok 2018 není výjimkou. MongoDB 4.0 byl vydán v červenci 2018, následovaly také některé další menší verze. S MongoDB verze 4.0 jsou nyní podporovány transakce s více dokumenty a převody typů. MongoDB představilo nový nástroj nazvaný MongoDB grafy (beta) a přidalo podporu agregačního potrubí stavitele v kompasu MongoDB také v roce 2018. V tomto článku si projdeme některé vzrušující funkce MongoDB, které byly vydány v roce 2018.
Multi-dokumentové ACID transakce
Toto byla nejočekávanější funkce v MongoDB. Počínaje verzí 4.0 jsou transakce s více dokumenty proti sadám replik připraveny k produkci a podporovány MongoDB. Všechny transakce MongoDB nyní rozšiřují vlastnosti ACID, což zajišťuje integritu dat. Je opravdu snadné přidat kyselé transakce v jakékoli aplikaci, která je potřebuje, a neovlivňují jiné operace, které je nevyžadují. S podporou vícedokumentových kyselých transakcí nebude jakákoli operace zápisu, která se provádí uvnitř transakce, viditelná mimo transakci. Zde je několik užitečných příkazů pro přidání vícedokumentových kyselých transakcí do vaší aplikace.
Funkce | Popis |
---|---|
Session.startTransaction() | Zahájit novou transakci |
Session.commitTransaction() | Potvrdí transakci |
Session.abortTransaction() | Zruší transakci |
Zde je malý příklad přidání transakčních operací pomocí Mongo shell:
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()
Všechny transakce poskytují konzistentní pohled na data v jedné nebo více kolekcích v databázi pomocí izolace snímků. MongoDB nebude do sekundárních uzlů/replik vkládat žádné nepotvrzené změny. Jakmile je transakce potvrzena, všechny změny budou aplikovány na sekundární uzly.
Existuje mnoho příkladů, kdy můžeme použít transakce s více dokumenty MongoDB, jako je,
- Převod prostředků mezi bankovními účty
- Platební systém
- Obchodní systém
- Systém dodavatelského řetězce
- Fakturační systém
Co je třeba zvážit při přidávání transakcí
- MongoDB přeruší jakoukoli transakci, která běží déle než 60 sekund.
- V jedné transakci by se nemělo změnit více než 1000 dokumentů. Bez omezení pro operace čtení.
- Jakákoli transakce by měla mít velikost menší než 16 MB, protože MongoDb ukládá jakoukoli transakci jako jednu položku v oplogu.
- Když přerušíte jakoukoli transakci, všechny změny budou vráceny zpět.
Nové operátory konverze typů v agregačním kanálu
Aby vývojáři MongoDB získali přehled o datech a psaní složitých dotazů v reálném čase, obecně dávají přednost vytvoření agregačního kanálu. Ve verzi MongoDB 4.0 byly přidány některé nové konverzní operátory typu agregace pro dotazování na data bez čištění jednotlivých polí.
Operátor agregace | Popis |
---|---|
$convert | Převede hodnotu na zadaný typ |
$toDate | Převede hodnotu na datum |
$toDecimal | Převede hodnotu na desítkovou |
$toDouble | Převede hodnotu na dvojnásobek |
$toLong | Převede hodnotu na Long |
$toInt | Převede hodnotu na celé číslo |
$toObjectId | Převede hodnotu na ObjectId |
$toString | Převede hodnotu na řetězec |
$ltrim | Odstraňte nepotřebné znaky ze začátku řetězce |
$rtrim | Odstraňte nepotřebné znaky z konce řetězce |
$trim | Odstraňte nepotřebné znaky z obou stran řetězce |
Rozšířená funkčnost toků změn
Ve verzi 3.6 byla zavedena funkčnost toků změn, které poskytují aktualizace změn dat v reálném čase bez jakéhokoli složitého nastavování. S verzí 4.0 mohou toky změn nyní sledovat změny celé databáze nebo clusteru namísto pouze jedné kolekce. Kromě toho nyní toky změn také vrací časové razítko clusteru spojené s událostí, což může být užitečné pro serverové aplikace.
Rychlejší migrace dat
Když je vaše databáze rozdělena do celého clusteru, může být elastické přidávání a odebírání uzlů ze sdíleného clusteru někdy časově náročné. Sharded cluster balancer, který je zodpovědný za distribuci dat napříč všemi shardy, dostal ve verzi 4.0 zásadní upgrade. Nyní může dokončit migraci dat o 40 % rychlejším tempem.
Neblokující sekundární čtení
Dříve se MongoDB používal k blokování všech sekundárních čtení, když byly na sekundární uzly aplikovány položky oplog. To způsobovalo proměnnou latenci sekundárních čtení. Od MongoDB 4.0 se sekundární čtení stalo neblokujícím kvůli zvýšené propustnosti sady replik a zlepšeným latencím čtení.
Tvůrce agregačního potrubí v kompasu
Kompas MongoDB je nástroj GUI pro MongoDB pro vizualizaci a dotazování na data. Tento rok dostal kompas MongoDB novou funkci agregačního potrubí. Poskytuje vizuální editor dotazů pro vytváření vícestupňových agregačních kanálů. Zde je jeho snímek:
Tvůrce agregačních dotazů v kompasuKromě této funkce má nyní kompas také možnost exportovat vaše dotazy do libovolného nativního jazyka podle vašeho výběru.
Grafy MongoDB
MongoDB Charts je nový nástroj, který umožňuje uživateli rychle vytvářet vizualizace dat MongoDB v reálném čase. Tento nástroj je vytvořen pro datový model dokumentu s podporou zpracování typů, redukce polí a také vnořených dokumentů. Tento nástroj umožňuje uživateli vytvářet řídicí panely grafů a sdílet je s ostatními uživateli. Grafy MongoDB jsou nyní plně integrovány s Atlasem MongoDB.
Další nové funkce MongoDB
- MongoDB Stitch:Bezserverová platforma pro vývoj klientských aplikací, která má zabezpečený přístup ke službám Mongo.
- MongoDB Kubernetes:Pro nasazení MongoDB v rámci clusteru Kubernetes.
- MongoDB Mobile:Poskytuje flexibilitu a výkon MongoDB v kompaktní podobě, takže jej lze používat v zařízeních IOT.
- MongoDB Monitoring Cloud Service:Bezplatně posílat metadata monitorování do MongoDB monitorovacího cloudu.
Budoucnost MongoDB
MongoDB také plánuje spustit některé nové funkce ve verzi 4.2, která zahrnuje,
- Rozsáhlejší engine WiredTiger
- Správce transakcí
- Transakce v rámci sdíleného nasazení
- Globální bod v čase