Нашри DBMS-и дарунсохтаи libmdbx 0.10.4 ва libfpta 0.3.9

Китобхонаҳои libmdbx 0.10.4 (MDBX) бо татбиқи пойгоҳи додаҳои пурмаънои дарунсохташудаи калиди арзиш ва китобхонаи алоқаманди libfpta 0.3.9 (FPTA), ки муаррифии ҷадвали додаҳоро бо индексҳои дуюмдараҷа ва таркибиро амалӣ мекунад, бароварда шуданд. дар болои MDBX. Ҳарду китобхонаҳо тибқи иҷозатномаҳои тасдиқшудаи OSI паҳн карда мешаванд. Ҳама системаҳои оператсионӣ ва меъмории ҷорӣ, инчунин Elbrus 2000-и русӣ дастгирӣ карда мешаванд.

Таърихан, libmdbx коркарди амиқи DBMS LMDB мебошад ва аз аҷдоди худ дар эътимоднокӣ, маҷмӯи хусусиятҳо ва иҷроиш бартарӣ дорад. Дар муқоиса бо LMDB, libmdbx ба сифати код, устувории API, санҷиш ва санҷишҳои автоматӣ диққати зиёд медиҳад. Утилита барои тафтиши якпорчагии сохтори пойгоҳи додаҳо бо баъзе қобилиятҳои барқарорсозӣ таъмин карда шудааст.

Аз ҷиҳати технология, libmdbx ACID, сериализатсияи сахти тағирёбанда ва хондани бебандро бо миқёси хаттӣ дар байни ядроҳои CPU пешниҳод мекунад. Фишурдани худкор, идоракунии автоматии андозаи пойгоҳи додаҳо ва арзёбии дархости диапазон дастгирӣ карда мешавад. Аз соли 2016 лоиҳаҳо аз ҷониби Positive Technologies маблағгузорӣ шуда, аз соли 2017 дар маҳсулоти он истифода мешаванд.

libmdbx API C++ ва инчунин пайвандҳои забони аз ҷониби ҳаваскорон дастгирӣшавандаро барои Rust, Haskell, Python, NodeJS, Ruby, Go ва Nim пешниҳод мекунад. Барои libfpta, танҳо тавсифи API дар шакли файли сарлавҳаи C/C++ дастрас аст.

Навовариҳо, такмилҳо ва ислоҳоти асосӣ аз хабари қаблии 9 май иловашуда:

  • Сохтмони такроршавандаро имкон медиҳад.
  • Хатогие ислоҳ карда шуд, ки бинобар он, дар ҳолатҳои хеле нодир, ҳангоми анҷом додани транзаксия ҳалқа/ях кардан мумкин аст. Мушкилотро мутахассисони Positive Tecnologies ҳангоми санҷиши дохилии маҳсулоти худашон муайян карданд.
  • Санҷишҳо такмил дода шуданд ва сенарияҳои санҷишӣ васеъ карда шуданд, то ҳама ҳолати ғайриизоморфии дастраси дарахти саҳифа ва мундариҷаи GC дар дохили пойгоҳи додаҳоро тафтиш кунанд.
  • Дар C++ API, як "noexcept" изофӣ ислоҳ карда шуд, изофабори изофӣ барои усули "курсор:: erase ()" илова карда шуд, татбиқи буферҳо аз истифодаи "std:: string" барои таъмини ҳамоҳангӣ эмин нигоҳ дошта шуданд. (барои CLANG libstdc++ мувофиқ аст).
  • Регрессия дар алгоритми рехтани саҳифаи ифлос (баровардани интихобии саҳифаҳои тағирёфтаи пойгоҳи додаҳо), ки бо як хатои нодири ғайричашмдошти MDBX_PROBLEM ҳангоми тағир додани маълумот дар транзаксияҳои азим зоҳир мешуд, бартараф карда шуд.
  • Санҷиши марҳилавӣ бо иловаи як қатор санҷишҳо барои таъмини устуворӣ дар сурати қасдан вайрон кардани пойгоҳи додаҳо гузаронида шуд.
  • Мушкилоти огоҳиҳои хурди UndefinedBehaviorSanitizer ва Coverity Scan ислоҳ карда шуданд.
  • Санҷиши парчами дохилии кӯҳнашуда ва дигар истифоданашудаи "P_DIRTY" дар саҳифаҳои лона гузошташуда дар дохили тасвирҳои пойгоҳи додаҳо, ки аз ҷониби версияҳои кӯҳнаи китобхона сохта шудаанд, ислоҳ карда шуд.
  • Дар скриптҳои CMake, ҷустуҷӯи ҷузъҳои компилятор барои LTO (оптимизатсияи вақти истинод) такмил дода шудааст.
  • Шумораи максималии хонандагони ҳамзамон то 32767 нафар зиёд карда шуд.
  • Фаъолияти беҳтаршуда ҳангоми истифодаи Valgrind ва AddressSanitizer.
  • Дар Windows, истифодаи рекурсивии SRW-lock ҳангоми кор дар реҷаи MDBX_NOTLS (бидуни истифодаи захираи маҳаллии ришта) аз байн бурда шуд, тавлиди bootid дар сурати тағир ёфтани вақти система ислоҳ карда шуд, муайянкунии WSL1 ва WSL2 такмил дода шуд ва қобилияти кушодани пойгоҳи додаҳо дар Нақшаи 9, ки тавассути DrvFS насб шудааст, илова карда шудааст.
  • Дар маҷмӯъ, ба 160 файл зиёда аз 57 тағйирот ворид карда шуд, ~ 5000 сатр илова карда шуд, ~ 2500 нест карда шуд.

Ман махсусан мехоҳам ба дастаи лоиҳаи Эригон (экосистемаи Ethereum) барои кӯмакашон дар санҷиш дар сенарияҳои истифодаи шадид ташаккур гӯям. Муҳим он аст, ки дар тӯли панҷ моҳ пас аз нашри libmdbx v0.10.0, бо ҳаҷми пойгоҳи додаҳо 1-2 ТБ дар ҳар як насби Erigon (дар 7% гиреҳҳои Ethereum истифода мешавад), танҳо се гузориш дар бораи фасоди пойгоҳи додаҳо гирифта шудааст, ҳама ки бо сабабҳои беруна рух додааст, на хатогиҳои нармафзор: дар ду ҳолат сабабаш нокомии RAM буд, дар сеюм хатогӣ дар барқарорсозии маълумот дар конфигуратсияи мушаххаси зерсистемаи нигаҳдорӣ бо истифода аз BTRFS.

Манбаъ: opennet.ru

Илова Эзоҳ