MongoDB 6.0: nuove funzionalità per migliorare le applicazioni

La nuova versione di MongoDB fornisce nuove funzionalità sia per migliorare l'efficienza di alcune operazioni sia per aumentare la produttività degli sviluppatori. Passare, quindi, a MongoDB 6 è un'ottima scelta!!!

Share

Reading time: 6 minutes

La versione 6 di MongoDB è stata annunciata al MongoDB World 2022 a giugno 2022. Disponibile ormai da più di 6 mesi e quindi stabilizzata con le nuove release, possiamo affermare che è un prodotto maturo. Ma quali sono le funzionalità introdotte dalla nuova versione? L’obiettivo principale di MongoDB 6.0 è la semplificazione: invece di costringervi a ricorrere mediante software esterni o strumenti di terze parti, le nuove funzionalità di MongoDB vi permettono di sviluppare, iterare, testare e rilasciare applicazioni più rapidamente. L’ultima versione aiuta gli sviluppatori a evitare silos di dati, architetture confuse, perdite di tempo per l’integrazione di tecnologie esterne, SLA mancati e altre opportunità, e la necessità di lavori personalizzati (come le pipeline per l’esportazione dei dati). Scopriamo le principali novità disponibili.

Maggiore supporto per le serie temporali

Le serie temporali rappresentano la fonte primaria e fondamentale delle applicazioni moderne in tantissimi settori, dai servizi finanziari all’e-commerce fino all’Internet Of Things. Se raccolti, elaborati e analizzati correttamente, i dati delle serie temporali forniscono una miniera d’oro di informazioni, dalla crescita degli utenti alle aree di guadagno promettenti, aiutandovi a far crescere il vostro business e a migliorare la vostra applicazione.

Introdotte per la prima volta in MongoDB 5.0, le collezioni di serie temporali offrono un modo per gestire questi carichi di lavoro senza ricorrere all’aggiunta di una tecnologia di nicchia e alla conseguente complessità. Nel loro sviluppo è stato fondamentale superare alcuni ostacoli che caratterizzano i dati delle serie temporali, come il volume elevato, le considerazioni relative allo storage e ai costi e le lacune nella continuità dei dati (causate da interruzioni dei sensori). La loro introduzione è un’alternativa alla modellazione in bucket che potete trovare nel libro “Progettare con MongoDB”, anche se sono due approcci diversi allo stesso problema.

Dalla loro introduzione, le collezioni di serie temporali sono state continuamente aggiornate e migliorate con una serie di rapidi rilasci. Si è iniziato introducendo lo sharding per le collezioni di serie temporali (5.1), prima di introdurre la compressione colonnare (5.2) per ottimizzare lo spazio di storage e infine passare alla densificazione e al riempimento delle lacune (5.3) per consentire di eseguire alcune analisi anche in mancanza di alcuni dati.

A partire dalla versione 6.0, le collezioni di serie temporali includono ora indici secondari e composti sulle misure, migliorando le prestazioni di lettura e aprendo nuovi casi d’uso come la geo-indicizzazione. Collegando le informazioni geografiche ai dati delle serie temporali, è possibile arricchire e ampliare l’analisi per includere scenari che coinvolgono la distanza e la posizione. Ad esempio, è possibile tracciare le fluttuazioni di temperatura dei veicoli refrigerati per le consegne o monitorare il consumo di carburante dei veicoli (navi, aerei, ecc.).

Sono state anche migliorate le prestazioni delle query e le operazioni di ordinamento. Ad esempio, MongoDB è ora in grado di restituire facilmente l’ultimo punto di dati di una serie, invece di scansionare l’intera collezione, per una lettura più veloce. È inoltre possibile utilizzare indici clustered e secondari per eseguire in modo efficiente operazioni di ordinamento su campi di tempo e metadati.

Supporto per la costruzione di architetture event-driven

Con l’avvento di applicazioni come Uber, gli utenti si aspettano esperienze in tempo reale e basate su eventi, come feed di attività, notifiche o recommendation systems. Ma muoversi alla velocità del mondo reale non è facile, perché l’applicazione deve identificare e agire rapidamente sui cambiamenti dei dati.

