Բարձր արդյունավետությամբ ներկառուցված DBMS libmdbx 0.11.3 թողարկում

libmdbx 0.11.3 (MDBX) գրադարանը թողարկվել է բարձր արդյունավետության կոմպակտ ներկառուցված բանալի-արժեքի տվյալների բազայի ներդրմամբ: libmdbx կոդը լիցենզավորված է OpenLDAP հանրային լիցենզիայի ներքո: Աջակցվում են բոլոր ընթացիկ օպերացիոն համակարգերն ու ճարտարապետությունները, ինչպես նաև ռուսական Elbrus 2000-ը: 2021 թվականի վերջում libmdbx-ն օգտագործվում է որպես պահեստային պահեստ երկու ամենաարագ Ethereum հաճախորդների՝ Erigon-ի և նոր «Shark»-ի, որոնք, ըստ առկա տվյալների: տեղեկատվություն, ամենաբարձր արդյունավետությամբ Ethereum հաճախորդն է:

Պատմականորեն, libmdbx-ը LMDB DBMS-ի խորը վերանախագծումն է և գերազանցում է իր սկզբնավորին հուսալիության, առանձնահատկությունների հավաքածուի և կատարողականի առումով: LMDB-ի համեմատ, libmdbx-ը մեծ ուշադրություն է դարձնում կոդի որակի, API-ի կայունության, փորձարկման և ավտոմատացված ստուգումների վրա: Տվյալների բազայի կառուցվածքի ամբողջականությունը ստուգելու օգտակար գործիքը տրամադրվում է վերականգնման որոշ տարբերակներով:

Տեխնոլոգիայի առումով libmdbx-ն առաջարկում է ACID, ուժեղ փոփոխությունների սերիալացում և չարգելափակող ընթերցումներ՝ գծային մասշտաբով պրոցեսորի միջուկներում: Աջակցվում է ավտոմատ կոմպակտացում, տվյալների բազայի չափի ավտոմատ կառավարում և տիրույթի հարցումների գնահատում: 2016 թվականից նախագիծը ֆինանսավորվում է Positive Technologies-ի կողմից և 2017 թվականից կիրառվում է իր արտադրանքներում։

libmdbx-ն առաջարկում է C++ API, ինչպես նաև էնտուզիաստների կողմից աջակցվող լեզվական կապեր Rust-ի, Haskell-ի, Python-ի, NodeJS-ի, Ruby-ի, Go-ի և Nim-ի համար:

Հոկտեմբերի 11-ի նախորդ լուրերից հետո ավելացված հիմնական նորամուծություններ, բարելավումներ և ուղղումներ.

  • C++ API-ն համարվում է պատրաստ օգտագործման համար:
  • Հսկայական գործարքներ կատարելիս GC-ի տվյալների թարմացումը զգալիորեն արագացել է, ինչը հատկապես կարևոր է Ethereum էկոհամակարգում libmdbx-ի օգտագործման դեպքում։
  • Տվյալների բազայի ձևաչափի ներքին ստորագրությունը փոխվել է ավտոմատ թարմացմանն աջակցելու համար, որը լիովին թափանցիկ է օգտատերերի համար: Սա թույլ է տալիս վերացնել տվյալների բազայի խաթարման մասին կեղծ դրական հաղորդագրությունները, երբ գրադարանի հնացած տարբերակներն օգտագործվում են ընթացիկ տարբերակներով գրանցված գործարքները կարդալու համար:
  • Ավելացվեցին mdbx_env_get_syncbytes(), mdbx_env_get_syncperiod() և mdbx_env_get_syncbytes() ֆունկցիաները: Ավելացվեց աջակցություն MDBX_SET_UPPERBOUND գործողության համար:
  • Բոլոր նախազգուշացումները C++ 11/14/17/20 ռեժիմներում բոլոր աջակցվող կոմպիլյատորների հետ կառուցելիս վերացվել են: Համատեղելիությունը ժառանգական կոմպիլյատորների հետ ապահովված է՝ cring՝ սկսած 3.9-ից, gcc՝ սկսած 4.8-ից, ներառյալ հավաքում՝ օգտագործելով cdevtoolset-9 CentOS/RHEL 7-ի համար:
  • Հաստատվել է մետա էջի կոնֆլիկտի հնարավորությունը՝ mdbx_chk կոմունալ ծրագրի միջոցով ձեռքով որոշակի մետաէջին անցնելուց հետո:
  • Շտկվել է MDBX_PROBLEM անսպասելի սխալը, որը վերադարձվել է հին մետա էջերը վերագրանցելիս:
  • Ուղղվել է վերադարձվող MDBX_NOTFOUND՝ MDBX_GET_BOTH հարցումը մշակելիս ոչ ճշգրիտ համապատասխանության դեպքում:
  • Ուղղվել է Linux-ում կոմպիլյացիայի սխալ՝ միջուկի հետ ինտերֆեյսների նկարագրությամբ վերնագրի ֆայլերի բացակայության դեպքում:
  • Ուղղեց հակասություն MDBX_SHRINK_ALLOWED ներքին դրոշի և MDBX_ACCEDE տարբերակի միջև:
  • Վերացվել են մի քանի անհարկի հաստատման ստուգումներ։
  • Ամրագրվեց MDBX_RESULT_TRUE-ի անսպասելի վերադարձը mdbx_env_set_option() ֆունկցիայից:
  • Ընդհանուր առմամբ 90 ֆայլում կատարվել է ավելի քան 25 փոփոխություն, ավելացվել է ~1300 տող, ~600-ը ջնջվել է։

Source: opennet.ru

Добавить комментарий