libmdbx v1.0-ի երկրորդ թողարկման թեկնածուն հինգ տարվա մշակումից հետո:

գրադարան libmdbx LMDB-ի զգալիորեն վերանախագծված ժառանգորդն է՝ չափազանց բարձր արդյունավետությամբ, կոմպակտ ներկառուցված բանալի-արժեքի տվյալների բազա:
Ներկայիս v0.5 տարբերակը տեխնիկական թողարկում է, որը նշում է ցանկացած բարելավման ավարտը և անցումը հանրային վերջնական փորձարկման և կայունացման փուլին՝ գրադարանի առաջին ամբողջական թողարկման հետագա ձևավորմամբ:

LMDB բավականին հայտնի գործարքային ներկառուցված բանալի-արժեքի DBMS է, որը հիմնված է ծառ B+ առանց պրոակտիվ անտառահատումներ, որը թույլ է տալիս բազմաշերտ գործընթացների ոհմակին մրցակցային և չափազանց արդյունավետ աշխատել տեղական (ոչ ցանցային) տվյալների բազայի հետ: Իր հերթին, MDBX-ն ավելի արագ և հուսալի է, քան LMDB-ն, մինչդեռ libmdbx-ը պահպանում է իր նախնիների բոլոր հիմնական հատկանիշները, ինչպիսիք են. ACID և առանց արգելափակման ընթերցվում է պրոցեսորի միջուկների գծային մասշտաբով, ինչպես նաև ավելացնում է մի քանի նոր:

LMDB-ի համեմատ libmdbx-ի տարբերությունների և բարելավումների նկարագրությունը արժանի է առանձին հոդվածի (նախատեսվում է հրապարակել Habré-ում և Medium-ում): Այստեղ տեղին է նշել ամենակարևորն ու նկատելիը.

  • Հիմնականում ավելի մեծ ուշադրություն է դարձվում ծածկագրի որակին, փորձարկմանը և ավտոմատ ստուգմանը:
  • Զգալիորեն ավելի մեծ վերահսկողություն շահագործման ընթացքում՝ պարամետրերի ստուգումից մինչև տվյալների բազայի կառուցվածքների ներքին աուդիտ:
  • Ավտոմատ կոմպակտացում և տվյալների բազայի չափի ավտոմատ կառավարում:
  • Տվյալների բազայի մեկ ձևաչափ 32-բիթանոց և 64-բիթանոց հավաքների համար:
  • Նմուշի չափի գնահատումն ըստ միջակայքերի (տիրույթի հարցման գնահատում):
  • Աջակցում է նրբաբլիթներից երկու անգամ ավելի մեծ ստեղների և օգտագործողի կողմից ընտրվող տվյալների բազայի էջի չափը:

