для тестирования второй кандидат в релизы библиотеки с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx под лицензией OpenLDAP Public License.
Библиотека MDBX является существенно переработанным ответвлением от — një DBMS të integruar në transaksion në klasën çelës-vlerë, e bazuar në pa , которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как и неблокирующее чтение с линейным масштабированием по ядрам CPU.
Dallimet më të rëndësishme të MDBX në krahasim me LMDB:
- Dhe më shumë vëmendje i është kushtuar cilësisë së kodit, testimit dhe verifikimeve automatike.
- Kontrolli është dukshëm më i madh gjatë punës, duke filluar nga verifikimi i parametrave deri te auditimi i brendshëm i strukturave të bazës së të dhënave.
- Kompaktifikimi automatik dhe menaxhimi automatik i madhësisë së DB.
- Formati i vetëm i DB për përmbledhjet 32-bit dhe 64-bit.
- Vlerësimi i volumit të mostrave sipas intervaleve (vlerësimi i pyetjeve në interval).
- Mbështetje për çelësa me dy herë më shumë për blina dhe madhësinë e DB të zgjedhur nga përdoruesi.
Выпущенный кандидат в релизы 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 и т.д.
- Aktualizimi .
- Слияние (амальгамация) исходного кода для удобства встраивания.
- Mbështetje CMake.
- Mbështetje për transaksione të thelluara.
- Përdorimi i bootid për të përcaktuar faktin e rilindjes së OS (ndërprerje të papritur të DB).
- Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
- Mundësia MDBX_ACCEDE për lidhje me një DB të hapur tashmë në modalitetin e përputhshmërisë.
- Përdorimi kur janë të aksesueshme.
- Kopje rezervë të nxehtë në pipe.
- Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
- Rritja e gjatësi maksimale të çelësit.
- Menaxhimi automatik i leximeve përpara (strategjia e memorizimit të skedarit DB në memorie).
- Kompaktifikimi automatik më agresiv dhe më i shpejtë.
- Strategji më optimale për bashkimin e faqeve të pemës B+.
- Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
- Shtuar grupi i testeve.
Zhvillimi i versionit të "në vijim" të libmdbx do të vazhdojë në kuadër të një projekti të veçantë. , ndërsa drejtimi i zhvillimit të versionit "aktual" të MDBX është orientuar drejt ngrirjes së grupit të mundësive dhe stabilizimit. Ky vendim është marrë për tre arsye:
- Përshtatshmëri e plotë e papërputhshme: për të realizuar të gjitha mundësitë e planifikuara në MithrilDB kërkohet një format tjetër skedarësh DB (i papërputhshëm) dhe një API tjetër (i papërputhshëm).
- Kodi i ri burimor: për kodin burimor të MithrilDB është garantuar pavarësia licencore nga LMDB dhe projekti vetë planifikohet të publikohet nën një licencë tjetër (të miratuar nga лицензией Apache 2.0, а не ).
- Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.
MithrilDB ashtu si MDBX, gjithashtu bazohet në dhe gjithashtu do të ketë një performancë maksimale të lartë, ndërsa do të eliminojë një sërë të meta thelbësore të MDBX dhe LMDB. Në veçanti, do të zgjidhet problemi i ‘leximeve të gjata’, i cili manifeston si ‘shkarkim’ i DB-së për shkak se përpunimi i mbeturinave bllokohet nga transaksionet e gjatë lexuese. Në mesin e mundësive të reja të MithrilDB, duhet theksuar:
- Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
- Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
- Использование Merkle tree для контроля целостности БД.
- Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
- Ленивая догоняющая фиксация данных на дисках.
Burimi: opennet.ru
