Cosa c’è di nuovo in MongoDB 5.0?

Illustrazione che mostra il logo MongoDB

L’ultima major release di MongoDB, v5.0, è stato lanciato il 13 luglio 2021. Questa iterazione del database orientato ai documenti aggiunge nuove funzionalità e miglioramenti, nonché una cadenza di rilascio rivista per le versioni future.

Dati delle serie temporali

Una delle aggiunte alle funzionalità principali è il supporto di prima classe per i dati delle serie temporali. Mentre alcuni sviluppatori hanno già costruito il proprio strumenti per serie temporali intorno a MongoDB, avere tipi di dati di serie temporali disponibili in modo nativo aiuterà molti altri a iniziare.

Una “serie temporale” si riferisce a qualsiasi tipo di dati in cui i record vengono creati in sequenza in momenti diversi. I casi d’uso comuni includono i flussi di misurazione dei sensori e i registri della cronologia delle transazioni, in cui ogni record corrisponde direttamente a un momento particolare.

Le nuove raccolte di serie temporali forniscono un archivio dati speciale ottimizzato per i dati con queste caratteristiche. I valori verranno compressi in una struttura di schema univoca quando vengono mantenuti su disco, fornendo una migliore indicizzazione, un utilizzo dell’archiviazione più efficiente e un carico del server ridotto. Puoi impostare la granularità dei dati temporali in secondi, minuti o ore. È anche possibile far scadere automaticamente i dati dopo un determinato numero di secondi.

db.createCollection(
    "measurements",
    {
        timeseries: {
            timeField: "timestamp",
            granularity: "minutes"
        },
        expireAfterSeconds: 3600
    }
);

Lo snippet sopra definisce una raccolta di serie temporali chiamata measurements. La sua granularità è impostata su minuti. I documenti nella raccolta verranno eliminati automaticamente dopo un’ora.

MongoDB 5.0 fornisce supporto integrato anche per l’interrogazione e la manipolazione dei dati delle serie temporali. Puoi estrarre medie mobili basate sul tempo che tengono traccia delle tendenze temporali con un codice minimo personale.

db.measurements.aggregate([
    {
        $project: {
            date: {
                $dateToParts: {date: "$timestamp"}
            }
        },
        $group: {
            _id: {
                time: {
                    hour: "$date.hour",
                    minute: "$date.minute"
                }
            },
            averageMeasurement: {$avg: "measurement"}
        }
    }
]);

Supponendo una raccolta di serie temporali con timestamp e measurement campi, il comando aggregati sopra produrrebbe qualcosa del genere:

{
    "_id": {
        "time": {
            "hour": 12,
            "month": 30
        },
        "averageMeasurement": 1.5
    },
    "_id": {
        "time": {
            "hour": 12,
            "month": 45
        },
        "averageMeasurement": 2.7
    }
}

I record sono raggruppati in base al loro timestamp utilizzando una proiezione. di ogni gruppo measurement i valori vengono quindi mediati in averageMeasurement campo.

Resharding in tempo reale

Una delle maggiori sfide con il ridimensionamento orizzontale di MongoDB è stato il suo approccio allo sharding. La scelta della chiave shard corretta è fondamentale per le prestazioni del cluster, ma in precedenza era un’operazione unidirezionale. Una volta impostata la chiave, non potevi cambiarla, lasciandoti impotente se avessi preso la decisione sbagliata il primo giorno. MongoDB stesso ha descritto la selezione della chiave shard come a “lancio con paracadute unidirezionale” meglio risolto creando un intero nuovo cluster.

MongoDB 5.0 mette finalmente fine agli incubi delle chiavi shard. Se sbagli, puoi reindicizzare le tue raccolte usando una nuova chiave shard. MongoDB gestirà l’intera migrazione per te, senza causare tempi di inattività del database. Ciò rende molto più facile sfuggire alle prestazioni scadenti causate da una configurazione errata dello shard.

Versioni e rilasci

MongoDB 5.0 apporta miglioramenti significativi a prova di futuro. Il database ha ottenuto un’API con versione che ti consente di evitare di interrompere le modifiche durante l’aggiornamento a nuove versioni.

Potrai eseguire l’aggiornamento alle versioni future senza modificare il codice della tua app. Tutto funzionerà perfettamente finché la nuova versione supporta la versione API di destinazione. Significa che la tua applicazione è più disaccoppiata dalla versione del database sottostante, quindi puoi eseguire l’aggiornamento alle nuove versioni di MongoDB in precedenza senza rischiare il codice rotto.

Accompagnare questo cambiamento è una novità programma di rilascio. MongoDB inizierà a distribuire le versioni future più rapidamente, con una “versione rapida” in uscita ogni trimestre. Queste saranno versioni semantiche minori senza modifiche di rilievo, che forniranno nuove funzionalità in un ciclo accelerato. Ogni anno arriverà una nuova versione principale, che includerà le versioni rapide e potenzialmente interromperà la compatibilità con le versioni precedenti.

Il nuovo modello di rilascio ti consente di accedere alle funzionalità emergenti più rapidamente senza influire sulla stabilità complessiva di MongoDB. Se non desideri eseguire l’aggiornamento ogni trimestre, puoi rimanere nel ramo di rilascio principale e mantenere la cadenza annuale. I rilasci rapidi saranno ufficialmente supportati solo nel servizio Atlas gestito di MongoDB. Saranno disponibili per gli utenti self-hosted come build di sviluppo facoltative.

Serverless MongoDB

MongoDB ha anche lanciato un’anteprima delle sue nuove istanze Atlas serverless. Atlas è l’offerta di database-as-a-service ufficiale dell’azienda per le piattaforme cloud più diffuse.

Con la distribuzione serverless, otterrai il provisioning automatico delle risorse corrette per il tuo carico di lavoro attuale. La piattaforma si adatta automaticamente alle mutevoli esigenze, quindi non è necessario ridimensionare manualmente l’infrastruttura. Ti verrà addebitato solo ciò che utilizzi.

Atlante senza server è gestito da MongoDB. Utilizza l’ultima versione di rilascio del database con supporto per gli aggiornamenti automatici. La creazione di istanze serverless ti consente di accedere a nuovi cluster MongoDB senza configurarli da solo. Scegli un provider cloud, crea un nuovo database e ti connetti dalla tua applicazione.

Sommario

MongoDB 5.0 estende il database con più funzionalità che ne migliorano la versatilità. Inoltre, consolida la sua posizione come piattaforma cloud-native disponibile in una gamma di soluzioni gestite, che ora include opzioni serverless.

Oltre alle modifiche al titolo, c’è una buona selezione di miglioramenti e miglioramenti dell’ecosistema. Un nuovo MongoDB Shell semplifica l’interazione dello sviluppatore con i database offrendo l’evidenziazione della sintassi e il completamento automatico. Nuovi SDK aiuta anche a integrare MongoDB con più linguaggi e framework di programmazione, inclusi Unity, Flutter e Kotlin.

Sul fronte della sicurezza, supporto esteso per support Crittografia a livello di campo lato client consente di crittografare i dati che risiedono in database multi-cloud. I miglioramenti della rotazione dei certificati facilitano gli scambi x509 senza tempi di inattività, riducendo l’impatto delle procedure di protezione avanzata di routine.

MongoDB 5.0 è ora disponibile tramite Atlas, provider di cloud pubblico e come self-hosted soluzione open source. Esistono pacchetti ufficiali per Amazon Linux, Debian, RedHat, SUSE, Ubuntu e Windows, oltre a un Immagine Docker per ambienti containerizzati.