Sortie de la base de données intégrée libmdbx 0.13.2

La publication de la bibliothÚque libmdbx 0.13.2 (MDBX) avec l'implémentation d'une base de données intégrée compacte et hautes performances de type clé-valeur. Le code libmdbx est distribué sous la licence Apache 2.0. Il prend en charge tous les systÚmes d'exploitation et architectures modernes, ainsi que le Elbrus 2000 russe. Pour libmdbx, une API développée pour C++ est proposée, ainsi que des liaisons à des langages pris en charge par des passionnés tels que 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 mise Ă  jour du GC lors du retour/de l'insertion de listes de pages dans des scĂ©narios complexes a Ă©tĂ© accĂ©lĂ©rĂ©e. Le mode expĂ©rimental de rĂ©troaction corrective, qui Ă©tait auparavant dĂ©sactivĂ©, a Ă©tĂ© amĂ©liorĂ© et activĂ©. Cela a fondamentalement amĂ©liorĂ© la convergence (rĂ©duisant le nombre de tentatives rĂ©pĂ©tĂ©es), et le dĂ©faut provoquant un "bouclage" lors du commit des transactions (avec retour de l'erreur MDBX_PROBLEM) dans des conditions spĂ©cifiques rares a Ă©tĂ© Ă©liminĂ©.
  • Le standard C23 a Ă©tĂ© inclus dans les scripts d'assemblage CMake.
  • Des macros T ont Ă©tĂ© ajoutĂ©es pour les fonctions par paires char/wchar_t.
  • Le support des transactions d'Ă©criture imbriquĂ©es a Ă©tĂ© ajoutĂ© Ă  l'API C++.
  • La transition vers la deuxiĂšme Ă©dition de la spĂ©cification de versionnement sĂ©mantique (« Semantic Versioning 2 ») a Ă©tĂ© rĂ©alisĂ©e et l'exportation d'informations de version dans VERSION.json a Ă©tĂ© assurĂ©e.
  • Pour garantir la reproductibilitĂ© des assemblages, le support de la variable d'environnement SOURCE_DATE_EPOCH a Ă©tĂ© ajoutĂ©. La prise en charge de MDBX_BUILD_TIMESTAMP a Ă©tĂ© conservĂ©e et cette variable a la prioritĂ©.
  • Il est maintenant possible de spĂ©cifier des informations supplĂ©mentaires sur l'assemblage de libmdbx via l'option MDBX_BUILD_METADATA. Les informations fournies sont dĂ©sormais simplement intĂ©grĂ©es dans la bibliothĂšque en tant que valeur mdbx_build.metadata, et seront Ă©galement utilisĂ©es ultĂ©rieurement lors de la crĂ©ation de paquets, etc.
  • Un journal des erreurs retournĂ©es par l'API a Ă©tĂ© ajoutĂ©. DĂ©sormais, il suffit de dĂ©finir le niveau de journalisation MDBX_LOG_DEBUG (pour journaliser les erreurs sauf MDBX_NOTFOUND) ou MDBX_LOG_TRACE (pour journaliser toutes les erreurs, y compris MDBX_RESULT_TRUE).
  • Changement de comportement :
    • Le mĂ©thode mdbx::cursor::get_multiple_samelength() a Ă©tĂ© ajoutĂ©e et mdbx::txn::put_multiple_samelength() a Ă©tĂ© renommĂ©.
    • Pour l'uniformitĂ© de l'API C++, lors de l'exĂ©cution de l'opĂ©ration MDBX_GET_MULTIPLE, la valeur de la clĂ© elle-mĂȘme est Ă©galement retournĂ©e.
    • Pour les constantes de taille, le type de base de mdbx::env::geometry a Ă©tĂ© changĂ© de size_t non signĂ© Ă  intptr_t signĂ©.
    • Le choix d'utiliser ntdll au lieu de CRT est dĂ©sormais fait uniquement lorsqu'il est explicitement dĂ©sactivĂ© pour l'API C++.
    • La libĂ©ration de la mĂ©moire des transactions de lecture abandonnĂ©es/interrompues transmises Ă  mdbx_txn_commit() est garantie. La convention API exige que de telles transactions soient libĂ©rĂ©es via mdbx_txn_abort(), ce qui a conduit Ă  ce que la fonction mdbx_txn_commit() renvoie une erreur dans ces cas, sans dĂ©truire les transactions elles-mĂȘmes. Ceci a entraĂźnĂ© des fuites de mĂ©moire dues Ă  des erreurs dans les applications, ce qui a conduit Ă  une modification du comportement.
    • Utilisation du macro __deprecated_enum, si dĂ©fini.
    • Lors de la construction avec CMake, le choix du standard du langage C est dĂ©sormais effectuĂ© en tenant compte de CMAKE_C_STANDARD.

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