Publication de la base de données embarquée haute performance libmdbx 0.11.3

La bibliothèque libmdbx 0.11.3 (MDBX) a été publiée, offrant une base de données intégrée hautes performances de type clé-valeur. Le code de libmdbx est distribué sous la licence OpenLDAP Public License. Tous les systèmes d'exploitation et architectures récents sont pris en charge, ainsi que le Elbrus 2000 russe. À la fin de 2021, libmdbx est utilisé comme backend de stockage dans deux des clients Ethereum les plus rapides — Erigon et le nouveau «Requin», qui, selon les informations disponibles, est le client Ethereum le plus performant.

Historiquement, libmdbx est une refonte approfondie de la base de données LMDB et la dépasse en matière de fiabilité, de fonctionnalités et de performance. Comparé à LMDB, libmdbx accorde une grande attention à la qualité du code, à un fonctionnement stable de l'API, aux tests et aux vérifications automatiques. Un utilitaire de vérification de l'intégrité de la structure de la base de données est fourni, avec certaines options de récupération.

Technologiquement, libmdbx offre ACID, une sérialisation stricte des modifications et une lecture non bloquante avec un évolutivité linéaire selon les cœurs de CPU. La compactification automatique est supportée, ainsi que la gestion automatique de la taille de la base de données et l'estimation des volumes des requêtes par plages (range query estimation). Depuis 2016, le projet est financé par la société Positive Technologies et, depuis 2017, est utilisé dans ses produits.

Libmdbx propose une API C++, ainsi que des liaisons prises en charge par des passionnés pour les langages Rust, Haskell, Python, NodeJS, Ruby, Go et Nim.

Les principales nouveautés, modifications et corrections ajoutées depuis la précédente annonce du 11 octobre :

  • L'API C++ est considérée comme prête à être utilisée.
  • La mise à jour des données GC a été considérablement accélérée lors de la validation de grandes transactions, ce qui est particulièrement pertinent lors de l'utilisation de libmdbx dans l'écosystème Ethereum.
  • La signature interne du format de la base de données a été modifiée pour prendre en charge les mises à jour automatiques, complètement transparentes pour les utilisateurs. Cela permet d'éliminer les faux positifs de corruption de la base de données, lorsque des versions obsolètes de la bibliothèque sont utilisées pour lire des transactions validées par des versions actuelles.
  • Les fonctions mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() et mdbx_env_get_syncbytes() ont été ajoutées. Le support de l'opération MDBX_SET_UPPERBOUND a été ajouté.
  • Toutes les alertes lors de la compilation ont été éliminées pour tous les compilateurs pris en charge en modes C++ 11/14/17/20. La compatibilité avec les compilateurs obsolètes a été assurée : clang à partir de 3.9, gcc à partir de 4.8, y compris la construction via sdevtoolset-9 pour CentOS/RHEL 7.
  • La possibilité de conflit entre les méta-pages après un changement manuel vers une méta-page spécifique à l'aide de l'outil mdbx_chk a été éliminée.
  • Correction du retour de l'erreur inattendue MDBX_PROBLEM lors de l'écriture de méta-pages obsolètes.
  • Correction du retour de MDBX_NOTFOUND en cas de correspondance imprécise lors du traitement de la demande MDBX_GET_BOTH.
  • Correction d'une erreur de compilation sous Linux en cas d'absence de fichiers d'en-têtes décrivant les interfaces avec le noyau.
  • Correction d'une collision entre le drapeau interne MDBX_SHRINK_ALLOWED et l'option MDBX_ACCEDE.
  • Élimination de plusieurs assertions superflues.
  • Correction d'un retour inattendu de MDBX_RESULT_TRUE depuis la fonction mdbx_env_set_option().
  • Au total, plus de 90 modifications ont été apportées dans 25 fichiers, environ 1300 lignes ajoutées, et environ 600 supprimées.

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