Sortie du SGBD embarqué hautes performances libmdbx 0.11.3

La bibliothèque libmdbx 0.11.3 (MDBX) a été publiée avec la mise en œuvre d'une base de données clé-valeur intégrée compacte et hautes performances. Le code libmdbx est sous licence publique OpenLDAP. Tous les systèmes d'exploitation et architectures actuels sont pris en charge, ainsi que le russe Elbrus 2000. Fin 2021, libmdbx est utilisé comme backend de stockage dans les deux clients Ethereum les plus rapides - Erigon et le nouveau « Shark », qui, selon les données disponibles. informations, est le client Ethereum le plus performant.

Historiquement, libmdbx est une refonte profonde du SGBD LMDB et surpasse son ancêtre en termes de fiabilité, de fonctionnalités et de performances. Par rapport à LMDB, libmdbx met beaucoup l'accent sur la qualité du code, la stabilité de l'API, les tests et les vérifications automatisées. 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.

Sur le plan technologique, libmdbx offre ACID, une sérialisation forte des modifications et des lectures non bloquantes avec une mise à l'échelle linéaire sur les cœurs de processeur. La compactification automatique, la gestion automatique de la taille de la base de données et l'estimation des requêtes de plage sont prises en charge. Depuis 2016, le projet est financé par Positive Technologies et est utilisé dans ses produits depuis 2017.

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

Innovations majeures, améliorations et corrections ajoutées depuis la précédente news du 11 octobre :

  • L'API C++ est considérée comme prête à l'emploi.
  • La mise à jour des données GC lors de la validation d'énormes transactions a été considérablement accélérée, ce qui est particulièrement important 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 la mise à jour automatique, totalement transparente pour les utilisateurs. Cela vous permet d'éliminer les messages faussement positifs concernant la corruption de la base de données lorsque des versions obsolètes de la bibliothèque sont utilisées pour lire les transactions enregistrées par les versions actuelles.
  • Ajout des fonctions mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() et mdbx_env_get_syncbytes(). Ajout de la prise en charge de l'opération MDBX_SET_UPPERBOUND.
  • Tous les avertissements lors de la construction avec tous les compilateurs pris en charge dans les modes C++ 11/14/17/20 ont été éliminés. La compatibilité avec les compilateurs existants est assurée : clang à partir de 3.9, gcc à partir de 4.8, y compris l'assemblage utilisant cdevtoolset-9 pour CentOS/RHEL 7.
  • Correction de la possibilité d'un conflit de page méta après le passage manuel à une page méta spécifique à l'aide de l'utilitaire mdbx_chk.
  • Correction d'une erreur MDBX_PROBLEM inattendue renvoyée lors de l'écrasement des pages méta héritées.
  • Correction du retour de MDBX_NOTFOUND en cas de correspondance inexacte lors du traitement d'une requête MDBX_GET_BOTH.
  • Correction d'une erreur de compilation sous Linux en l'absence de fichiers d'en-tête avec des descriptions d'interfaces avec le noyau.
  • Correction d'un conflit entre l'indicateur interne MDBX_SHRINK_ALLOWED et l'option MDBX_ACCEDE.
  • Plusieurs contrôles d'assertion inutiles ont été éliminés.
  • Correction du retour inattendu de MDBX_RESULT_TRUE de la fonction mdbx_env_set_option().
  • Au total, plus de 90 modifications ont été apportées à 25 fichiers, environ 1300 600 lignes ont été ajoutées et environ XNUMX ont été supprimées.

Source: opennet.ru

Ajouter un commentaire