Sortie de la base de données embarquée libmdbx 0.13

La publication de la bibliothĂšque libmdbx 0.13.1 (MDBX) avec la mise en Ɠuvre d'une base de donnĂ©es intĂ©grĂ©e, compacte et performante de type clĂ©-valeur. Le code libmdbx est distribuĂ© sous la licence Apache 2.0. Toutes les systĂšmes d'exploitation et architectures actuels sont pris en charge, y compris le Elbrus 2000 russe. Pour libmdbx, une API avancĂ©e pour C++ est proposĂ©e, ainsi que des liaisons soutenues par des enthousiastes 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 :

  • Changement de la licence du code de OpenLDAP Public License Ă  Apache 2.0.
  • Extension de l'API des curseurs avec des opĂ©rations de positionnement plus pratiques et Ă©videntes similaires aux conditions <, =, >, tant pour les clĂ©s que pour les paires clĂ©-valeur. Ajout des fonctions mdbx_cursor_unbind() et mdbx_txn_release_all_cursors() pour une gestion flexible des curseurs dans des scĂ©narios de rĂ©utilisation afin de rĂ©duire les frais gĂ©nĂ©raux. Fonctions mdbx_cursor_scan() et mdbx_cursor_scan_from() pour parcourir les tables en utilisant un prĂ©dicat fonctionnel et rĂ©duire les frais gĂ©nĂ©raux associĂ©s.
  • Rework des curseurs pour unifier le comportement, rendre le code plus rĂ©gulier et diminuer le nombre de branches et d'opĂ©rations machine.
  • Transfert de la fonctionnalitĂ© de l'outil mdbx_chk dans la bibliothĂšque sous forme de fonction mdbx_env_chk() pour vĂ©rifier l'intĂ©gritĂ© de la structure de la base de donnĂ©es, y compris l'implication de la logique de l'application.
  • Option MDBX_opt_gc_time_limit pour un contrĂŽle plus flexible du temps consacrĂ© Ă  la recherche de sĂ©quences de pages libres adjacentes dans le GC.
  • Diminution significative des frais gĂ©nĂ©raux lors du lancement de transactions dans des scĂ©narios avec de nombreux handles DBI, grĂące Ă  l'initialisation diffĂ©rĂ©e/paresseuse des Ă©lĂ©ments des tables de service. Inclus, le mĂ©canisme de soutien des ensembles Ă©pars de handles DBI, gĂ©rĂ© par l'option de compilation MDBX_ENABLE_DBI_SPARSE, qui est activĂ©e par dĂ©faut.
  • RĂ©duction des frais gĂ©nĂ©raux Ă  l'ouverture des handles DBI. Inclut, le mĂ©canisme de libĂ©ration diffĂ©rĂ©e et de support pour un chemin d'ouverture rapide sans verrouillage, gĂ©rĂ© par l'option de compilation MDBX_ENABLE_DBI_LOCKFREE, qui est activĂ©e par dĂ©faut.
  • Support for "parking" read transactions by evicting them for the purpose of processing old MVCC snapshots and preventing issues caused by garbage collection suspension. The parking and eviction mechanism for parked transactions serves as both an addition and a simpler alternative to the Handle-Slow-Readers callback. For convenience, the functions mdbx_txn_park() and mdbx_txn_unpark() have additional arguments that allow requesting automatic un-parking of parked transactions and restarting evicted transactions. The mdbx_copy utility has been updated with the corresponding options -d and -p.
  • Support for restoring the open working environment with the database in a child process after forking/splitting the process using mdbx_env_resurrect_after_fork().
  • Support for renaming tables using mdbx_dbi_rename() and mdbx_dbi_rename2(). Added the function mdbx_enumerate_tables() to retrieve information about named user tables.
  • MDBX_NOSTICKYTHREADS operating mode instead of MDBX_NOTLS to simplify integration with lightweight threads/multiplexing them with operating system thread transactions.
  • A UUID for database identification has been added to the mi_dxbid field of the MDBX_envinfo structure, obtained via mdbx_env_info_ex(). Information about the database can now be retrieved without opening it by using mdbx_preopen_snapinfo().
  • Support for callback logging functions without vprintf() functionality, significantly simplifying logging usage in bindings to other programming languages.
  • Addition of the mdbx_txn_copy2pathname() and mdbx_txn_copy2fd() functions to the API.
  • Restructuring of the source code with refactoring.
  • Use of the term "table" instead of "subDb."
  • Options MDBX_COALESCE and MDBX_NOTLS declared obsolete. Replacement of the assembly option MDBX_USE_VALGRIND with the commonly accepted ENABLE_MEMCHECK.

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