libmdbx թողարկման թեկնածուն 2019 թվականի օգոստոսին MDBX և MithrilDB նախագծերն առանձնացնելու որոշման արդյունքն է (տես ստորև): Միևնույն ժամանակ, libmdbx-ը որոշեց վերացնել (ռացիոնալ) առավելագույն տեխնիկական պարտքը և կայունացնել գրադարանը: Իրականում նշված ուղղությամբ 2-3 անգամ ավելին է արվել, քան ի սկզբանե գնահատվել և ծրագրվել էր.

  • Իրականացվել է Mac OS-ի և երկրորդ մակարդակի պլատֆորմների աջակցություն՝ FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD: AIX և HP-UX աջակցությունը կարող է ավելացվել ըստ անհրաժեշտության:
  • Կոդը մաքրվել է Undefined Behavior Sanitizer-ի և Address Sanitizer-ի միջոցով, բոլոր նախազգուշացումները -Wpedantic-ով կառուցելիս, Coverity Static Analyzer-ի բոլոր նախազգուշացումները և այլն վերացվել են:
  • Թարմացնել API-ի նկարագրությունները.
  • Աղբյուրի կոդի միավորում` ներդրման հեշտության համար:
  • CMake աջակցություն:
  • Աջակցություն ներդրված գործարքների համար:
  • Օգտագործելով bootid՝ որոշելու, թե արդյոք ՕՀ-ն վերագործարկվել է (կեղտոտ տվյալների բազայի կանգառ):
  • Թարմացված/հին էջերի և ընդլայնված գործարքների տեղեկատվության վերջից մինչև վերջ հաշվում:
  • Տարբերակ MDBX_ACCEDE՝ համատեղելի ռեժիմով արդեն բաց տվյալների բազայի միանալու համար:
  • Օգտագործում OFD արգելափակում երբ հասանելի է:
  • Խողովակի մեջ տաք պահուստավորում:
  • Մասնագիտացված օպտիմիզացված ներքին տեսակավորման ալգորիթմ (մինչև 2-3 անգամ ավելի արագ, քան qsort()-ը և մինչև 30% ավելի արագ, քան std::sort()-ը):
  • Բանալու առավելագույն երկարությունը ավելացվել է:
  • Առաջ կարդալու ավտոմատ կառավարում (տվյալների բազայի ֆայլերի քեշավորման ռազմավարությունը հիշողության մեջ):
  • Ավելի ագրեսիվ և ավելի արագ ավտոմատ կոմպակտացում:
  • B+ ծառի էջերի միաձուլման ավելի օպտիմալ ռազմավարություն:
  • Ոչ տեղական ֆայլային համակարգերի վերահսկում (NFS, Samba և այլն)՝ սխալ օգտագործման դեպքում տվյալների բազայի վնասումը կանխելու համար:
  • Թեստերի հավաքածուն ընդլայնվել է։

libmdbx-ի «հաջորդ» տարբերակի մշակումը կշարունակվի որպես առանձին նախագիծ MithrilDB, մինչդեռ MDBX-ի «ընթացիկ» տարբերակի զարգացման վեկտորն ուղղված է գործառույթների հավաքածուի սառեցմանը և կայունացմանը։ Այս որոշումը կայացվել է երեք պատճառով.

  • Բոլորովին անհամատեղելի. MithrilDB-ն պահանջում է տվյալների բազայի այլ (անհամատեղելի) ֆայլի ձևաչափ և այլ (անհամատեղելի) API՝ ծրագրված բոլոր գործառույթներն իրականացնելու համար:
  • Նոր կոդ. MithrilDB սկզբնաղբյուրը լիցենզավորվել է LMDB-ից անկախ, և նախագիծն ինքնին նախատեսվում է հրապարակել այլ լիցենզիայի ներքո (հաստատված է ԿԱՄ ԵԹԵ լիցենզավորված Apache 2.0Եւ ոչ OpenLDAP հիմնադրամ).
  • Տարանջատումը խուսափում է պոտենցիալ շփոթությունից, ապահովում է ավելի որոշակիություն և ապահովում է, որ նախագծերն ունենան անկախ ուղի դեպի առաջ:

MithrilDB-ն, ինչպես MDBX-ը, նույնպես հիմնված է ծառ B+ և կունենա նաև չափազանց բարձր կատարողականություն՝ միաժամանակ վերացնելով MDBX-ի և LMDB-ի մի շարք հիմնարար թերություններ: Մասնավորապես, կվերացվի «երկար ընթերցումների» խնդիրը, որը դրսևորվում է որպես տվյալների բազայի «ուռչում», քանի որ աղբի մշակումն արգելափակվում է երկար ընթերցման գործարքներով։ MithrilDB-ի նոր առանձնահատկությունները ներառում են.

  • աջակցություն տվյալների բազան մի քանի տարասեռ կրիչների վրա տեղադրելու համար՝ HDD, SSD և ոչ անկայուն հիշողություն:
  • օպտիմալ ռազմավարություններ «արժեքավոր» և «ցածր արժեքով», «տաք», «տաք» և «սառը» տվյալների համար:
  • օգտագործելով Merkle ծառը տվյալների բազայի ամբողջականությունը վերահսկելու համար:
  • WAL-ի ընտրովի օգտագործումը և զգալիորեն ավելի բարձր կատարողականությունը գրելու ինտենսիվ սցենարներում և տվյալների ամբողջականության երաշխիքներում:
  • Սկավառակների վրա տվյալների ծույլ ֆիքսում:

Source: linux.org.ru

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