DBMS libmdbx 0.11.7-ի թողարկում: Տեղափոխեք զարգացումը GitFlic GitHub-ի արգելափակումից հետո

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

Թողարկումը նշանավոր է նախագծի տեղափոխմամբ GitFlic ծառայություն այն բանից հետո, երբ GitHub-ի վարչակազմը 15 թվականի ապրիլի 2022-ին հեռացրեց libmdbx-ը և մի շարք այլ նախագծեր՝ առանց որևէ նախազգուշացման կամ բացատրության, միևնույն ժամանակ արգելափակելով մուտքը շատ ծրագրավորողների, որոնք կապված են ընկած ընկերությունների հետ: ԱՄՆ պատժամիջոցների տակ։ Օգտատիրոջ տեսանկյունից՝ նախագծի բոլոր էջերը, պահեստը և պատառաքաղները հանկարծ վերածվել են «404» էջի՝ առանց որևէ հաղորդակցության և պատճառները պարզելու հնարավորության։

Ցավոք, կորել են գրեթե բոլոր հարցերը, որոնցում կային բազմաթիվ հարցեր՝ մանրամասն պատասխաններով, ինչպես նաև բազմաթիվ քննարկումներ։ Այս տեղեկատվության կորուստը միակ օբյեկտիվ վնասն է, որը GitHub-ի վարչակազմին հաջողվել է հասցնել նախագծին։ Քննարկումների մասնակի պատճենները հասանելի են archive.org արխիվում:

Ներկառուցված CI սկրիպտների և ենթակառուցվածքների կորուստը (հասանելի է OpenSource նախագծերի համար անվճար) մեզ ստիպեց վերանայել, միավորել և վերացնել փոքր տեխնիկական պարտքը: Այժմ CI-ն վերականգնվել է գրեթե նույն չափով, բացառությամբ BSD-ի և Solaris-ի բոլոր տարբերակների կառուցումների և փորձնական աշխատանքների: Ինչ խոսք, GitHub-ի գործողություններից հետո ոչ մի պարզաբանում կամ ծանուցում չի ստացվել, բացի վճարման անհրաժեշտության հիշեցումից և գումար դուրս գրելու փորձերից։

Քանի որ libmdbx v0.11.3-ի թողարկման մասին վերջին նորությունները, ի լրումն GitHub-ի գործողություններից վերականգնվելուց, պետք է նշել հետևյալ բարելավումները և ուղղումները.

  • Համակցված էջում և Linux միջուկում բուֆերային քեշում հայտնաբերված անհամապատասխանության էֆեկտի/թերության լուծում է ավելացվել: Համակարգերում, որտեղ էջը և բուֆերային քեշերը իսկապես միավորված են, միջուկի համար անիմաստ է հիշողությունը վատնել տվյալների երկու օրինակների վրա՝ արդեն հիշողության քարտեզագրված ֆայլի վրա գրելիս: Հետևաբար, գրվող տվյալները տեսանելի են դառնում հիշողության քարտեզագրման միջոցով՝ նախքան write() համակարգի կանչի ավարտը, նույնիսկ եթե տվյալները դեռ չեն գրվել սկավառակի վրա։

    Ընդհանուր առմամբ, այլ վարքագիծը ռացիոնալ չէ, քանի որ ուշացած միաձուլման դեպքում դուք դեռ պետք է կողպեք էջերի ցուցակների համար, պատճենեք տվյալները կամ կարգավորեք PTE-ը: Հետևաբար, համահունչության չասված կանոնը գործում է 1989 թվականից, երբ միասնական բուֆերային քեշը հայտնվեց SRV4-ում։ Հետևաբար, libmdbx-ի զբաղված արտադրության սցենարներում տարօրինակ ձախողումներ գտնելը մեծ աշխատանք էր պահանջում: Նախ՝ վերարտադրելով խնդիրը, ապա՝ ստուգելով վարկածները և ստուգելով բարելավումները։

    Այժմ մենք կարող ենք վստահորեն ասել, որ խնդիրը հուսալիորեն բացահայտվել է, տեղայնացվել և հուսալիորեն վերացվել՝ չնայած նվագարկման սցենարի բարդությանը և յուրահատկությանը: Բացի այդ, շրջանցման մեխանիզմի աշխատանքը հաստատել է Erigon-ի (Ethereum) մշակողներից մեկը, նրա դեպքում վրիպազերծման կառուցման վրա պաշտպանությունը գործարկվել է որպես ռեգրեսիա՝ լրացուցիչ հաստատման ստուգման պատճառով:

    Պետք է նշել, որ աշխատանքային նախագծերում libmdbx-ի լայնածավալ կիրառման համատեքստում սկզբունքորեն ավելի կարևոր է ապահովել հուսալի շահագործում, այլ ոչ թե պարզել, թե «սա վրիպակ է, թե հատկանիշ», և արդյոք կարելի է հիմնվել նման համահունչության վրա, հատկապես չգտնելով Linux-ի միջուկի անհամապատասխանության պատճառները: Հետևաբար, այստեղ մենք խոսում ենք մի խնդրի վերացման մասին, որը կարող է ազդել օգտատերերի վրա:

  • Շտկվել է EXDEV (Cross-device link) սխալի հետընթացը, երբ տվյալների բազան առանց կոմպակտացման այլ ֆայլային համակարգում տաք պատճենահանում է, ինչպես API-ի միջոցով, այնպես էլ mdbx_copy կոմունալ ծրագրի միջոցով:
  • Kris Zyp-ն աջակցություն է իրականացրել libmdbx-ին Deno-ում: Kai Wetlesen-ը փաթեթավորել է RPM-ներ Fedora-ի համար: Դեյվիդ Բույսիեն կապեր է կիրառել Scala-ի համար:
  • MDBX_opt_rp_augment_limit տարբերակով սահմանված արժեքի ֆիքսված մշակում խոշոր տվյալների բազաներում հսկայական գործարքներ մշակելիս: Նախկինում սխալի պատճառով կարող էին կատարվել անհարկի գործողություններ, որոնք երբեմն ազդում էին Ethereum ներդրման (Erigon/Akula/Silkworm) և Binance Chain նախագծերի կատարման վրա։
  • Շատ սխալներ են շտկվել, այդ թվում՝ C++ API-ում: Հազվագյուտ և էկզոտիկ կոնֆիգուրացիաներում շտկվել են կառուցման բազմաթիվ խնդիրներ: Բոլոր էական բարելավումների ամբողջական ցանկը հասանելի է ChangeLog-ում:
  • 185 ֆայլում ընդհանուր առմամբ կատարվել է 89 փոփոխություն, ավելացվել է ≈3300 տող, ջնջվել է ≈4100-ը։ Հեռացվել է հիմնականում GitHub-ի և կախյալ ծառայությունների հետ կապված արդեն անպետք տեխնոլոգիական ֆայլերի մաքրման պատճառով:

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

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

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

Source: opennet.ru

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