AprĂšs un an de dĂ©veloppement, la version orientĂ©e documents du SGBD MongoDB 6.0 est prĂ©sentĂ©e, occupant une niche entre les systĂšmes rapides et Ă©volutifs opĂ©rant avec des donnĂ©es au format clĂ©/valeur et les SGBD relationnels, fonctionnels et pratiques pour la formation de requĂȘtes. Le code de MongoDB est Ă©crit en C++ et est distribuĂ© sous la licence SSPL, qui est basĂ©e sur la licence AGPLv3, mais n'est pas ouverte, car elle contient l'exigence discriminatoire de fournir sous la licence SSPL non seulement le code de l'application elle-mĂȘme, mais aussi les sources de tous les composants impliquĂ©s dans la fourniture du service cloud.
MongoDB prend en charge le stockage de documents au format similaire Ă JSON, dispose d'un langage suffisamment flexible pour formuler des requĂȘtes, peut crĂ©er des index pour divers attributs stockĂ©s, permet un stockage efficace de gros objets binaires, prend en charge le journal des opĂ©rations de modification et d'ajout de donnĂ©es dans la base de donnĂ©es, peut fonctionner selon la paradigme Map/Reduce, et prend en charge la rĂ©plication et la construction de configurations tolĂ©rantes aux pannes.
MongoDB dispose d'outils intĂ©grĂ©s pour assurer le partitionnement (distribution d'un ensemble de donnĂ©es sur des serveurs en fonction d'une clĂ© dĂ©finie), combinĂ©s avec la rĂ©plication, permettant de construire un cluster de stockage horizontalement Ă©volutif, oĂč il n'y a pas de point unique de dĂ©faillance (la panne de n'importe quel nĆud n'affecte pas le fonctionnement de la base de donnĂ©es), avec une rĂ©cupĂ©ration automatique en cas de panne et un transfert de charge depuis le nĆud dĂ©faillant. L'extension du cluster ou la transformation d'un de serveurs Ă©lĂ©ment en cluster se fait sans arrĂȘter le fonctionnement de la base de donnĂ©es, simplement en ajoutant de nouvelles machines.
Les principales caractéristiques de la nouvelle version :
- La possibilitĂ© d'exĂ©cuter des requĂȘtes couvrant les donnĂ©es stockĂ©es sous forme chiffrĂ©e (Queryable Encryption) a Ă©tĂ© mise en Ćuvre. Les donnĂ©es sont dĂ©chiffrĂ©es cĂŽtĂ© utilisateur et restent chiffrĂ©es pendant le traitement de la requĂȘte (la requĂȘte est exĂ©cutĂ©e sur des donnĂ©es chiffrĂ©es, sans dĂ©chiffrement prĂ©alable). Actuellement, les requĂȘtes n'autorisent que des expressions de comparaison, mais le support pour la vĂ©rification des intervalles, des prĂ©fixes, des suffixes, des sous-chaĂźnes et d'autres opĂ©rations devrait ĂȘtre ajoutĂ© ultĂ©rieurement.
- Les capacitĂ©s liĂ©es au stockage de donnĂ©es sous forme de sĂ©ries temporelles (collections de sĂ©ries temporelles), optimisĂ©es pour stocker des ensembles de valeurs de paramĂštres enregistrĂ©es Ă intervalles rĂ©guliers (temps et ensemble des valeurs correspondantes Ă ce temps), ont Ă©tĂ© Ă©largies. Par exemple, le besoin de stocker ce type de donnĂ©es se prĂ©sente dans les systĂšmes de surveillance, les plateformes financiĂšres, les systĂšmes d'enquĂȘte sur l'Ă©tat des capteurs. La nouvelle version permet l'utilisation d'index secondaires et composĂ©s avec des collections de donnĂ©es sous forme de sĂ©ries temporelles. Un support a Ă©tĂ© ajoutĂ© pour l'attachement de donnĂ©es supplĂ©mentaires, telles que des informations gĂ©ographiques pour prendre en compte la distance et la localisation. Les performances de lecture, d'exĂ©cution des requĂȘtes et de tri ont Ă©tĂ© amĂ©liorĂ©es.
- De nouveaux outils de suivi des modifications (« flux de modifications », API Change Streams) ont Ă©tĂ© ajoutĂ©s, permettant d'organiser l'envoi de notifications aux applications concernant les changements de donnĂ©es dans la base de donnĂ©es. Les informations sur les modifications sont envoyĂ©es en temps rĂ©el, permettant de crĂ©er des applications utilisant des mĂ©thodes de programmation rĂ©active et orientĂ©e Ă©vĂ©nements. Les Ă©vĂ©nements sont traitĂ©s par la mĂ©thode watch, et les Ă©vĂ©nements nĂ©cessaires peuvent ĂȘtre filtrĂ©s et agrĂ©gĂ©s Ă l'aide des opĂ©rateurs $match, $project et $redact. La nouvelle version permet d'obtenir l'Ă©tat prĂ©cĂ©dent et suivant d'un document (par exemple, lorsqu'un document est supprimĂ© ou modifiĂ©). En plus des opĂ©rations utilisant le langage DML (data manipulation language), le support des opĂ©rations DDL (data definition language) a Ă©tĂ© ajoutĂ©, telles que la crĂ©ation et la suppression d'index et de collections. Des outils ont Ă©tĂ© ajoutĂ©s pour filtrer les notifications associĂ©es.
- Les opérateurs $lookup et $graphlookup prennent désormais en charge pleinement les dépÎts partitionnés (sharded). La performance de l'opération $lookup a été optimisée, par exemple, en cas de présence d'un index sur la clé externe, le rapprochement d'un petit nombre de documents s'effectue désormais 5 à 10 fois plus vite, tandis que pour un grand nombre de documents, c'est deux fois plus rapide. Pour des rapprochements sans index, l'augmentation de performance peut atteindre 100 fois.
- Il est dĂ©sormais possible d'exĂ©cuter des requĂȘtes analytiques complexes sur des instantanĂ©s cohĂ©rents des donnĂ©es de travail. De telles requĂȘtes analytiques peuvent couvrir plusieurs segments dans de grandes configurations MongoDB distribuĂ©es.
- De nouveaux opérateurs $maxN, $minN et $lastN ont été ajoutés pour déterminer les valeurs dans un ensemble de données, ainsi que l'opérateur $sortArray pour trier les éléments d'un tableau.
- L'efficacité du partitionnement a été considérablement améliorée. La taille de bloc par défaut pour une collection partitionnée a été augmentée à 128 Mo. La commande configureCollectionBalancing a été ajoutée pour défragmenter une collection partitionnée.
- Le chiffrement des données cÎté client au niveau des champs (CSFLE, client-side field-level encryption) prend désormais en charge les fournisseurs de clés compatibles KMIP.
- Il est désormais possible de compresser et de chiffrer le journal d'audit, qui reflÚte l'activité des utilisateurs du SGBD.
- Un mode expĂ©rimental de synchronisation des donnĂ©es entre les clusters MongoDB (Cluster-to-Cluster Sync) a Ă©tĂ© mis en Ćuvre.
Source : opennet.ru