Introdotti in MongoDB 3.6, i change stream forniscono un’API per trasmettere qualsiasi modifica a un database, a un cluster o a una collezione, senza l’elevato overhead derivante dalla necessità di interrogare l’intero sistema. In questo modo, l’applicazione può reagire automaticamente, generando un messaggio in-app che notifica relativo all’evento di interesse o creando una pipeline per indicizzare i nuovi log man mano che vengono generati.

La release 6.0 di MongoDB arricchisce i change stream, aggiungendo nuove funzionalità. Ora è possibile ottenere lo stato precedente e successivo di un documento modificato, consentendo di inviare le versioni aggiornate di interi documenti, fare riferimento a documenti cancellati e altro ancora. Inoltre, i flussi di modifica supportano le operazioni del linguaggio di definizione dei dati (DDL), come la creazione o l’eliminazione di collezioni e indici.

Nuove query

Le pipeline di aggregazione consentono agli utenti di elaborare più documenti e restituire statistiche e dati aggregati al fine di effettuare analisi anche complesse per estrarre le informazioni di interesse.

MongoDB 6.0 aggiunge ulteriori funzionalità a due operatori chiave, $lookup e $graphlookup, migliorando rispettivamente le JOINS e gli attraversamenti dei grafi. Sia $lookup che $graphlookup offrono ora un supporto completo per le distribuzioni sharded.

Le prestazioni di $lookup sono state ulteriormente migliorate. Ad esempio, se esiste un indice sulla chiave esterna e sono stati confrontati pochi documenti, $lookup può ottenere risultati fino a 10 volte più velocemente rispetto alla versione precedente. Se viene confrontato un numero maggiore di documenti, $lookup sarà due volte più veloce rispetto alle iterazioni precedenti. Se non ci sono indici disponibili (e il join è per query esplorative o ad hoc), allora $lookup produrrà un miglioramento delle prestazioni di ben cento volte.

L’introduzione dello snapshot di read concern e del parametro opzionale atClusterTime consente alle applicazioni di eseguire query analitiche complesse su uno snapshot coerente a livello globale e transazionale dei dati operativi. Anche se i dati cambiano sotto di voi, MongoDB manterrà la coerenza point-in-time dei risultati delle query restituiti agli utenti.

Queste query analitiche point-in-time possono estendersi su più shard con grandi set di dati distribuiti. Con l’instradamento di queste query sui secondari, è possibile isolare i carichi di lavoro delle query analitiche rispetto alle query transazionali, che vengono servite dallo stesso cluster, evitando così un ETL lento, fragile e costoso.

Più operatori per migliorare l’efficienza delle applicazioni

Sono stati introdotti nuovi operatori per aumentare la produttività delle applicazioni demandando più lavoro al database e riducendo, di conseguenza, il tempo necessario a scrivere codice ad-hoc per la manipolazione dei dati.

Ad esempio, è possibile scoprire facilmente i valori più rilevnati nel proprio set di dati con operatori come $maxN , $minN o $lastN. Inoltre, è possibile utilizzare un operatore come $sortArray per ordinare gli elementi di un array direttamente nelle pipeline di aggregazione.

Operazioni più resilienti

Grazie al replica set, MongoDB si è sempre dimostrato robusto ad interruzioni di servizio causato da problemi di rete, software o hardware. La sincronizzazione iniziale è il modo in cui un membro di un replica set ottiene una copia completa dei dati da un membro esistente. Ciò è fondamentale per aggiornare i nodi che hanno copie obsolete dei dati o quando si aggiungono nuovi nodi per migliorare la resilienza, la scalabilità della lettura o la latenza delle query.

MongoDB 6.0 introduce la sincronizzazione iniziale tramite copia di file, che è fino a quattro volte più veloce dei metodi attuali. Questa funzione è però disponibile solo con MongoDB Enterprise Server.

Oltre al miglioramento della sincronizzazione iniziale, MongoDB 6.0 introduce importanti miglioramenti anche a livello di sharding, ossia il meccanismo che consente la scalabilità orizzontale. La dimensione predefinita dei chunk per le collezioni in shard è ora di 128 MB, il che significa meno migrazioni di chunk e maggiore efficienza sia dal punto di vista della rete che dell’overhead interno al livello di routing delle query. Un nuovo comando configureCollectionBalancing permette anche di deframmentare una collezione per ridurre l’impatto del bilanciatore di sharding.

