Cette rubrique décrit les versions, les moteurs de stockage et la compatibilité d'ApsaraDB for MongoDB afin de vous aider à choisir l'instance la mieux adaptée à vos besoins métier.
Versions prises en charge
ApsaraDB for MongoDB prend en charge les versions suivantes :
Vous pouvez mettre à jour manuellement la version majeure de la base de données d'une instance en cours d'exécution. En revanche, il n'est pas possible de revenir à une version antérieure. Pour plus d'informations, consultez la page Mise à niveau de la version majeure de la base de données.
-
MongoDB 3.2
La version MongoDB 3.2 est retirée du service. Pour plus d'informations, consultez les pages [[Avis] Le 4 février, ApsaraDB for MongoDB a retiré la version 3.2 et lancé la version 4.2](t1859745.dita#concept_2347576).
Moteurs de stockage
|
Moteur de stockage |
Scénario |
Description |
|
WiredTiger |
Moteur de stockage par défaut pour la plupart des charges de travail. |
Il organise les données à l'aide d'une structure B-tree et offre des améliorations significatives des performances par rapport au moteur de stockage MMAPv1 utilisé dans les versions antérieures de MongoDB. Il prend également en charge la compression des données pour réduire les coûts de stockage. |
Compatibilité entre les versions et les moteurs de stockage
|
Moteur de stockage |
MongoDB 4.4 et versions ultérieures |
MongoDB 4.2 |
MongoDB 4.0 |
MongoDB 3.4 (Obsolète) |
|
WiredTiger |
|
|
|
|
MongoDB 8.3
Cette version introduit de nouvelles fonctionnalités, notamment une agrégation améliorée, un processus de gestion du sharding refondu, des journaux de requêtes lentes en cours d'exécution et un suivi de la mémoire au niveau des requêtes. Elle apporte également des optimisations en matière de performances, de paramètres système, d'index et de séries temporelles.
Agrégation améliorée : ajoute l'accès aux index de tableaux, de nouvelles expressions telles que
$hashet$hexHash, ainsi qu'une conversion de type améliorée pour$toStringet$convert.Processus de gestion du sharding refondu : la commande
removeShardest obsolète et remplacée par un processus en quatre étapes utilisant les commandesstartShardDraining,stopShardDraining,shardDrainingStatusetcommitShardRemoval. Ce nouveau processus prend en charge les opérations de pause et de reprise.Surveillance et diagnostic améliorés : ajoute des journaux de requêtes lentes en cours d'exécution, un suivi de la mémoire au niveau des requêtes (
inUseTrackedMemBytesetpeakTrackedMemBytes) et une sortie à la demande pourserverStatus.Performances et paramètres système : ajoute de nouveaux paramètres pour le contrôle des ressources de connexion pré-authentifiées, la récupération automatique des ressources sous pression de cache et la sélection de services tenant compte de la surcharge.
Modifications des index : augmente la valeur par défaut de
2dsphereVersionà 4, en privilégiant GeoJSON par rapport aux paires de coordonnées héritées.
Pour plus d'informations, consultez la page Nouveautés de MongoDB 8.3.
MongoDB 8.0
Cette version introduit une mise à niveau de TCMalloc, des performances optimisées pour la réplication et le resharding, ainsi que des améliorations apportées au sharding, à la journalisation, à l'agrégation et à la sécurité.
-
TCMalloc mis à niveau
Le TCMalloc mis à niveau utilise des caches par CPU au lieu de caches par thread pour réduire la fragmentation de la mémoire et améliorer la résilience de la base de données sous de fortes charges de travail. De plus, le TCMalloc mis à niveau crée un thread d'arrière-plan qui tente de libérer la mémoire vers le système d'exploitation chaque seconde.
-
Performances de réplication
À partir de MongoDB 8.0, lorsque
writeConcernest défini surmajority, MongoDB accuse réception d'une écriture dès qu'une majorité des membres du jeu de réplicas ont écrit les entrées oplog correspondantes, sans attendre l'application des modifications. Cette modification améliore les performances d'écriture en modemajority.Les membres secondaires écrivent et appliquent désormais les lots oplog en parallèle. Pendant qu'un thread d'écriture lit les nouvelles entrées oplog depuis le membre principal et les écrit dans l'oplog local, un thread d'application applique ces modifications de manière asynchrone à la base de données locale. Cette modification améliore le débit de réplication sur les membres secondaires.
-
Performances de resharding
MongoDB 8.0 introduit l'option
forceRedistribution, qui permet de reshader une collection avec la même clé de shard, en redistribuant les données sur de nouveaux shards. Ce processus est nettement plus rapide que la migration de chunks basée sur les plages et peut être utilisé avec l'optionzonespour déplacer les données vers des zones spécifiques. -
Sharding
Le sharding haché crée désormais un chunk par shard par défaut, contre deux chunks dans les versions antérieures à MongoDB 8.0.
La commande
dbhashpeut désormais s'exécuter directement sur un shard.Les commandes
findAndModifyetdeleteOnepeuvent désormais utiliser une clé de shard partielle dans le filtre de requête.Lorsque vous utilisez la commande
updateOneavecupsertdéfini surtruesur une collection fragmentée, le filtre de requête n'a plus besoin d'inclure la clé de shard complète.Vous pouvez désormais défragmenter une collection existante en utilisant la commande
unshardCollectionou la méthodesh.unshardCollection(). Cette opération déplace tous les documents de la collection vers un shard spécifié ou vers le shard le moins chargé.La commande
moveCollectionpermet désormais de déplacer une collection non fragmentée vers un shard spécifique, sans être limitée au shard principal. Toutefois, les collections de séries temporelles et les collections avec chiffrement interrogeable ne peuvent pas être déplacées. Cette opération peut bloquer brièvement les écritures dans la collection pendant environ deux secondes.-
Cette version introduit de nouvelles commandes de base de données et assistants mongosh :
Commande
Assistant Mongosh
Description
moveCollection
sh.moveCollection()
Déplace une collection non fragmentée vers un shard spécifique.
unshardCollection
sh.unshardCollection()
Défragmente une collection fragmentée existante et déplace ses données vers un shard spécifique.
abortMoveCollection
sh.abortMoveCollection()
Arrête une opération
moveCollectionen cours.abortUnshardCollection
sh.abortUnshardCollection()
Arrête une opération
unshardCollectionen cours.Aucune
sh.shardAndDistributeCollection()
Fragmente une collection et redistribue immédiatement les données à l'aide de la clé de shard fournie.
L'exécution de cet assistant équivaut à exécuter
shardCollectionpuisreshardCollectionde manière séquentielle et vise à accélérer le déplacement des données.
-
Journalisation
Le journal des requêtes lentes inclut désormais un champ
workingMillis, qui indique le temps pendant lequel une opération a été activement exécutée.Contrairement à
durationMillis, qui mesure la latence totale de l'opération,workingMillisn'inclut pas le temps passé à attendre des ressources, telles que des verrous ou le contrôle de flux. -
Agrégation
-
Conversion binData
L'opérateur $convert prend désormais en charge les conversions suivantes :
Convertir des valeurs de chaîne en valeurs binData.
Convertir des valeurs binData en valeurs de chaîne.
De plus, l'expression $toUUID fournit une syntaxe simplifiée pour convertir des chaînes en valeurs UUID.
-
$queryStats
L'étape $queryStats renvoie des statistiques pour les requêtes journalisées et améliore le suivi et le reporting des métriques dans un flux de changement.
-
-
Sécurité
-
Chiffrement interrogeable
Vous pouvez utiliser
$lt,$lte,$gtet$gtepour effectuer des requêtes de plage sur des champs chiffrés. -
File d'attente d'entrée
MongoDB 8.0 introduit une nouvelle file d'attente pour le contrôle d'admission d'entrée (
ingressAdmissionControllerTicketPoolSize). Les opérations entrant dans la base de données depuis le réseau passent par cette file d'attente d'entrée.Par défaut, la file d'attente d'entrée est illimitée, mais vous pouvez configurer sa taille maximale.
-
-
Autres optimisations
-
Cette version introduit une nouvelle Forme de requête. La forme de requête précédente est désormais appelée Forme de requête du cache de plan. L'optimiseur de requêtes utilise également les Paramètres de requête comme entrée supplémentaire, ce qui affecte la sélection finale du plan de requête.
-
setQuerySettings ajoute des paramètres de requête :
Vous pouvez utiliser cette commande pour spécifier un index à sélectionner. MongoDB 8.0 rend obsolète l'utilisation de
planCacheSetFilterpour définir unindex filter.Vous pouvez utiliser cette commande pour configurer la limitation de débit. L'option
rejectvous permet de rejeter une forme de requête spécifique.
removeQuerySettingssupprime les paramètres de requête.$querySettingsaffiche les paramètres de requête.
-
La commande
explain()renvoie désormais le temps passé sur l'optimisation du plan de requête en millisecondes viaqueryPlanner.optimizationTimeMillis.-
Le nouveau paramètre
defaultMaxTimeMSspécifie la limite de temps par défaut en millisecondes pour qu'une seule opération de lecture se termine.-
Opérations applicables :
findaggregate(à l'exclusion des étapes$mergeet$out)countdistinctdbHash
Si un client spécifie
maxTimeMS,defaultMaxTimeMSest ignoré pour cette opération.
-
La nouvelle commande
bulkWritevous permet d'effectuer plusieurs opérations d'insertion, de mise à jour et de suppression sur plusieurs collections en une seule requête.La commande
updateOneprend désormais en charge l'optionsort.Vous pouvez désormais créer un index TTL sur une collection plafonnée.
Les insertions groupées non transactionnelles sont désormais regroupées en une seule entrée oplog au lieu de générer une entrée distincte pour chaque insertion. Tous les documents insérés partagent le même
clusterTimedans les événements de flux de changement. Cette modification améliore les performances des insertions groupées et aide à prévenir le retard de réplication qui pourrait survenir lorsque les membres secondaires rejouent plusieurs entrées oplog.Les opérations DDL concurrentes peuvent désormais s'exécuter sur différentes collections au sein de la même base de données.
L'ajout ou la suppression de shards est bloqué tant qu'une opération DDL modifiant une collection, telle que
reshardCollection, est en cours d'exécution sur le cluster. Vous ne pouvez effectuer ces actions qu'une fois l'opération DDL terminée.-
Les créations d'index signalent désormais les erreurs plus rapidement et offrent une meilleure résilience aux pannes.
Comportement
MongoDB 8.0
Avant MongoDB 8.0
Lorsqu'une création d'index s'arrête en raison d'une erreur
Les erreurs d'index, à l'exception des erreurs de clé en double, détectées lors de la phase d'analyse de la collection sont renvoyées immédiatement, arrêtant la création de l'index.
MongoDB 8.0 vous aide à diagnostiquer plus rapidement les erreurs d'index. Par exemple, si un format de valeur d'index incompatible est détecté, l'erreur est renvoyée immédiatement.
Les erreurs d'index détectées lors de l'analyse de la collection étaient signalées lors de la phase de validation à la fin de la création de l'index.
Par rapport à MongoDB 8.0, une erreur de création d'index pouvait prendre beaucoup plus de temps à être renvoyée car elle n'était signalée que lors de la phase de validation.
Résilience
Un membre secondaire peut demander au membre principal d'arrêter une création d'index si une erreur se produit. Cela améliore la résilience du déploiement en empêchant le membre secondaire de planter.
Une demande d'arrêt d'une création d'index n'est pas toujours faisable. Si un membre a déjà voté pour valider l'index, le membre secondaire ne peut pas demander l'arrêt de la création et plantera, similaire au comportement dans MongoDB 7.0 et versions antérieures.
Les erreurs de création d'index pouvaient provoquer le plantage des membres secondaires.
Espace disque
Une création d'index est automatiquement abandonnée si l'espace disque disponible tombe en dessous de la valeur minimale spécifiée dans le paramètre
indexBuildMinAvailableDiskSpaceMB.La création d'index ne s'arrête pas si le membre a déjà voté pour valider l'index.
Les créations d'index étaient également abandonnées si l'espace disque était insuffisant.
-
MongoDB 7.0
Cette version introduit de nouvelles fonctionnalités telles que le chiffrement interrogeable, la vérification de la cohérence des métadonnées de shard, les requêtes échantillonnées et l'analyse de la clé de shard (analyzeShardKey), ainsi que l'AutoMerger. Elle inclut également des améliorations et des optimisations pour le sharding, les collections de séries temporelles, l'agrégation et la sécurité.
-
Chiffrement interrogeable
Le chiffrement interrogeable était disponible en tant que fonctionnalité en aperçu dans MongoDB 6.0. Dans MongoDB 7.0, cette fonctionnalité est désormais généralement disponible (GA). Pour plus d'informations, consultez la page Chiffrement interrogeable.
-
Vérification de la cohérence des métadonnées de shard
MongoDB 7.0 introduit la commande checkMetadataConsistency pour vérifier les incohérences de métadonnées entre différents shards. Ajoutez cette vérification à vos procédures de maintenance routine pour détecter précocement les incohérences potentielles. Pour plus d'informations, consultez la page checkMetadataConsistency.
-
Requête échantillonnée et analyse de la clé de shard
Cette version prend en charge l'analyse de l'adéquation de la clé de shard d'une collection en fonction des résultats de requêtes échantillonnées. Cela peut vous aider à concevoir un schéma et une clé de shard plus efficaces et à mieux exploiter votre architecture de sharding. Pour plus d'informations, consultez les pages analyShardKey et configureQueryAnalyzer.
-
AutoMerger
MongoDB 7.0 introduit un nouvel AutoMerger pour l'équilibreur de charge. Lorsque la distribution des données ou des index est inégale, qu'il y a trop de chunks ou lors d'une migration de données, l'AutoMerger fusionne les chunks pour équilibrer les données et améliorer les performances. Cette fonctionnalité est activée par défaut dans MongoDB 7.0 et vous pouvez la gérer via la fenêtre active de l'équilibreur de charge.
-
Sharding
Vous pouvez désormais utiliser le paramètre
rangeDeleterHighPrioritypour attribuer une priorité plus élevée à la suppression des documents orphelins. Par défaut, ce paramètre est défini sur false car les suppressions au niveau de l'application ont généralement une priorité plus élevée.La métrique de surveillance
operationsBlockedByRefresh, qui suivait le comportement d'actualisation du cache de catalogue, n'est plus prise en charge car chaque opération sur mongos utilisant les informations de routage de collection incrémentait ce compteur.Cette version ajoute de nouvelles métriques de surveillance pour le resharding.
La commande addShard ne prend plus en charge l'option
maxSize.Lorsque vous ajustez la taille des chunks pour la collection
config.settings, une vérification de validation limite désormais la valeur à la plage [1, 1024].-
À partir de MongoDB 6.0.3, plusieurs ajustements ont été apportés à la politique de l'équilibreur de charge :
L'équilibreur de charge n'équilibre plus en fonction de la différence du nombre de chunks entre les shards. Il équilibre désormais en fonction de la différence de taille des données entre les shards.
Une plage remplace le concept logique de chunk.
Le fractionnement automatique se produit uniquement lorsque les plages se déplacent entre les shards.
-
Collections de séries temporelles
Cette version supprime les restrictions opérationnelles sur la commande DELETE pour les collections de séries temporelles. La commande DELETE n'a désormais plus de limitations, sauf qu'elle ne peut pas être utilisée dans des transactions multi-documents.
La commande COMPACT prend désormais en charge les collections de séries temporelles.
-
Agrégation
Cette version introduit les opérateurs suivants pour prendre en charge les calculs bit à bit et les percentiles :
Paramètre
Description
$bitAndRenvoie le résultat d'une opération ET bit à bit sur une valeur Int32 ou Int64.
$bitNotRenvoie le résultat d'une opération NON bit à bit sur une valeur Int32 ou Int64.
$bitOrRenvoie le résultat d'une opération OU bit à bit sur une valeur Int32 ou Int64.
$bitXorRenvoie le résultat d'une opération OU exclusif bit à bit sur une valeur Int32 ou Int64.
$medianRenvoie la médiane approximative, qui équivaut au 50e percentile.
$percentileRenvoie la valeur pour un percentile spécifié.
-
Sécurité
MongoDB prend en charge KMIP 1.0 et 1.1.
MongoDB prend en charge OpenSSL 3.0 et OpenSSL FIPS.
-
Autres optimisations
Les journaux de requêtes lentes incluent désormais de nouveaux champs, tels que
catalogCacheIndexLookupDurationMillis. Pour plus d'informations, consultez la page messages de journal pour les requêtes lentes.À partir de MongoDB 7.0, MongoDB ajuste automatiquement et dynamiquement la concurrence des transactions du moteur de stockage, qui avait auparavant une valeur par défaut de 128. Pour plus d'informations, consultez la page Transactions concurrentes du moteur de stockage.
La commande
currentOpinclut désormais de nouveaux champs liés à l'échantillonnage des requêtes. Pour plus d'informations, consultez la page currentop-metrics.Cette version ajoute la prise en charge des index génériques composés. Pour plus d'informations, consultez la page Index génériques composés.
Le nouvel opérateur
$changeStreamSplitLargeEventprend en charge le fractionnement des grands événements de changement dépassant 16 Mo. Pour plus d'informations, consultez la page Grands événements de flux de changement.Cette version améliore les performances du moteur d'exécution de requêtes basé sur les slots.
Cette version ajoute de nouvelles métriques pour les migrations de chunks. Pour plus d'informations, consultez la page Nouvelles statistiques de sharding pour les migrations de chunks.
Vous pouvez désormais utiliser la variable système
USER_ROLESpour récupérer les rôles de l'utilisateur actuel.Cette version ajoute de nouveaux paramètres globaux liés à
analyzeShardKey,balanceretqueryAnalyzers.La sortie de la commande
serverStatusinclut désormais des champs supplémentaires. Pour plus d'informations, consultez la page Modification de la sortie serverStatus.
Notes de version de MongoDB 6.0
Cette version introduit de nouvelles fonctionnalités telles que le chiffrement interrogeable et la synchronisation Cluster-to-Cluster Sync. Elle inclut également des améliorations et des optimisations pour les collections de séries temporelles, les flux de modifications (change streams), l'agrégation, les requêtes, l'élasticité et la sécurité.
-
Chiffrement interrogeable
Le chiffrement interrogeable vous permet de chiffrer les données sensibles côté client, de les stocker sous forme de données entièrement randomisées et chiffrées sur le serveur de base de données, et d'exécuter des requêtes expressives sur ces données chiffrées.
Avec le chiffrement interrogeable, les données en texte clair ne sont visibles que côté client. Lorsqu'une requête est envoyée au serveur, elle inclut une clé de chiffrement provenant d'un service de gestion des clés (KMS). Le serveur traite la requête sur le texte chiffré et renvoie un résultat chiffré. Le client utilise ensuite la clé pour déchiffrer le résultat et afficher les données en texte clair.
-
Synchronisation Cluster-to-Cluster Sync
Cette version introduit
mongosync, un nouvel outil de synchronisation qui prend en charge la synchronisation continue et unidirectionnelle des données entre deux clusters MongoDB. Il fonctionne dans n'importe quel environnement, y compris les environnements hybrides, Atlas, sur site (on-premises) et en périphérie (edge). Vous pouvez également contrôler et surveiller le processus de synchronisation en temps réel, et démarrer, arrêter, reprendre ou inverser la synchronisation selon vos besoins. -
Collection de séries temporelles
Cette version améliore les collections de séries temporelles avec des optimisations de l'indexation, des requêtes et du tri.
Ajoute la prise en charge d'un index secondaire et d'un index composé pour améliorer les performances en lecture.
-
Introduit l'indexation géospatiale pour les données de séries temporelles. Cela vous permet d'ajouter des informations géographiques à vos données, ce qui facilite l'analyse dans les scénarios impliquant des distances et des emplacements.
Par exemple, vous pouvez suivre les variations de température dans des camions frigorifiques ou surveiller la consommation de carburant de cargos sur des itinéraires spécifiques.
Optimise les requêtes
last pointsur les données de séries temporelles. Vous n'avez plus besoin d'analyser l'intégralité d'une collection pour interroger le dernier point de données.Améliore les performances de tri des données de séries temporelles. Les opérations de tri s'exécutent désormais plus efficacement en utilisant un index clusterisé et un index secondaire sur les champs de temps et de métadonnées.
-
Flux de modifications (Change stream)
Cette version introduit les nouvelles fonctionnalités et optimisations suivantes :
-
Prend en charge l'affichage d'une image préalable (pre-image) d'un document.
RemarqueLes versions de MongoDB antérieures à la 6,0 ne prennent en charge que les images postérieures (post-images). À partir de MongoDB 6.0, vous pouvez afficher à la fois les images préalables et postérieures. Pour plus d'informations, consultez Flux de modifications avec images préalables et postérieures de documents.
Ajoute la prise en charge des instructions DDL telles que
create,createIndexes,modifyetshardCollection. Pour plus d'informations, consultez Événements de modification.Les événements de modification incluent désormais le champ
wallTime. L'horodatage prend en charge divers opérateurs de conversion et d'affichage, notamment$toDate,$tsSecondsettsIncrement, ce qui facilite la consommation par les applications.
-
-
Agrégation
Cette version introduit les nouvelles fonctionnalités et optimisations suivantes :
Les instances de cluster fragmenté (sharded cluster) prennent désormais en charge
$lookupet$graphLookup.Améliore la prise en charge des jointures avec
$lookup.Renforce les capacités de parcours de graphes avec
$graphLookup.Améliore les performances de
$lookupjusqu'à 100 fois dans certains scénarios.
RemarquePour plus d'informations sur
$lookupet$graphLookup, consultez $lookup (agrégation) et $graphLookup (agrégation). -
Requête
Ajoute de nouveaux opérateurs tels que
$maxN,$topN,$minN,$bottomN,$lastNet$sortArray. Ces opérateurs déchargent le travail de calcul de l'application vers la base de données, allégeant ainsi la couche applicative.RemarquePour plus d'informations sur ces opérateurs, consultez Opérateurs du pipeline d'agrégation.
-
Élasticité
Cette version introduit les nouvelles fonctionnalités et optimisations suivantes :
La taille de chunk par défaut passe de 64 Mo à 128 Mo. Cela réduit la fréquence des migrations de données et diminue la surcharge réseau et de routage.
-
Ajoute la prise en charge de la commande
configureCollectionBalancing, qui vous permet de :-
Définir différentes tailles de chunk pour différentes collections fragmentées.
Par exemple, vous pouvez augmenter la taille du chunk à 256 Mo pour les très grandes collections fragmentées, ou la réduire à 64 Mo ou 32 Mo pour les collections plus petites afin de répartir les données plus uniformément entre les shards.
-
Défragmenter activement les collections.
Par rapport à la commande
compact,configureCollectionBalancingdéfragmente les collections plus efficacement, réduisant considérablement l'utilisation de l'espace disque.
RemarquePour plus d'informations sur la commande
configureCollectionBalancing, consultez configureCollectionBalancing. -
-
Sécurité
Cette version optimise la fonctionnalité de chiffrement au niveau des champs côté client (CSFLE). Le CSFLE prend désormais en charge tout fournisseur de gestion des clés conforme au protocole Key Management Interoperability Protocol (KMIP). En plus d'utiliser un fichier de clé local, vous pouvez désormais intégrer MongoDB à des appliances tierces de gestion des clés via KMIP pour une sécurité renforcée.
RemarqueLa fonctionnalité CSFLE est souvent utilisée pour gérer les données sensibles, en particulier lors des migrations de données.
MongoDB 5.0
MongoDB 5.0 marque le début d'un nouveau cycle de publication conçu pour fournir de nouvelles fonctionnalités aux utilisateurs plus rapidement.
-
Plateforme native de séries temporelles
MongoDB 5.0 étend la plateforme de données polyvalente pour simplifier le traitement des données de séries temporelles et élargir ses cas d'utilisation à des domaines tels que l'IoT, l'analyse financière et la logistique.
-
Resharding en direct
Exécutez simplement la commande
reshardCollectiondans le shell MongoDB, sélectionnez la base de données et la collection à refragmenter, et spécifiez la nouvelle clé de shard.reshardCollection: "<database>.<collection>", key: <shardkey>Remarque<database> : Le nom de la base de données à refragmenter.
<collection> : Le nom de la collection à refragmenter.
<shardkey> : Le nom de la nouvelle clé de shard.
Lorsque vous exécutez la commande reshardCollection, MongoDB clone la collection existante et applique toutes ses entrées d'oplog à la nouvelle collection. Après avoir appliqué toutes les entrées, MongoDB bascule vers la nouvelle collection et supprime l'ancienne en arrière-plan.
-
API versionnée
L'API versionnée permet à MongoDB d'ajouter de nouvelles fonctionnalités et améliorations à chaque version tout en maintenant la rétrocompatibilité. Si vous devez modifier une API, vous pouvez introduire une nouvelle version et l'exécuter sur le même serveur aux côtés des versions d'API existantes. Alors que MongoDB accélère son calendrier de publication, l'API versionnée vous aide à utiliser les dernières fonctionnalités plus rapidement et plus facilement.
L'API versionnée définit un ensemble stable des commandes et paramètres les plus utilisés pour une application. Cet ensemble reste inchangé quelles que soient les mises à jour de la base de données issues d'une version majeure annuelle ou d'une version rapide trimestrielle. En découplant le cycle de vie de l'application de celui de la base de données, vous pouvez associer votre pilote à une version spécifique de l'API MongoDB. Cela garantit que votre application peut fonctionner pendant des années sans modification de code, même si la base de données évolue avec de nouvelles fonctionnalités et améliorations.
-
Niveau de write concern majority par défaut
À partir de MongoDB 5.0, le niveau de write concern par défaut est
majority. Une opération d'écriture renvoie un accusé de réception de succès uniquement après avoir été appliquée au nœud principal et persistée dans l'oplog d'une majorité de nœuds secondaires. Cela offre des garanties de durabilité des données plus fortes dès la configuration initiale. -
Requêtes snapshot de longue durée
Les requêtes snapshot de longue durée ajoutent de la polyvalence et de la résilience à vos applications. Vous pouvez exécuter des requêtes dont la durée d'exécution par défaut est de 5 minutes (ou une durée personnalisée) tout en maintenant une isolation snapshot cohérente avec la base de données transactionnelle active. Vous pouvez également effectuer des requêtes snapshot sur les nœuds secondaires, ce qui vous permet d'exécuter différentes charges de travail sur un seul cluster et de les mettre à l'échelle sur différents shards.
-
Nouveau shell MongoDB
Le shell MongoDB (mongosh) a été entièrement repensé pour offrir une meilleure expérience utilisateur. Il propose une expérience moderne en ligne de commande avec une utilisabilité améliorée et un environnement de script puissant. Le nouveau shell MongoDB est désormais le shell par défaut de la plateforme MongoDB. De nouvelles fonctionnalités telles que la coloration syntaxique, la saisie semi-automatique intelligente, l'aide contextuelle et des messages d'erreur utiles créent une expérience intuitive et interactive.
-
Nouveau rythme de publication
À partir de MongoDB 5.0, MongoDB publie les versions en deux séries : les versions majeures et les versions rapides. Les versions rapides sont destinées au développement et à l'évaluation. N'utilisez pas les versions rapides dans un environnement de production.
Fonctionnalités de MongoDB 4.4
Cette version répond aux points de douleur les plus courants des utilisateurs des versions précédentes.
-
Index masqués
Vous pouvez masquer un index existant pour empêcher son utilisation dans les requêtes ultérieures. Cela vous permet d'observer l'impact sur les performances de la suppression d'un index potentiellement inefficace avant de le supprimer définitivement.
-
Clés de shard affinables
Vous pouvez ajouter un ou plusieurs champs suffixes à une clé de shard existante pour améliorer la distribution des documents. Cela empêche les requêtes de se concentrer sur un seul shard, répartissant ainsi la charge du serveur.
-
Clés de shard hachées composées
Vous pouvez spécifier un seul champ haché au sein d'un index composite. Cela simplifie considérablement la logique de votre application.
-
Lectures protégées (Hedged reads)
Pour une instance de cluster fragmenté, vous pouvez envoyer simultanément une requête de lecture à deux membres d'un ensemble de réplicas au sein d'un shard. Le cluster renvoie ensuite au client le résultat provenant du membre ayant répondu le plus rapidement, ce qui contribue à réduire la latence des requêtes.
-
Réplication en continu
Le nœud principal diffuse proactivement l'Oplog vers les nœuds secondaires. Cette méthode réduit le temps d'aller-retour de près de moitié par rapport à la méthode d'interrogation (polling) des versions précédentes, améliorant ainsi les performances de réplication.
-
Indexation simultanée
Les index sont construits simultanément sur les nœuds principaux et secondaires. Cela réduit considérablement le décalage de réplication pendant la création des index et garantit que les nœuds secondaires peuvent accéder aux dernières données rapidement.
-
Lectures en miroir
Le nœud principal peut mettre en miroir un pourcentage du trafic de lecture vers les nœuds secondaires. Cela garantit que les nœuds secondaires gèrent une partie de la charge de lecture, ce qui contribue à réduire la latence d'accès des applications.
-
Synchronisation initiale reprenable
Cette fonctionnalité offre une capacité de transfert reprenable pendant le processus de synchronisation complète entre un nœud principal et un nœud secondaire. Cela empêche le redémarrage de la synchronisation initiale en cas d'interruption réseau.
-
Rétention de l'oplog basée sur le temps
Vous pouvez spécifier une période de rétention personnalisée pour l'Oplog. Cela permet d'éviter que le nœud principal ne supprime trop tôt les entrées de l'Oplog, ce qui pourrait autrement déclencher une synchronisation complète.
-
Union
La nouvelle étape $unionWith vous permet de combiner des données provenant de plusieurs collections, de manière similaire à la fonction
union allen SQL. Cela améliore les capacités de requête de MongoDB. -
Expressions d'agrégation personnalisées
Les nouveaux opérateurs $accumulator et $function vous permettent de créer des expressions d'agrégation personnalisées, améliorant ainsi la cohérence de l'API et l'expérience utilisateur globale.
Pour en savoir plus sur les nouvelles fonctionnalités de MongoDB 4.4, consultez Fonctionnalités de MongoDB 4.4.
MongoDB 4.2
Cette version utilise le commit en deux phases pour garantir les propriétés ACID des transactions dans un cluster fragmenté. Cette fonctionnalité élargit considérablement les cas d'utilisation de MongoDB.
-
Transactions distribuées
Le commit en deux phases garantit les propriétés ACID des transactions dans un cluster fragmenté. Cette fonctionnalité élargit considérablement les cas d'utilisation de MongoDB, marquant un saut d'une base de données NoSQL vers une base de données NewSQL.
-
Lectures retryables
Les lectures retryables retent automatiquement les opérations dans des environnements réseau peu fiables, simplifiant la logique de votre application et assurant la continuité des activités.
-
Index génériques (Wildcard indexes)
Un index générique peut couvrir plusieurs champs au sein d'un document, offrant une plus grande flexibilité pour les schémas avec des champs non déterministes et simplifiant la gestion.
-
Chiffrement au niveau des champs
Le chiffrement au niveau des champs est désormais disponible au niveau du pilote, vous permettant de chiffrer des données sensibles spécifiques, telles que les noms de compte, les mots de passe, les prix et les numéros de téléphone, sans chiffrer l'intégralité de la base de données. Cela améliore à la fois la flexibilité et la sécurité.
-
Vues matérialisées
Une vue matérialisée met en cache les résultats de calcul pour éviter les calculs redondants, améliorer l'efficacité opérationnelle et réduire la complexité logique.
MongoDB 4.0
Cette version est idéale pour les cas d'utilisation nécessitant la prise en charge des transactions et des fonctionnalités NoSQL, en particulier dans le secteur financier.
-
Prise en charge des transactions inter-documents
En tant que première base de données cloud NoSQL à prendre en charge les transactions inter-documents, MongoDB 4.0 combine la vitesse et la flexibilité du modèle de document avec la garantie ACID.
-
Migration des données 40 % plus rapide
Les lectures et écritures simultanées permettent aux nouveaux nœuds de shard de terminer la migration des données plus rapidement et de gérer les charges de travail de service croissantes.
-
Performances en lecture considérablement améliorées
Avec la prise en charge des transactions, les nœuds secondaires ne bloquent plus les requêtes de lecture pendant la synchronisation de l'oplog. De plus, Alibaba Cloud prend en charge la mise à l'échelle multi-nœuds pour toutes les éditions, augmentant substantiellement la capacité de lecture.
MongoDB 3.4 (obsolète)
Cette version apporte plusieurs améliorations en matière de performances et de sécurité par rapport à MongoDB 3.2.
MongoDB 3.2 a été retiré. Pour plus d'informations, consultez [[Avis] Le 4 février, ApsaraDB for MongoDB a retiré la version 3.2 et lancé la version 4.2](t1859745.dita#concept_2347576).
-
Synchronisation primaire/secondaire plus rapide
Tous les index sont désormais construits pendant la synchronisation des données, contrairement aux versions précédentes où seul l'index _id était créé. Un nœud secondaire lit continuellement les nouvelles entrées de l'oplog pour s'assurer que sa base de données locale dispose d'un stockage suffisant pour les données temporaires.
-
Équilibrage de charge plus efficace
Dans MongoDB 3.2 et les versions antérieures, les nœuds mongos géraient l'équilibrage de charge pour un cluster fragmenté. Plusieurs nœuds mongos entraient en concurrence pour un verrou distribué, et le nœud gagnant migrait un chunk entre les shards. Dans MongoDB 3.4, cette tâche est transférée au nœud principal de l'ensemble de réplicas du serveur de configuration, ce qui améliore considérablement à la fois la concurrence et l'efficacité de l'équilibrage de charge.
-
Opérations d'agrégation enrichies
La version 3.4 ajoute un grand nombre d'opérateurs d'agrégation pour offrir des capacités d'analyse de données plus puissantes. Par exemple,
bucketpermet de classer facilement les données,$grahpLookupprend en charge des opérations relationnelles plus complexes par rapport à$lookupde la version 3.2, et$addFieldsenrichit les opérations sur les documents, comme la somme de champs spécifiques et le stockage du résultat dans un nouveau champ. -
Prise en charge des zones de sharding
Cette version introduit des zones pour un cluster fragmenté, remplaçant le mécanisme précédent de sharding conscient des tags. Cette fonctionnalité vous permet d'assigner des données spécifiques à un ou plusieurs shards désignés et simplifie le déploiement d'un cluster fragmenté sur plusieurs centres de données.
-
Prise en charge de la collation
Auparavant, les chaînes étaient comparées octet par octet. La collation vous permet de spécifier des règles spécifiques à la langue pour la comparaison de chaînes, telles que les règles relatives à la casse et aux diacritiques. Cela permet des comparaisons insensibles à la casse et un tri basé sur une locale spécifique.
-
Prise en charge des vues en lecture seule
Vous pouvez créer une collection virtuelle à partir des résultats d'une requête sur une autre collection ou vue. Vous pouvez ensuite exécuter des opérations de lecture sur cette vue comme vous le feriez sur une collection standard.