libmdbx 0.11.7 (MDBX) китепканасы жогорку өндүрүмдүүлүктөгү компакт камтылган ачкыч-маанилер базасын ишке ашыруу менен чыгарылган. libmdbx коду OpenLDAP Public License астында лицензияланган. Бардык учурдагы операциялык системалар жана архитектуралар, ошондой эле орус Elbrus 2000 колдоого алынат.
Чыгаруу 15-жылдын 2022-апрелинде GitHub администрациясы эч кандай эскертүүсүз же түшүндүрмөсүз libmdbxти башка көптөгөн долбоорлор менен бирге жок кылгандан кийин долбоордун GitFlic кызматына көчүрүлүшү менен өзгөчөлөнөт. компаниялар АКШнын санкцияларына дуушар болушат. Колдонуучулардын көз карашы боюнча, долбоордун бардык баракчалары, репозиторийлери жана айрылары капысынан 404 барагына айланып, эч кандай байланыш жана себептерин табуу мүмкүнчүлүгү жок.
Тилекке каршы, кеңири жооптор менен көптөгөн суроолор, ошондой эле көптөгөн талкуулар болгон дээрлик бардык маселелер жоголду. Бул маалыматтын жоголушу GitHub администрациясы долбоорго келтире алган жалгыз объективдүү зыян. Талкуулардын жарым-жартылай көчүрмөлөрү archive.org сайтында сакталат.
Түзүлгөн CI сценарийлерин жана инфраструктурасын жоготуу (OpenSource долбоорлору үчүн бекер жеткиликтүү) бизди майда техникалык карызды кайра карап чыгууга, унификациялоого жана жоюуга мажбур кылды. Азыр CI бардык BSD жана Solaris варианттары үчүн куруу жана иштетүү тесттерин кошпогондо, дээрлик бирдей деңгээлде калыбына келтирилди. Адатта, иш-аракеттерден кийин GitHub төлөм керектиги жөнүндө эскертмелерден жана акчаны эсептен чыгаруу аракеттеринен башка эч кандай түшүндүрмөлөрдү же эскертмелерди алган эмес.
libmdbx v0.11.3 чыгаруу жөнүндө акыркы кабардан бери, GitHub аракеттеринен калыбына келтирүүдөн тышкары, төмөнкү жакшыртууларды жана оңдоолорду белгилей кетүү керек:
- Ядродогу бириктирилген баракчада жана буфер кэшинде аныкталган ыраатсыздык эффектисин/кемчилигин оңдоо үчүн айланма жол кошулду. LinuxБарак жана буфер кэштери чындап бириктирилген системаларда, ядро мурунтан эле эс тутумга карталанган файлга жазууда эки көчүрмө маалыматка эстутумду текке кетирүүнүн кажети жок. Ошондуктан, жазылып жаткан маалыматтар write() системалык чакыруу аяктаганга чейин эстутумду картага түшүрүү аркылуу көрүнүп калат, эгерде маалыматтар дискке жазыла элек болсо дагы.
Жалпысынан алганда, башка жүрүм-турум акылга сыярлык эмес, анткени кийинкиге калтырылган бириктирүү менен сиз дагы эле барактар тизмелери үчүн кулпуларды алууга, маалыматтарды көчүрүүгө же PTEди тууралоого туура келет. Демек, айтылбаган когеренттүүлүк эрежеси SRV1989те бирдиктүү буфердик кэш пайда болгон 4-жылдан бери күчүндө. Ошондуктан, жүктөлгөн libmdbx эксплуатация сценарийлеринде кызыктай бузулууларды аныктоо көп эмгекти талап кылды. Адегенде маселени кайра чыгаруу, андан кийин гипотезаларды текшерүү жана жакшыртууларды текшерүү.
Эми биз кайра чыгаруу сценарийинин татаалдыгына жана өзгөчөлүгүнө карабастан, көйгөй ишенимдүү түрдө аныкталган, локализацияланган жана ишенимдүү түрдө жоюлган деп ишенимдүү айта алабыз. Кошумча, айланып өтүү механизминин иштеши Erigon (Ethereum) иштеп чыгуучуларынын бири тарабынан тастыкталган, анын ишинде мүчүлүштүктөрдү оңдоодо, коргоо керексиз ырастоо текшерүүсүнөн улам регрессия катары ишке киргизилген.
Белгилей кетүүчү нерсе, өндүрүш долбоорлорунда libmdbx кеңири колдонулуп жаткан шартта, анын ката же функция экенин жана мындай ырааттуулукка ишенүүгө болобу же жокпу, аныктоонун ордуна, ядродогу ыраатсыздыктын себептерин издөө андан да маанилүүрөөк экенин белгилей кетүү керек. LinuxОшондуктан, бул жерде биз колдонуучуларга таасир этиши мүмкүн болгон көйгөйдү чечүү жөнүндө сөз болуп жатат.
- API аркылуу да, mdbx_copy утилитасы менен дагы башка файл тутумуна компактташтырылбастан маалымат базасын ысык көчүрүү учурунда EXDEV (түзмөктөр аралык шилтеме) катасынын регресси жок кылынды.
- Kris Zyp Денодо libmdbx колдоосун ишке ашырды. Кай Ветлесен Fedora үчүн RPM таңгагын иштеп чыккан. David Bouyssié 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
