{"id":54906,"date":"2020-01-07T00:00:00","date_gmt":"2020-01-06T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0"},"modified":"2020-02-18T14:02:58","modified_gmt":"2020-02-18T11:02:58","slug":"posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0","title":{"rendered":"After five years of development, the second release candidate for libmdbx 1.0 has been published","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\/releases\">Available<\/a><\/noindex> for testing the second candidate in library releases <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\">libmdbx<\/a><\/noindex> with the implementation of a high-performance, compact embedded key-value database. The current version (0.5) is a technical release, marking the completion of any further developments and transitioning to the phase of public final testing and stabilization, leading to the formation of the first full release of the library. The code of libmdbx  <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\/\">is distributed<\/a><\/noindex> is licensed under the OpenLDAP Public License.<\/p>\n<p>The MDBX library is a significantly reworked branch of <noindex><a rel=\"nofollow\" href=\"https:\/\/symas.com\/lmdb\/\">LMDB<\/a><\/noindex> \u2014 a transactional embedded database of the \"key-value\" class based on <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/B%E2%81%BA-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">B+ tree<\/a><\/noindex> without <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A3%D0%BF%D1%80%D0%B5%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B0%D1%8F_%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F\">anticipatory journaling<\/a><\/noindex>, which allows multi-threaded processes to work concurrently and efficiently with a locally-shared (non-network) database. In turn, MDBX is faster and more reliable than LMDB, while retaining all the key capabilities of its predecessor, such as <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/ACID\">ACID<\/a><\/noindex> and non-blocking reads with linear scaling across CPU cores.<\/p>\n<p>The most important differences of MDBX compared to LMDB:<\/p>\n<ul>\n<li class=\"l\"> Significantly more attention is paid to code quality, testing, and automated checks.\n<li class=\"l\"> Substantially more control during operations, from parameter checks to internal audits of database structures.\n<li class=\"l\"> Auto-compaction and automatic size management of the database.\n<li class=\"l\"> A unified database format for 32-bit and 64-bit builds.\n<li class=\"l\"> Estimation of the volume of samples by ranges.\n<li class=\"l\"> Support for keys with double size and user-defined page size for the database.\n<\/ul>\n<p>The released candidate for libmdbx is the result of the decision made in August 2019 to split the MDBX and MithrilDB projects. In this context, it was decided to eliminate (rational) maximum technical debt in libmdbx and stabilize the library. In fact, the work done in this direction is 2-3 times greater than originally estimated and planned:<\/p>\n<ul>\n<li class=\"l\"> Support for macOS and \"second-tier\" platforms has been implemented: FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. Support for AIX and HP-UX can be added if necessary.\n<li class=\"l\"> Code sanitization has been conducted using Undefined Behavior Sanitizer and Address Sanitizer, eliminating all warnings during compilation with \"-Wpedantic\", all warnings from the Coverity Static Analyzer, etc.\n<li class=\"l\"> Updating <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/libmdbx\/blob\/master\/mdbx.h\">API documentation<\/a><\/noindex>.\n<li class=\"l\"> Amalgamation of the source code for convenience in embedding.\n<li class=\"l\"> CMake support.\n<li class=\"l\"> Support for nested transactions.\n<li class=\"l\"> Using bootid to determine the fact of OS reboot (dirty database shutdown).\n<li class=\"l\"> End-to-end counting of updated\/old pages and extended transaction information.\n<li class=\"l\"> MDBX_ACCEDE option for connecting to an already opened database in compatible mode.\n<li class=\"l\"> Using <noindex><a rel=\"nofollow\" href=\"https:\/\/www.gnu.org\/software\/libc\/manual\/html_node\/Open-File-Description-Locks.html\">OFD locks<\/a><\/noindex> when available.\n<li class=\"l\"> Hot backup in pipe.\n<li class=\"l\"> A specialized optimized internal sorting algorithm (2-3 times faster than \"qsort()\" and up to 30% faster than \"std::sort()\").\n<li class=\"l\"> Increased maximum key length.\n<li class=\"l\"> Automatic read-ahead management (database file caching strategy in memory).\n<li class=\"l\"> More aggressive and faster auto-compaction.\n<li class=\"l\"> More optimal B+ tree page merging strategy.\n<li class=\"l\"> Monitoring of non-local file systems (NFS, Samba, etc.) to prevent database corruption due to misuse.\n<li class=\"l\"> Expanded test suite.\n<\/ul>\n<p>The development of the \"next\" version of libmdbx will continue as part of a separate project. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/leo-yuriev\/MithrilDB\">MithrilDB<\/a><\/noindex>, while the development vector of the \"current\" version of MDBX is aimed at freezing the feature set and stabilizing. This decision has been made for three reasons:<\/p>\n<ul>\n<li class=\"l\"> Complete incompatibility: achieving all planned features in MithrilDB requires a different (incompatible) database file format and a different (incompatible) API.\n<li class=\"l\"> New source code: the source code for MithrilDB is ensured to be license-independent from LMDB, and the project is planned to be published under a different (approved <noindex><a rel=\"nofollow\" href=\"https:\/\/opensource.org\/\">OSI<\/a><\/noindex> Apache 2.0 license rather than <noindex><a rel=\"nofollow\" href=\"https:\/\/www.openldap.org\/software\/release\/license.html\">OpenLDAP Public License.<\/a><\/noindex>).\n<li class=\"l\"> The separation allows avoiding potential confusion, bringing more clarity, and ensuring development independence for the projects.\n<\/ul>\n<p>MithrilDB, like MDBX, is also based on <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/B%E2%81%BA-%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE\">B+ tree<\/a><\/noindex> and will also feature exceptionally high performance, while eliminating a number of fundamental drawbacks of MDBX and LMDB. In particular, the issue of \"long reads\" will be resolved, which manifests as \"bloating\" of the database due to garbage collection being blocked by long-running read transactions. Among the new features of MithrilDB, it is worth noting:<\/p>\n<ul>\n<li class=\"l\"> Support for placing the database on multiple heterogeneous storage media: HDD, SSD, and non-volatile memory.\n<li class=\"l\"> Optimal strategies for \"valuable\" and \"less valuable\", for \"hot\", \"warm\", and \"cold\" data.\n<li class=\"l\"> Use of Merkle tree for database integrity control.\n<li class=\"l\"> Optional use of WAL and significantly higher performance in write-intensive scenarios with guarantees on data integrity.\n<li class=\"l\"> Lazy catching of data on disks.\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"link\"><\/a><\/noindex><\/p>\n<p>Source: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=52147\">opennet.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 libmdbx \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439, \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u043e\u0439 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u043b\u044e\u0447-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f (0.5) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u043b\u0438\u0437\u043e\u043c, \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043e\u043a \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0444\u0430\u0437\u0435 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0433\u043e \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u043b\u0438\u0437\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u041a\u043e\u0434 libmdbx \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 OpenLDAP Public License. \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 MDBX \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54906","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b libmdbx 1.0 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-06T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47After five years of development, the second release candidate of libmdbx 1.0 has been published | ProHoster","description":"The second release candidate of the library is available for testing.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u043e\u0441\u043b\u0435 \u043f\u044f\u0442\u0438 \u043b\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b libmdbx 1.0 | ProHoster","og:description":"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0432 \u0440\u0435\u043b\u0438\u0437\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/posle-pyati-let-razrabotki-opublikovan-vtoroj-kandidat-v-relizy-libmdbx-1-0","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-06T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54906","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 13:08:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:55:37","updated":"2026-01-24 13:08:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/54906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=54906"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/54906\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=54906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=54906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=54906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}