Publication de la base de données intégrée libmdbx 0.13.6

La version de la bibliothèque libmdbx 0.13.6 (MDBX) a été publiée, avec la réalisation d'une base de données intégrée compacte et haute performance de type clé-valeur. Le code de libmdbx est distribué sous la licence Apache 2.0. Toutes les versions actuelles des systèmes d'exploitation et des architectures sont prises en charge, ainsi que le Elbrus 2000 russe. Pour libmdbx, une API développée pour C++ est proposée, ainsi que des liaisons prises en charge par des passionnés pour les langages Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala. Parmi les projets utilisant libmdbx, on peut noter Isar, Erigon et Reth, ainsi que les développements des entreprises StarkWare et Positive Technologies.

Historiquement, libmdbx est une refonte approfondie de la base de données LMDB et surpasse son prédécesseur en termes de fiabilité, de fonctionnalités et de performances. Comparé à LMDB, libmdbx accorde une grande attention à la qualité du code, à la stabilité de l'API, à la testabilité et aux vérifications automatiques. Un outil de vérification de l'intégrité de la structure de la base de données est également fourni, offrant certaines capacités de récupération. Techniquement, libmdbx propose ACID, une sérialisation stricte des changements et une lecture non bloquante avec un scalabilité linéaire sur les cœurs CPU. La compression automatique, la gestion automatique de la taille de la base de données et l'estimation de la taille des requêtes par intervalles (range query estimation) sont également prises en charge.

Principales modifications :

  • Changement de comportement : Lorsqu'il n'est pas possible de détacher le curseur de sa transaction actuelle, la fonction mdbx_cursor_bind() retourne maintenant MDBX_EINVAL au lieu de MDBX_BAD_TXN.
  • Pour éviter des problèmes potentiels, l'utilisation de copy_file_range() a été désactivée sur les noyaux Linux 5.3 à 5.18.
  • Une erreur std::invalid_argument est maintenant générée avec un message explicite MDBX_EINVAL.
  • Un retour en arrière lors de l'utilisation de curseurs pour DBI=0 (alias GC/FreeDB) dans les transactions de lecture a été corrigé.
  • Un retour en arrière sous forme d'erreur EAGAIN lors de la copie de la base de données sur NFS et CIFS/SMB a été corrigé.
  • Lors des améliorations et du développement de l'API dans la fonction de copie, un blocage de fichier a été ajouté via fcntl() et flock(). Cependant, en fonction de la version du noyau local, de la version distante de serveurs NFS et des options de montage, cela pouvait entraîner le retour d'une erreur POSIX EAGAIN (11 sur la plupart des plateformes, y compris Linux).
  • Un bogue de merge/rebase dans mdbx_txn_release_all_cursors_ex() a été corrigé, ce qui pouvait entraîner des erreurs MDBX_EBADSIGN inattendues et des fuites de mémoire.
  • La vérification assertion dans le chemin de fin des transactions imbriquées a été corrigée.
  • La possibilité de retourner une erreur MDBX_BUSY inattendue de mdbx_txn_lock(dont_wait=false) a été corrigée.
  • Pour la compatibilité avec GCC 15.x en mode C23, l'ordre des attributs de fonction a été modifié.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster