MongoDB 4.4 (actuellement en version bêta) est en cours de déploiement avec pour objectif principal de répondre aux suggestions des développeurs de la communauté MongoDB. Cette version a été publiée pour augmenter la capacité de la base de données à fonctionner à une échelle pratique et fiable, donc développée selon le principe "d'ingénierie axée sur l'utilisateur" pour lui permettre de fournir de nombreuses fonctionnalités améliorées.
Fonctionnalités améliorées dans MongoDB 4.4
Lectures couvertes
Le routeur de requête MongoDB émet des requêtes de lecture en parallèle vers plusieurs jeux de réplicas et les résultats de données du nœud le plus efficace sont renvoyés, ce qui réduit la latence de l'application.
Clés partagées définissables
Ajout de suffixes à une clé de partition après avoir modifié la distribution des données pendant le processus de mise à l'échelle.
Lectures en miroir
Il s'agit d'une fonctionnalité qui préchauffe les caches des réplicas secondaires afin de réduire les conséquences des élections primaires pouvant résulter d'une maintenance planifiée ou de pannes.
Améliorations de l'agrégation
L'amélioration de l'agrégation comporte diverses améliorations, notamment la définition et la personnalisation des expressions d'agrégation, la combinaison de données de plusieurs collections mongo en un seul ensemble de résultats, la manipulation de chaînes et de nouveaux opérateurs dans la gestion des tableaux. Voici quelques-unes des améliorations :
$out
L'opération $out a été améliorée pour afficher les résultats de la collecte dans différentes bases de données, contrairement à une version antérieure qui ne pouvait produire que dans une collection de la même base de données que l'agression.
$indexStats
$indexStats a de nouvelles sorties de champ dans MongoDB 4.4 qui incluent des champs :
bâtiment | C'est un drapeau booléen, qui indique l'index en cours de construction. |
spec | Document de spécification pour chaque index |
fragment | Le nom spécifique d'un fragment si nécessaire |
$merge
Dans MongoDB 4.4, $merge a été amélioré pour sortir sur la même collection qui est mise à jour. De plus, on peut également sortir dans une collection qui apparaît sur le pipeline comme $lookup.
Modifications de $planCacheStats
L'état de $planCacheStats a été amélioré pour exécuter à la fois les instances mongod et mongos dans MongoDB 4.4. De plus, $planCacheSTats a un nouveau champ appelé champ hôte lors de l'exécution de mongo. PlanCache.list() est un wrapper pour l'étape d'agrégation $planCacheStats.
Modifications de $collStats
$collStats a été conçu pour accepter les statistiques d'exec de la requête lors de la documentation d'augmentation. De plus, Collection Scans sous forme de champs avec la description suivante ;
Nom du champ | Description |
nonTailble | Il s'agit d'un entier 64 bits qui effectue une analyse de collection sur plusieurs requêtes qui n'utilisent pas de curseur à queue. |
total | Total est une collection de requêtes effectuées par balayage de collection qui n'utilise pas de curseur ajustable. |
$unionWith Agrégation
MongoDB a ajouté $unionWith, une fonctionnalité qui unifie les ensembles de collections, c'est-à-dire qu'elle réunit les résultats d'un pipeline de plusieurs collections en un seul ensemble.
$unionAvec syntaxe
$unionWith a la syntaxe générale suivante :
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith a une version simplifiée de la syntaxe qui est utilisée pour inclure tous les documents d'une collection :
{ $unionWith: "<collection>" } // include all documents from the specified collection
agrégation $accumulateur
$accumulator est une autre nouvelle fonctionnalité de MongoDB 4.4 qui spécifie un opérateur d'accumulateur personnalisé. Les accumulateurs sont des opérateurs qui ne changent pas d'état au fur et à mesure que les documents progressent le long du pipeline. Vous pouvez utiliser un opérateur $accumulator pour exécuter des fonctions JavaScript qui ne sont pas prises en charge par MongoDB. $accumulator se trouve dans les trois étapes suivantes du pipeline :
- Étape $bucket :produit uniquement les documents contenant au moins une entrée de document.
- $group stage :entre les documents par _id spécifié et génère un document pour chaque groupe particulier
- Étape $bucketAuto :elle trie les entrées de document en numéros de groupe spécifiques appelés compartiments.
Syntaxe
La syntaxe de $accumulator est la suivante :
{ $accumulator:{
init: <code>,
initArgs: <array expression>, // Optional
accumulate: <code>,
accumulateArgs: <array expression>,
merge: <code>,
finalize: <code>, // Optional
lang: <string>
}}
$fonction Agrégation
$function aggregation définit une fonction d'agrégation en JavaScript.
L'opérateur $function peut être utilisé pour définir des fonctions afin d'utiliser des comportements qui ne sont pas pris en charge par MongoDB
La syntaxe de $function est la suivante :
{
$function: {
body: <code>,
args: <array expression>,
lang: "js"
}
}
Les autres fonctionnalités incluses dans la dernière version de MongoDB 4.4 sont :les problèmes d'écriture, les lectures globales, la réplication de flux, la synchronisation initiale avec reprise et le fragment de hachage composé.
Quoi de neuf avec les ensembles de répliques MongoDB ?
Synchronisation initiale pouvant être reprise
MongoDB 4.4 a une fonctionnalité qui tente de reprendre un processus de synchronisation interrompu.
Réplications en continu
Dans les versions précédentes de MongoDB, les secondaires collectaient des lots d'oplog par requête émise pour se synchroniser à partir de la source. Avec MongoDB 4.4, les processus de synchronisation des sources enverront des flux continus d'entrées oplog aux processus de synchronisation secondaires.
Répertoire de restauration
Depuis MongoDB 4.4 lors de la restauration, le répertoire de la collection reçoit le nom en fonction de l'UUID de la collection et de l'espace de noms de la collection.
Période de conservation minimale d'Oplog
Depuis MongoDB 4.4, il est possible de spécifier le nombre d'heures minimum pendant lequel vous souhaitez conserver une entrée oplog.
Modifications de reconfiguration du jeu de réplicas
MongoDB 4.4 a une commande appelée replSetReconfig qui permet d'ajouter ou de supprimer pas plus d'un voteur à la fois. Une autre nouvelle fonctionnalité de MongoDB 4.4 concerne les modifications apportées à replSetGetConfig. Le replSetConfig de MongoDB 4.4 peut stipuler une nouvelle option commitStatus.
Clés de fragment hachées composées
À partir de MongoDB 4.4, vous pouvez partitionner une collection à l'aide d'une clé de partition composée avec un seul champ haché. Avant la version 4.4, MongoDB ne prenait pas en charge les clés de partition composées avec un champ haché. Le partitionnement haché composé prend en charge des fonctionnalités telles que le partitionnement de zone, où le préfixe (c'est-à-dire le premier) champ ou champs non hachés prend en charge les plages de zones tandis que le champ haché prend en charge une plus grande distribution des données partitionnées. Par exemple, l'opération suivante partitionne une collection sur une clé de partition hachée composée prenant en charge la partition zonée :
sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)
Améliorations générales des clusters partagés
Vérifications de cohérence d'index
Dans MongoDB 4.4, le serveur de configuration vérifie essentiellement, par défaut, les irrégularités de fichiers sur les fragments pour les collections fragmentées. La commande serverStatus renvoie le champ shardedIndexConsistency pour signaler les irrégularités de fichiers lors de l'exécution sur le serveur de configuration essentiel. Dans MongoDB 4.4, vous aurez plus d'une opération removeShard à l'avance. Dans les adaptations précédentes, removeShard renvoyait une erreur au cas où une autre opération removeShard serait en avance.
Limite de clé de partition
À partir du formulaire 4.4, MongoDB supprime la contrainte de 512 octets sur l'estimation de la clé de partition. Pour MongoDB 4.2 et versions antérieures, une clé de partition ne peut pas dépasser 512 octets.
Actualisation améliorée du cache du catalogue
Dans MongoDB 4.4, s'il existe un ancien bloc, le cache du catalogue le réactive pour obtenir un fragment contenant le bloc.
MongoDB 4.4 a le enableFinerGrainedCatalogCacheRefresh qui est un paramètre pour altérer la régénération du cache du catalogue. enableFinerGrainedCatalogCacheRefresh se concentre sur la partition et utilise le comportement de réactivation du cache de catalogue plus expérimenté.
Le paramètre enableFinerGrainedCatalogCacheRefresh est défini par défaut sur true.
Améliorations des requêtes et du partage dans MongoDB 4.4
MongoDB a pour tradition de s'adapter en continu grâce à la distribution des données sur plusieurs nœuds ou au sharding. Une clé de partition contient un document car la clé de partition d'un document donné ne peut être modifiée qu'avant une affectation et non après une affectation.
L'évolution de MongoDB a rendu difficile le recalibrage des fragments d'un contenu fourni dans MongoDB. Pour permettre le rééquilibrage, la version 4.4 de MongoDB a introduit des clés de partition affinables qui permettent de modifier les clés de partition des documents.
Les clés de partition affinables permettent de modifier les clés de partition de document en permettant aux documents appartenant ensemble sur une partition de modifier leurs exigences et donc d'être rééquilibrés dynamiquement.
Le rééquilibrage peut être programmé ou agressif selon la façon dont l'utilisateur le voit au fil du temps.
Autres améliorations
Agrégation de la collection MongoDB lorsque différents ensembles de données autorisent les requêtes via les Unions. Une telle capacité permet le traitement des données différemment et non comme un ETL séparé.
Les données peuvent être déplacées et consolidées sur le serveur et transmises au client, et le processus ne nécessite pas plusieurs déplacements pour gérer un résultat complet.
$function fait partie des agrégations costumées qui permettent l'exécution d'agrégations plus complexes côté serveur et améliorent le processus de traitement des données.
Diverses versions de procédures costumées apparaissent sur la version 4.4 de MongoDB. Les fonctionnalités costumées ont été liées aux performances accrues de la version bêta. Néanmoins, $function n'est invoquée que lorsque d'autres fonctionnalités costumées et intégrées ne suffisent pas dans le processus en cours.
Langage de requête et pilotes MongoDB
- Les apparences de l'agrégation personnalisée ont une fonction propriétaire qui étend MongoDB dans le cadre du pipeline d'exécution de l'agrégation.
- Union Aggregation permet une analyse et une exploration plus approfondies en combinant les données de plusieurs collections dans le pipeline Union Aggregation.
- Ecrire les préoccupations et la lecture globale pour écrire la durabilité et configurer l'isolation de lecture du cluster.
- Pilotes Swift et New Rust
- Flexibilité et performances évolutives
- La réplication en continu et l'indexation simultanée réduisent le délai de réplica pour servir les données aux utilisateurs dans MongoDB 4.4.
- Les résultats sont renvoyés dès que possible grâce aux lectures couvertes qui minimisent les latences p65 et p99 en soumettant une demande de lecture à plusieurs réplicas de données dans MongoDB.
- Conserver la localité des données car les clés hachées composées sont réparties uniformément sur les différentes partitions avec leur clé de partition.
- Aucun système central lors de la définition et de l'affinement de la clé de partition à un moment donné.
Résilience et sécurité
- L'authentification dans la version bêta de MongoDB 4.4 est plus de 50 % plus rapide et est TLS 1.3.
- La connexion à MongoDB Atlas nécessite l'authentification AWS IASM, qui simplifie la sécurité native du cloud en réutilisant les informations d'identification Amazon IAM temporaires et régulières existantes.
- Récupère les nœuds par la synchronisation initiale avec reprise qui facilite le processus de montée en charge en ajoutant de nouvelles répliques. Réduction de l'impact des élections primaires grâce aux lectures en miroir réchauffant les caches du secondaire après une maintenance ou une panne planifiée.
Conclusion
MongoDB 4.4 a libéré une meilleure expérience dans une base de données basée sur des documents non relationnels en améliorant les fonctionnalités de performance de son système. Les améliorations ont permis des applications analytiques, opérationnelles et transactionnelles plus rapides avec MongoDB 4.4.
MongoDB 4.4 a également permis la flexibilité lors de la définition de la distribution des données à mesure que les exigences de l'opération changent. Les améliorations apportées à MongoDB 4.4 l'ont rendu plus fiable en termes de latence, de sophistication et de contrôle de sécurité lors de l'utilisation de Mongo Atlas, qui est le cloud.