Publication de la base de données embarquée libmdbx 0.13.3

La version 0.13.3 de la bibliothÚque libmdbx (MDBX) a été publiée, offrant une base de données intégrée compacte et performante de type clé-valeur. Le code de libmdbx est distribué sous la licence Apache 2.0. Toutes les systÚmes d'exploitation et architectures récents sont pris en charge, y compris le Elbrus 2000 russe. Libmdbx propose une API étoffée pour C++, ainsi que des liaisons supportées par des passionnés pour les langages Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Historiquement, libmdbx est une réécriture approfondie du SGBD LMDB et surpasse son prĂ©dĂ©cesseur en termes de fiabilitĂ©, de fonctionnalitĂ©s et de performances. Par rapport Ă  LMDB, libmdbx accorde une grande importance Ă  la qualitĂ© du code, Ă  la stabilitĂ© 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 capacitĂ©s de rĂ©cupĂ©ration. Sur le plan technologique, libmdbx propose ACID, une sĂ©rialisation stricte des modifications et une lecture non-bloquante avec une scalabilitĂ© linĂ©aire sur les cƓurs CPU. La compactage automatique est pris en charge, ainsi que la gestion automatique de la taille de la base de donnĂ©es, et l'estimation du volume des Ă©chantillons par plages (estimation des requĂȘtes de plage).

Principales modifications :

  • La branche 0.13.x a Ă©tĂ© dĂ©clarĂ©e stable. Le dĂ©veloppement de la branche 0.14.x a commencĂ©.
  • La fonction mdbx_cursor_count_ex() a Ă©tĂ© ajoutĂ©e Ă  l'API C, permettant d'obtenir Ă  la fois le nombre de valeurs multiples correspondant Ă  la clĂ© actuelle et des informations sur l'arbre imbriquĂ© stockant ces valeurs.
  • La mĂ©thode mdbx::txn::make_broken() a Ă©tĂ© ajoutĂ©e Ă  l'API C++, similaire Ă  mdbx_txn_break().
  • Les utilitaires mdbx_copy, mdbx_drop, mdbx_dump, mdbx_load et mdbx_stat implĂ©mentent maintenant la journalisation des erreurs, avertissements et messages importants de libmdbx.
  • Changement de comportement :
    • Lorsque le profilage du ramasse-miettes est activĂ© (compilation avec l'option MDBX_ENABLE_PROFGC=ON), le temps CPU consacrĂ© Ă  la fusion des listes de pages est maintenant comptabilisĂ©, c'est-Ă -dire le fonctionnement de la fonction pnl_merge().
    • Dans l'utilitaire de test, la valeur du mode de donnĂ©es a Ă©tĂ© renommĂ©e de data.dups en data.multi.
    • Le contrĂŽle de la longueur de la clĂ© dans cursor_seek() a Ă©tĂ© amĂ©liorĂ©.
    • Si aucune valeur n'est dĂ©finie par l'utilisateur via mdbx_env_set_option(MDBX_opt_txn_dp_limit), le dirty-pages-limit est ajustĂ© au dĂ©marrage de chaque transaction d'Ă©criture non imbriquĂ©e, en fonction de la quantitĂ© de RAM disponible et de la taille de la base de donnĂ©es.
    • En mode MDBX_NOSTICKYTHREADS, le commit/abort des transactions imbriquĂ©es est autorisĂ© depuis n'importe quel thread.
    • Lors de la tentative de lancement de transactions imbriquĂ©es en mode MDBX_WRITEMAP, un journal est créé et une erreur MDBX_INCOMPATIBLE est retournĂ©e.
    • Dans l'API C++, seuls les valeurs par dĂ©faut sont utilisĂ©es par dĂ©faut dans les constructeurs/initiateurs et les mĂ©thodes liĂ©es Ă  la formation de la gĂ©omĂ©trie de la base de donnĂ©es.
    • À l'intĂ©rieur de mdbx_env_set_geometry(), des heuristiques ont Ă©tĂ© amĂ©liorĂ©es pour le choix des paramĂštres de gĂ©omĂ©trie de la base de donnĂ©es demandĂ©s par l'utilisateur par dĂ©faut.
  • Corrections :
    • Un rĂ©gressif concernant le dĂ©blocage du mutex lors de la tentative de fermeture rĂ©pĂ©tĂ©e du descripteur dbi a Ă©tĂ© corrigĂ©, y compris lors de la tentative de fermeture explicite du descripteur aprĂšs la suppression de la table associĂ©e.
    • Un rĂ©gressif sur l'Ă©tat du curseur imbriquĂ©/dupsort aprĂšs l'insertion de donnĂ©es en mode MDBX_APPEND a Ă©tĂ© corrigĂ©.
    • Prise en charge de l'obtention de boot_id lors de l'exĂ©cution Ă  l'intĂ©rieur d'un conteneur LXC.
    • Une erreur de traitement incorrect des tentatives de lancement d'une transaction de lecture imbriquĂ©e a Ă©tĂ© corrigĂ©e. Dans de telles situations, l'erreur MDBX_EINVAL est maintenant retournĂ©e, car l'imbrication n'est prise en charge que pour les transactions de lecture-Ă©criture.
    • Un rĂ©gressif SIGSEGV d'accĂšs Ă  une adresse nulle lorsque vous travaillez en mode lecture seule sans utiliser de fichier LCK, par exemple lorsque la base de donnĂ©es est stockĂ©e sur un support en lecture seule, a Ă©tĂ© corrigĂ©.

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