Հինգ տարվա մշակման հետո, հրատարակվեցին libmdbx 1.0-ի երկրորդ թողարկման թեկնածուքը

Հասանելի է հետազոտման համար երկրորդ թեկնածուի թողարկումներ գրադարանը libmdbx բարձր կատարողականությամբ, կոմպակտ ընդհանուր տվյալների բազայի իրականացմամբ, որը նախատեսված է բանաստեղծական-արժեք դասի համար։ Այլապես 0.5 տարբերակը տեխնիկական թողարկում է, որը նշում է որևէ բարելավման ավարտի և անցում արվեստի հանրային վերջնական փորձարկելու և կայունացման փուլին, հաջորդաբար ձևավորելով գրադարանի առաջին լիարժեք թողարկումը։ Code libmdbx բաշխվում է OpenLDAP Հանրային Հայտարարագրի լիցենզիայի ներքո։

MDBX գրադարանը զգալիորեն վերաշարադրված մասնաճյուղ է LMDB — գործարքային կառուցվածքային տվյալների բազա, որը հիմնված է B+ ծառի սիմ-քարտի ու GPS-ի։ Օրինակ, նոթբուք կամ նույնիսկ խուսափող գրառումների, որը թույլ է տալիս բազմաթիվ գործընթացների մրցակցային և արդյունավետ աշխատել տեղական բաշխված (ոչ ցանցային) տվյալների բազայի հետ։ Նույնիսկ MDBX-ը արագ է և ավելի վստահելի է LMDB-ից և պահպանվում են ծնողական բոլոր հիմնական հատկություններ, ինչպիսիք են ACID և անհանգիստ կատարումը CPU միջուկների միջով։

MDBX-ի ամենակարևոր տարբերությունները LMDB-ի համեմատությամբ են՝

  • Կոդի որակի, փորձարկումի և ավտոմատ ստուգումների թողարկման վրա համարյա ավելի շատ ուշադրություն է դարձվում։
  • Բարձր վերահսկողության ժամանակ, սկսած պարամետրերի ստուգումից մինչև տվյալների բազայի կառուցվածքների ներքին աուդիտ։
  • Ավտոմատ կոմպակտացում և տվյալների բազայի չափի ավտոմատ կառավարում։
  • Միատարորից տվյալների բազայի ձևաչափ 32-բիտ և 64-բիտ դասարանների համար։
  • Ընտրությունների ծավալների գնահատում ըստ տիրույթների (range query estimation)։
  • Երկնակի ավելորդ բանաձևերը և օգտատիրոջ կողմից ընտրվող տվյալների բազայի էջի չափը։

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

  • macOS և «երկրորդ էշելոն» պլատֆորմների աջակցություն իրականացված է՝ FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD։ AIX և HP-UX աջակցությունը կարող է ավելացվել անհրաժեշտության դեպքում։
  • Այս կոդը բարելավվել է Undefined Behavior Sanitizer և Address Sanitizer-ի օգնությամբ, բոլոր նախազգուշացումներն առկա են «-Wpedantic» հետ կառուցվող և բոլոր նախազգուշացուցիչ անալիզեր Coverity Static Analyzer և այլն։
  • Ներդրում API-ի պատկերի գիտակցություն.
  • Աղբյուր կոդը միավորում (ամալգամացված) ներդրման հարմարեցման համար։
  • CMake-ի աջակցության համար։
  • Ելույթի աջակցություն ներթրանկայույթման համար:
  • OS-ի վերագործումի կատարման (տեղի չի եղել տվյալների բազայի բջիջների) ախանգավորմանiding օգտագործում։
  • Ավելի վաղ էջերի քանակի հանրային հաշվարկ և գործառույթի մասին ավելացված տեղեկություններ։
  • MDBX_ACCEDE ընտրություն, արդեն բացված տվյալների բազային միանալու համար համատեղելի ռեժիմում։
  • Օգտագործումը OFD-արգելակումը ուստի հասանելիության դեպքում։
  • Երկրում վերջնական պահուստավորում במելերում։
  • Առանձնահատուկ օպտիմիզացված ներքին դասակարգման ալգորիթմ (դեպքերից 2-3 անգամ ավելի արագ «qsort()» և 30%-ով ավելի արագ «std::sort()»):
  • Աջակցման դատարկության երկարությունը ավելացված է մինչև առավելագույն երկարությունը։
  • Հաճախակի կարդալու ավտոմատ կառավարման համակարգ (ծրագրային կետային ֆայլերի կաշառքի ռազմավարություն):
  • Զուգահեռ ավելի ագրեսիվ և արագ ինքնակազմակերպում:
  • Առավել օպտիմալ B+ ծառերի էջերի միացման ռազմավարություն:
  • Քաղաքային ֆայլային համակարգերի (NFS, Samba և այլն) վերահսկում՝ DB-ի վնասը կանխելու համար սխալ օգտագործման դեպքում:
  • Խնդիրների հավաքի ընդլայնում:

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

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

MithrilDB, ինչպես MDBX, նույնպես հիմնվում է B+ ծառի և նույնպես շատ բարձր արդյունավետություն կունենա, իսկ MDBX և LMDB-ի սեթակություները կհեռացվեն: Հատկապես, կվերացվի «երկար ընթերցումներ» խնդիրը, որը երևում է որպես DB-ի «աճեցում» այն պատճառով, որ խնդիրների վերացումը խանգարվում է երկար ընթերցող փոխանակումներով: MithrilDB-ում նոր հնարավորությունների թվում առանձնանում է:

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

Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster