Беш жылдык өнүгүүдөн кийин, libmdbx 1.0 релизинин экинчи талапкери жарыяланды

Жеткиликтүү китепкана чыгаруу үчүн экинчи талапкерди сыноо үчүн libmdbx жогорку натыйжалуу, компакт камтылган ачкыч-баалуу маалымат базасын ишке ашыруу менен. Учурдагы версия (0.5) техникалык релиз болуп саналат, ар кандай өркүндөтүүлөр аяктаганын жана китепкананын биринчи толук релизинин кийин түзүлүшү менен коомдук жыйынтыктоочу тестирлөө жана турукташтыруу фазасына өтүүнү белгилейт. libmdbx коду жайылуу OpenLDAP Public License астында лицензияланган.

MDBX китепканасы бир кыйла кайра каралган айры болуп саналат LMDB — негизделген «ачкыч-маани» классынын транзакциялык камтылган МБС дарак B+ жок проактивдүү каттоо, бул көп агымдуу процесстерге локалдык бөлүшүлгөн (тармак эмес) маалымат базасы менен атаандашууга жана натыйжалуу иштөөгө мүмкүндүк берет. Өз кезегинде, MDBX LMDBге караганда тезирээк жана ишенимдүүрөөк жана ошол эле учурда ата-бабасынын бардык негизги өзгөчөлүктөрүн сактап калат, мисалы КЫЧКЫЛ жана CPU өзөктөрү боюнча сызыктуу масштабдоо менен блоктолбогон окуулар.

MDBX жана LMDB ортосундагы маанилүү айырмачылыктар:

  • Негизинен коддун сапатына, тестирлөөгө жана автоматтык текшерүүлөргө көбүрөөк көңүл бурулат.
  • Параметрлерди текшерүүдөн тартып маалымат базасынын структураларынын ички аудитине чейин иштөө учурунда кыйла көбүрөөк контроль.
  • Автоматтык компактификация жана маалымат базасынын өлчөмүн автоматтык түрдө башкаруу.
  • 32 биттик жана 64 биттик жыйындар үчүн бирдиктүү маалымат базасынын форматы.
  • Диапазондор боюнча үлгү көлөмүн баалоо (диапазон сурамдарын баалоо).
  • Блинден эки эсе чоң ачкычтарды колдоо жана колдонуучу тандай турган маалымат базасынын бетинин өлчөмү.

libmdbx релиз талапкери MDBX жана MithrilDB долбоорлорун бөлүү үчүн 2019-жылдын августунда кабыл алынган чечимдин натыйжасы. Ошол эле учурда, 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 кайра жүктөлгөнүн аныктоо үчүн bootid колдонуу (кирдүү маалымат базасын токтотуу).
  • Жаңыртылган/эски барактарды жана кеңейтилген транзакция маалыматын аягына чейин эсептөө.
  • Шайкеш режимде мурунтан эле ачык маалымат базасына туташуу үчүн MDBX_ACCEDE опциясы.
  • пайдалануунун OFD бөгөттөө жеткиликтүү болгондо.
  • Түтүктө ысык камдык көчүрмө.
  • Адистештирилген оптималдаштырылган ички сорттоо алгоритми ("qsort()" караганда 2-3 эсеге чейин жана "std::sort()" караганда 30% тезирээк).
  • Ачкычтын максималдуу узундугу көбөйтүлдү.
  • Алдыда окууну автоматтык түрдө башкаруу (эстутумдагы маалымат базасын кэштөө стратегиясы).
  • Агрессивдүү жана тезирээк авто-компактификация.
  • 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: opennet.ru

Комментарий кошуу