Жоғары өнімді ендірілген ДҚБЖ libmdbx 0.10 шығарылымы

Үш айлық әзірлеуден кейін libmdbx 0.10.0 (MDBX) шығарылды, ол өнімділігі жоғары, ықшам кірістірілген кілттер-мәні дерекқорын жүзеге асырады. libmdbx коды OpenLDAP Public License бойынша лицензияланған. libmdbx - бұл LMDB ДҚБЖ терең қайта өңдеу және әзірлеушілердің пікірінше, сенімділігі, мүмкіндіктері мен өнімділігі бойынша өзінің ата-бабасынан жоғары. libmdbx CRUD сценарийлерінде LMDB қарағанда 20%-ға дейін жылдамырақ және LMDB-мен салыстырылатын деңгейге libmdbx құру кезінде ішкі басқару элементтері өшірілген болса, 30%-ға дейін жылдамырақ екені айтылған.

Libmdbx ACID, күшті өзгерістер сериялауын және процессор өзектерінде сызықтық масштабталатын блокталмаған оқуларды ұсынады. libmdbx-те код сапасына, тұрақты API жұмысына, тестілеуге және автоматты тексерулерге көп көңіл бөлінеді. Автоматты ықшамдауды, дерекқор өлшемін автоматты түрде басқаруды, 32 биттік және 64 биттік жинақтар үшін бір дерекқор пішімін және ауқымды сұрауды бағалауды қолдайды. Кейбір қалпына келтіру мүмкіндіктері бар дерекқор құрылымының тұтастығын тексеруге арналған қызметтік бағдарлама жеткізіледі. 2016 жылдан бастап жобаны Positive Technologies қаржыландырып, 2017 жылдан бастап өз өнімдерінде қолданылуда, ал АҚШ үкіметінің Positive Technologies-ке салған санкциялары айтарлықтай әсер етпейді.

Соңғы шығарылымнан кейін қосылған негізгі инновациялар, жақсартулар және түзетулер:

  • Махлон Э. Смиттің Ruby байланыстыруы және Ноэль Кунцтің Python байланыстыруының сынақ нұсқасы қолжетімді және Алексей Шаровтың GoLang байланыстырулары жаңартылды.
  • «MDBX_WRIITEMAP» режимі үшін дерекқор деректері тікелей жедел жадта өзгертілгенде, өзгертілген дерекқор беттерінің дискіге «мөлдір төгілуі» жүзеге асырылады. Енді әрбір операция аяқталғаннан кейін мұндай беттер бірден дискіге жазуға толығымен дайын болады және ОЖ ядросы өзгертілген беттерді дискіге дербес түрде тазарта алады, ал транзакцияны жасау оларды өзгертуді қажет етпейді. Нәтижесінде, жедел жады жеткіліксіз, бос емес сценарийлерде диск операцияларының көлемін 2 есеге дейін азайтуға болады.
  • Сценарийлердің басым көпшілігінде транзакцияға бір рет ғана өзгертілетін үлкен/ұзын мәндері бар беттерді шығаруға басымдылықпен өзгертілген беттердің ұзақ пайдаланылмаған көлеңкелі көшірмелерін шығару жүзеге асырылды. Нәтиже - диск трафигінің азаюы және өте үлкен транзакциялары бар сценарийлердегі өнімділіктің жақсаруы.
  • Кілттерді енгізу кезінде беттерді бөлуге арналған «ақылды» режим енгізілді. Енді реттелген реттіліктерді кірістіру кезінде беттер автоматты түрде толығымен толтырылады, ал басқа жағдайларда ағаш оңтайлы теңестіріледі. Нәтижесінде, орта есеппен дерекқор беттері оңтайлы толтырылады және В-ағаштары теңдестірілген, бұл өнімділікке оң әсер етеді.
  • Дерекқормен операцияларды өзгерту құнын дәл бағалауға мүмкіндік беретін беттермен операциялар статистикасы қосылды.
  • Оннан астам қателер мен қателер түзетілді, соның ішінде: MinGW көмегімен құру, iOS <= 13.0 жүйесінде `std::filesystem::path` пайдалану, Windows жүйесінің ескі нұсқаларын мақсатты құру және т.б.
  • Барлығы 200 файлға 66-нан астам өзгертулер енгізілді, ~6500 жол қосылды, ~4500 жойылды.

Жаңа сақтау сервері ретінде Turbo-Geth жобасын (Go-Ethereum турбо шанышқысы) libmdbx таңдағанын атап өткім келеді, сонымен қатар жоба командасына (әсіресе Алексей Шаров, Артём Воротников және Алексей Ахунов) алғысымды білдіргім келеді. экстремалды пайдалану сценарийлерінде тестілеуде үлкен көмек. Атап айтқанда, алдын ала оқу/кэштеу басқаруындағы ақау табылды және жойылды, бұл үлкен дерекқорлары бар жаңғырту қиын сценарийлерде өнімділіктің төмендеуіне әкелді.

Ақпарат көзі: opennet.ru

пікір қалдыру