MongoDB 4.4 (attualmente in versione beta) è stato lanciato con l'agenda principale di indirizzare i suggerimenti degli sviluppatori dalla comunità di MongoDB. Questa versione è stata rilasciata per aumentare la capacità del database di operare su una scala conveniente e affidabile, quindi sviluppata secondo il principio dell'"ingegneria guidata dall'utente" per consentirgli di fornire numerose funzionalità migliorate.
Caratteristiche migliorate in MongoDB 4.4
Letture con copertura
Il router di query MongoDB invia richieste di lettura in parallelo a più set di repliche e vengono restituiti i risultati dei dati dal nodo più efficiente, riducendo così la latenza dell'applicazione.
Chiavi condivise definibili
Aggiunta di suffissi a una chiave shard dopo aver modificato la distribuzione dei dati durante il processo di ridimensionamento.
Letture speculari
Questa è una funzione che preriscalda le cache delle repliche secondarie in modo da ridurre le conseguenze delle elezioni primarie che potrebbero derivare da manutenzione pianificata o interruzioni.
Miglioramenti all'aggregazione
Il miglioramento dell'aggregazione presenta vari miglioramenti, tra cui la definizione e la personalizzazione delle espressioni di aggregazione, la combinazione di dati da più raccolte mongo in un unico set di risultati, la manipolazione delle stringhe e nuovi operatori nella gestione degli array. Di seguito sono riportati alcuni dei miglioramenti:
$ in uscita
L'operazione $out è stata migliorata per restituire i risultati della raccolta a database diversi rispetto a una versione precedente che poteva inviare solo a una raccolta nello stesso database in cui si trovava l'aggressione.
$indexStats
$indexStats ha nuovi output di campo in MongoDB 4.4 che include i campi:
edificio | È una bandiera booleana, che indica l'indice in fase di creazione. |
spec | Documento di specifica per ogni indice |
frammento | Il nome specifico di uno shard, se richiesto |
$merge
In MongoDB 4.4 $merge è stato migliorato per produrre la stessa raccolta che viene aggiornata. Inoltre, è anche possibile eseguire l'output in una raccolta che appare nella pipeline come $lookup.
Modifiche a $planCacheStats
Lo stato di $planCacheStats è stato migliorato per eseguire sia le istanze mongod che mongos in MongoDB 4.4. Inoltre, $planCacheSTats ha un nuovo campo noto come campo host durante l'esecuzione di mongo. PlanCache.list() è un wrapper per la fase di aggregazione $planCacheStats.
Modifiche a $collStats
$collStats è stato fatto per accettare le statistiche di query exec durante la documentazione di augment. Inoltre, la raccolta esegue la scansione come campi con la seguente descrizione;
Nome campo | Descrizione |
non Tailble | Questo è un numero intero a 64 bit che esegue una scansione della raccolta su diverse query che non utilizzano il cursore di coda. |
totale | Totale è una raccolta di query eseguite con la scansione della raccolta che non utilizza un cursore a coda. |
$unionWith Aggregation
MongoDB ha aggiunto $unionWith, una funzionalità che unifica gli insiemi di raccolte, ovvero unisce i risultati di una pipeline di più raccolte in un unico insieme.
$unionWith Sintassi
$unionWith ha la seguente sintassi generale:
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith ha una versione semplificata della sintassi che viene utilizzata per includere tutti i documenti di una raccolta:
{ $unionWith: "<collection>" } // include all documents from the specified collection
$aggregazione accumulatore
$accumulator è un'altra nuova funzionalità di MongoDB 4.4 che specifica un operatore accumulatore personalizzato. Gli accumulatori sono operatori che non cambiano stato mentre i documenti avanzano lungo la pipeline. È possibile utilizzare un operatore $accumulator per eseguire funzioni JavaScript che non sono supportate da MongoDB. $accumulator si trova nelle seguenti tre fasi della pipeline:
- $bucket stage:emette solo documenti contenenti non meno di un documento in ingresso.
- $group stage:inserisce i documenti in base a _id specificato e genera un documento per ogni particolare raggruppamento
- Fase $bucketAuto:ordina le voci del documento in numeri di gruppo specifici noti come bucket.
Sintassi
La sintassi per $accumulator è la seguente:
{ $accumulator:{
init: <code>,
initArgs: <array expression>, // Optional
accumulate: <code>,
accumulateArgs: <array expression>,
merge: <code>,
finalize: <code>, // Optional
lang: <string>
}}
$Funzione di aggregazione
$function aggregation definisce una funzione di aggregazione in JavaScript.
L'operatore $function può essere utilizzato per definire funzioni per utilizzare comportamenti che non sono supportati da MongoDB
La sintassi per $funzione è la seguente:
{
$function: {
body: <code>,
args: <array expression>,
lang: "js"
}
}
Altre funzionalità incluse nell'ultima versione di MongoDB 4.4 sono:problemi di scrittura, letture globali, replica del flusso, sincronizzazione iniziale ripristinabile e shard composto da hash.
Cosa c'è di nuovo con i set di repliche MongoDB?
Sincronizzazione iniziale ripristinabile
MongoDB 4.4 ha una funzione che tenta di riprendere un processo di sincronizzazione interrotto.
Repliche in streaming
Nelle versioni precedenti di MongoDB, i secondari raccoglievano batch di oplog su richiesta emessa per la sincronizzazione dall'origine. Con MongoDB 4.4, le origini dei moduli dei processi di sincronizzazione invieranno flussi continui di voci oplog ai processi di sincronizzazione secondari.
Directory di ripristino
Da MongoDB 4.4 al rollback, alla directory della raccolta viene assegnato il nome in base all'UUID della raccolta e allo spazio dei nomi della raccolta.
Periodo minimo di conservazione degli Oplog
Da MongoDB 4.4 in poi, è possibile specificare il numero minimo di ore in cui si desidera preservare una voce oplog.
Modifiche alla riconfigurazione del set di repliche
MongoDB 4.4 ha un comando chiamato replSetReconfig che consente l'aggiunta o la rimozione di non più di un elettore alla volta. Un'altra nuova funzionalità in MongoDB 4.4 sono le modifiche a replSetGetConfig. Il MongoDB 4.4 replSetConfig può stabilire una nuova opzione commitmentStatus.
Chiavi shard hash composte
A partire da MongoDB 4.4, puoi eseguire lo shard di una raccolta utilizzando una chiave shard composta con un singolo campo hash. Prima della 4.4, MongoDB non supportava chiavi shard composte con un campo hash. Il partizionamento orizzontale con hash composto supporta funzionalità come il partizionamento orizzontale della zona, in cui il prefisso (ovvero il primo) campo o campi senza hash supportano gli intervalli di zone mentre il campo con hash supporta una maggiore distribuzione dei dati partizionati. Ad esempio, l'operazione seguente esegue lo shard di una raccolta su una chiave shard composta da hash che supporta il partizionamento orizzontale suddiviso in zone:
sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)
Miglioramenti generali ai cluster frammentati
Verifiche della coerenza dell'indice
In MongoDB 4.4, il server di configurazione essenzialmente, per impostazione predefinita, controlla le irregolarità dei file sugli shard per le raccolte shardate. Il comando serverStatus restituisce il campo shardedIndexConsistency per segnalare le irregolarità dei file durante l'esecuzione sul server di configurazione essenziale. In MongoDB 4.4, avrai più di un'operazione removeShard in anticipo. Negli adattamenti precedenti, removeShard restituisce un errore nella possibilità che un'altra operazione di removeShard sia in anticipo.
Limite Shard Key
A partire dal modulo 4.4, MongoDB espelle il vincolo di 512 byte sulla stima della chiave shard. Per MongoDB 4.2 e versioni precedenti, una chiave shard non può superare i 512 byte.
Aggiornamento della cache del catalogo migliorato
In MongoDB 4.4, nel caso in cui sia presente un vecchio blocco, la cache del catalogo lo ripristina per ottenere uno shard che contiene il blocco.
MongoDB 4.4 ha enableFinerGrainedCatalogCacheRefresh che è un parametro per compromettere il ripristino della cache del catalogo. enableFinerGrainedCatalogCacheRefresh si concentra sullo shard e utilizza il comportamento di rianimazione della cache del catalogo più stagionato.
Il parametro enableFinerGrainedCatalogCacheRefresh è impostato su true per impostazione predefinita.
Miglioramenti delle query e dello sharding in MongoDB 4.4
MongoDB ha una tradizione di scalabilità orizzontale continua attraverso la distribuzione dei dati in più nodi o tramite lo sharding. Una chiave shard contiene un documento perché la chiave shard di un determinato documento può essere modificata solo prima di un'assegnazione e non dopo un'assegnazione.
L'evoluzione di MongoDB ha reso difficile ricalibrare gli shard di un contenuto fornito in MongoDB. Per abilitare il ribilanciamento, la versione MongoDB 4.4 ha introdotto chiavi shard rifinibili che consentono di modificare le chiavi shard dei documenti.
Le chiavi shard rifinibili consentono di modificare una modifica delle chiavi shard del documento consentendo ai documenti appartenenti a uno shard di modificare i propri requisiti e quindi di essere ribilanciati dinamicamente.
Il ribilanciamento può essere programmatico o aggressivo a seconda di come l'utente lo visualizza nel tempo.
Altri miglioramenti
Aggregazione della raccolta di MongoDB quando set di dati diversi consentono query tramite Unions. Tale capacità consente il trattamento dei dati in modo diverso e non come un ETL separato.
I dati possono essere spostati e consolidati sul server e passati al client e il processo non richiede più viaggi per gestire un risultato completo.
$la funzione è tra le aggregazioni personalizzate che consentono l'esecuzione di aggregazioni più complesse lato server e migliora il processo di elaborazione dei dati.
Varie versioni di procedure in costume appaiono sul MongoDB 4.4 rilasciato. Le caratteristiche in costume sono state collegate alle prestazioni migliorate della versione beta. Tuttavia, la funzione $ viene invocata solo quando altre funzionalità integrate e personalizzate non sono sufficienti nel processo in corso.
Lingua e driver di query MongoDB
- Gli aspetti di aggregazione personalizzata hanno i proprietari che estendono MongoDB come parte della pipeline di esecuzione dell'aggregazione.
- Union Aggregation ha un'analisi e un'esplorazione più approfondite combinando i dati provenienti da più raccolte nella pipeline di Union Aggregation.
- Scrivi i problemi e la lettura globale per scrivere la durabilità e configurare l'isolamento della lettura del cluster.
- Driver rapidi e New Rust
- Flessibilità e prestazioni scalabili
- La replica in streaming e l'indicizzazione simultanea riducono il ritardo di replica per fornire i dati agli utenti in MongoDB 4.4.
- I risultati vengono restituiti il prima possibile a causa delle letture coperte che riducono al minimo le latenze p65 e p99 inviando una richiesta di lettura a più repliche di dati in MongoDB.
- Il mantenimento della località dei dati poiché le chiavi con hash composto vengono distribuite uniformemente su vari shard con la relativa chiave shard.
- Nessun sistema in centro durante la definizione e il perfezionamento della chiave shard in un dato momento.
Resilienza e sicurezza
- L'autenticazione in MongoDB 4.4 beta è oltre il 50% più veloce ed è TLS 1.3.
- La connessione a MongoDB Atlas richiede l'autenticazione AWS IASM, che semplifica la sicurezza cloud-native riutilizzando le credenziali Amazon IAM temporanee e le normali esistenti.
- Recupera i nodi tramite la sincronizzazione iniziale ripristinabile che semplifica il processo di scalabilità orizzontale aggiungendo nuove repliche. Impatto ridotto delle elezioni primarie grazie alle letture speculari che riscaldano le cache delle secondarie dopo la manutenzione pianificata o l'interruzione.
Conclusione
MongoDB 4.4 ha rilasciato una migliore esperienza in un database non relazionale basato su documenti, migliorando le caratteristiche delle prestazioni nel suo sistema. I miglioramenti hanno consentito applicazioni analitiche, operative e transazionali più rapide con MongoDB 4.4.
MongoDB 4.4 ha anche consentito la Flessibilità nella definizione della distribuzione dei dati al variare dei requisiti operativi. Il miglioramento apportato a MongoDB 4.4 lo ha reso più affidabile in termini di latenza, sofisticatezza e controllo della sicurezza durante l'utilizzo di Mongo Atlas, che è il cloud.