Maggiore sicurezza ed efficienza operativa

MongoDB 6.0 include nuove funzionalità che eliminano la necessità di scegliere tra la sicurezza dei dati e l’efficienza delle operazioni.

Dalla sua introduzione nel 2019, la crittografia a livello di campo lato client (CSFLE) ha aiutato molte organizzazioni a gestire le informazioni sensibili in tutta sicurezza, soprattutto quando migrano una parte maggiore delle loro applicazioni nel cloud pubblico. Con MongoDB 6.0, CSFLE includerà il supporto per qualsiasi fornitore di gestione delle chiavi conforme a KMIP. KMIP è uno standard leader del settore e semplifica l’archiviazione, la manipolazione e la gestione di oggetti crittografici come chiavi di crittografia, certificati e altro.

Il supporto di MongoDB per l’auditing consente agli amministratori di tracciare l’attività del sistema per le implementazioni con più utenti, garantendo la responsabilità delle azioni intraprese nel database. Sebbene sia importante che i revisori possano ispezionare i log di audit per valutare le attività, il contenuto di un log di audit deve essere protetto da accessi non autorizzati in quanto può contenere informazioni sensibili. Per questo motivo, la nuova versione consente agli amministratori di comprimere e crittografare gli eventi di audit prima che vengano scritti su disco, sfruttando il proprio sistema di gestione delle chiavi conforme a KMIP. La crittografia dei log protegge la riservatezza e l’integrità degli eventi. Se i log si propagano attraverso sistemi centrali di gestione dei log o SIEM, rimangono crittografati.

Inoltre, la crittografia interrogabile è ora disponibile. Questa tecnologia pionieristica consente di eseguire query espressive su dati crittografati, decodificandoli solo quando vengono resi disponibili all’utente. In questo modo si garantisce che i dati rimangano criptati per tutto il loro ciclo di vita e che le query più ricche possano essere eseguite in modo efficiente senza dover prima decifrare i dati.

Ricerca più fluida

Sono state introdotte anche alcune funzionalità accessorie per rendere la ricerca più fluida.

La prima è rappresentata dal support per le collezioni sharded delle facet di Atlas Search, che consentono di filtrare e contare velocemente i risultati, in modo che gli utenti possano facilmente restringere le ricerche e navigare verso i dati di cui hanno bisogno.

Un’altra importante novità è la sincronizzazione da cluster a cluster, che consente di migrare facilmente i dati nel cloud, di creare ambienti di sviluppo, test o analisi e di supportare i requisiti di conformità e gli audit. Cluster-to-Cluster Sync fornisce una sincronizzazione continua e unidirezionale dei dati di due cluster MongoDB in qualsiasi ambiente, sia esso ibrido, Atlas, on-premises o edge. È possibile, inoltre, controllare e monitorare il processo di sincronizzazione in tempo reale, avviando, arrestando, riprendendo o addirittura invertendo la sincronizzazione secondo le necessità.

Ricapitolando, le nuove funzionalità di MongoDB 6.0 mirano a facilitare lo sviluppo e le operazioni, a rimuovere i silos di dati e a eliminare la complessità che accompagna l’uso non necessario di tecnologie di nicchia separate. Ciò significa meno lavoro personalizzato, risoluzione dei problemi e architetture confuse, e più tempo per concentrarsi sulle attività del proprio business.

More To Explore

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte2]

Gradio è una libraria python che ci permette di creare applicazioni web in modo veloce e intuitivo per i nostri modelli di machine learning e AI. Le nostre applicazioni richiedono sempre un’interazione con l’utente e una personalizzazione del layout. Scopriamo, mediante degli esempi, come migliorare le nostre applicazioni.

Intelligenza artificiale

Gradio: applicazioni web in python per AI [parte1]

Scrivere applicazioni web per i nostri modelli di machine learning e/o di intelligenza artificiale può richiedere molto tempo e competenze che non sono in nostro possesso. Per snellire e velocizzare questo compito ci viene in aiuto Gradio, una libreria Python pensata per creare applicazioni web con poche righe di codice. Scopriamo le sue funzionalità base con alcuni esempi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Design with MongoDB

Design with MongoDB!!!

Buy the new book that will help you to use MongoDB correctly for your applications. Available now on Amazon!