MongoDB est de loin le choix le plus populaire dans le monde NoSQL car son architecture distribuée permet une plus grande évolutivité et son modèle de données de document offre une bonne flexibilité aux développeurs. Presque chaque année, une version majeure de MongoDB est publiée et 2018 ne fait pas exception. MongoDB 4.0 est sorti en juillet 2018, suivi de quelques autres versions mineures également. Avec MongoDB version 4.0, les transactions multi-documents et les conversions de type sont désormais prises en charge. MongoDB a introduit un nouvel outil appelé MongoDB charts (beta) et ajouté la prise en charge du générateur de pipeline d'agrégation dans la boussole MongoDB également en 2018. Dans cet article, nous passerons en revue certaines fonctionnalités intéressantes de MongoDB qui ont été publiées en 2018.
Transactions ACID multi-documents
C'était la fonctionnalité la plus attendue de MongoDB. À partir de la version 4.0, les transactions acides multi-documents par rapport aux jeux de répliques sont prêtes pour la production et prises en charge par MongoDB. Toutes les transactions MongoDB étendent désormais les propriétés ACID qui garantissent l'intégrité des données. Il est vraiment facile d'ajouter des transactions acides dans n'importe quelle application qui en a besoin et elles n'affectent pas les autres opérations qui n'en ont pas besoin. Avec la prise en charge des transactions acides multi-documents, toute opération d'écriture effectuée à l'intérieur de la transaction ne sera pas visible en dehors de la transaction. Voici quelques commandes utiles pour ajouter des transactions acides multi-documents dans votre application.
Fonction | Description |
---|---|
Session.startTransaction() | Commencer une nouvelle transaction |
Session.commitTransaction() | Valide la transaction |
Session.abortTransaction() | Annule la transaction |
Voici un petit exemple d'ajout d'opérations de transaction à l'aide du shell Mongo :
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Toutes les transactions fournissent une vue cohérente des données sur une ou plusieurs collections dans la base de données à l'aide de l'isolement d'instantané. MongoDB n'appliquera aucune modification non validée aux nœuds/réplicas secondaires. Une fois qu'une transaction est validée, toutes les modifications seront appliquées aux nœuds secondaires.
Il existe de nombreux exemples où nous pouvons utiliser les transactions acides multi-documents MongoDB telles que,
- Transfert de fonds entre comptes bancaires
- Système de paiement
- Système d'échange
- Système de chaîne d'approvisionnement
- Système de facturation
Éléments à prendre en compte lors de l'ajout de transactions
- MongoDB abandonnera toute transaction qui s'exécute pendant plus de 60 secondes.
- Pas plus de 1 000 documents doivent être modifiés en une seule transaction. Aucune limite pour les opérations de lecture.
- Toute transaction doit avoir une taille inférieure à 16 Mo, car MongoDb stocke toute transaction sous la forme d'une seule entrée dans oplog.
- Lorsque vous abandonnez une transaction, toutes les modifications seront annulées.
Nouveaux opérateurs de conversion de type dans le pipeline d'agrégation
Pour obtenir des informations en temps réel sur les données et écrire des requêtes complexes, les développeurs MongoDB préfèrent généralement créer un pipeline d'agrégation. Dans la version 4.0 de MongoDB, de nouveaux opérateurs de conversion de type d'agrégation ont été ajoutés pour interroger les données sans nettoyer les champs individuels.
Opérateur d'agrégation | Description |
---|---|
$convert | Convertit la valeur en un type spécifié |
$toDate | Convertit la valeur en date |
$toDecimal | Convertit la valeur en décimal |
$toDouble | Convertit la valeur en Double |
$toLong | Convertit la valeur en Long |
$toInt | Convertit la valeur en nombre entier |
$toObjectId | Convertit la valeur en ObjectId |
$toString | Convertit la valeur en chaîne |
$ltrim | Supprimer les caractères inutiles du début de la chaîne |
$rtrim | Supprimer les caractères inutiles à la fin de la chaîne |
$trim | Supprimez les caractères inutiles des deux côtés de la chaîne |
Fonctionnalité étendue des flux de changement
La fonctionnalité des flux de modifications qui fournit des mises à jour des modifications de données en temps réel sans aucun paramètre complexe a été introduite dans la version 3.6. Avec la version 4.0, les flux de modifications peuvent désormais suivre les modifications de l'ensemble de la base de données ou du cluster au lieu d'une seule collection. En dehors de cela, désormais, les flux de modifications renvoient également l'horodatage du cluster associé à un événement qui peut être utile pour les applications serveur.
Migrations de données plus rapides
Lorsque votre base de données est partitionnée sur l'ensemble du cluster, l'ajout et la suppression élastiques de nœuds d'un cluster partitionné peuvent parfois prendre du temps. L'équilibreur de cluster fragmenté, qui est chargé de distribuer les données sur tous les fragments, a obtenu une mise à jour majeure dans la version 4.0. Désormais, il peut terminer la migration des données à un rythme 40 % plus rapide.
Lectures secondaires non bloquantes
Auparavant, MongoDB bloquait toutes les lectures secondaires lorsque les entrées oplog étaient appliquées aux nœuds secondaires. Cela provoquait une latence variable des lectures secondaires. À partir de MongoDB 4.0, les lectures secondaires sont devenues non bloquantes en raison de l'augmentation du débit des jeux de répliques et de l'amélioration des latences de lecture.
Constructeur de pipeline d'agrégation dans Compass
La boussole MongoDB est l'outil graphique permettant à MongoDB de visualiser et d'interroger des données. Cette année, la boussole MongoDB a obtenu une nouvelle fonctionnalité de pipeline d'agrégation. Il fournit un éditeur de requêtes visuel pour la création de pipelines d'agrégation à plusieurs étapes. En voici l'instantané :
Générateur de requêtes d'agrégation dans CompassEn plus de cette fonctionnalité, Compass a également la possibilité d'exporter vos requêtes vers n'importe quel langage de code natif de votre choix.
Graphiques MongoDB
MongoDB Charts est le nouvel outil qui permet à l'utilisateur de créer rapidement des visualisations en temps réel des données MongoDB. Cet outil est conçu pour le modèle de données de document avec prise en charge de la gestion des types, des réductions de tableau et des documents imbriqués. Cet outil permet à l'utilisateur de créer des tableaux de bord graphiques et de les partager avec d'autres utilisateurs. Les graphiques MongoDB sont désormais entièrement intégrés à MongoDB Atlas.
Autres nouvelles fonctionnalités de MongoDB
- MongoDB Stitch :plate-forme sans serveur pour le développement d'applications clientes pouvant accéder aux services Mongo en toute sécurité.
- MongoDB Kubernetes :pour déployer MongoDB dans le cluster Kubernetes.
- MongoDB Mobile :Fournit la flexibilité et la puissance de MongoDB sous une forme compacte afin qu'il puisse être utilisé dans les appareils IOT.
- MongoDB Monitoring Cloud Service :pour transférer gratuitement les métadonnées de surveillance vers le cloud de surveillance MongoDB.
L'avenir de MongoDB
MongoDB prévoit également de lancer de nouvelles fonctionnalités avec sa version 4.2 qui comprend,
- Moteur WiredTiger plus complet
- Gestionnaire des transactions
- Transactions au sein d'un déploiement partagé
- Lectures globales à un instant donné