Prohoster > Blog > tin tức mạng > Sau năm năm phát triển, ứng cử viên phát hành libmdbx 1.0 thứ hai đã được xuất bản
Sau năm năm phát triển, ứng cử viên phát hành libmdbx 1.0 thứ hai đã được xuất bản
Có sẵn для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx phân phối bởi под лицензией OpenLDAP Public License.
Библиотека MDBX является существенно переработанным ответвлением от LMĐB - DBMS nhúng giao dịch thuộc lớp “khóa-giá trị” dựa trên cây B+ mà không ghi nhật ký chủ động, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.
Sự khác biệt quan trọng nhất giữa MDBX và LMDB:
Принципиально больше внимания уделяется качеству кода, тестированию и автоматическим проверкам.
Kiểm soát nhiều hơn đáng kể trong quá trình vận hành, từ kiểm tra tham số đến kiểm tra nội bộ cấu trúc cơ sở dữ liệu.
Tự động nén và quản lý kích thước cơ sở dữ liệu tự động.
Một định dạng cơ sở dữ liệu duy nhất cho các cụm 32 bit và 64 bit.
Ước tính khối lượng mẫu theo phạm vi (ước tính truy vấn phạm vi).
Поддержка ключей вдвое большей блины и выбираемый пользователем размер страницы БД.
Выпущенный кандидат в релизы 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 и т.д.
Специализированный оптимизированный алгоритм внутренней сортировки (до 2-3 раз быстрее «qsort()» и до 30% быстрее «std::sort()»).
Увеличена максимальная длина ключа.
Автоматическое управление read ahead (стратегией кэширования файла БД в памяти).
Более агрессивная и быстрая авто-компактификация.
Более оптимальная стратегия слияния страниц B+ дерева.
Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
Расширен набор тестов.
Разработка «следующей» версии libmdbx будет продолжена в рамках отдельного проекта MithrilDB, в том время как вектор разработки «текущей» версии MDBX направлен на заморозку набора возможностей и стабилизацию. Такое решение принято по трём причинам:
Полная несовместимость: для реализации всех запланированных возможностей в MithrilDB требуется другой (несовместимый) формат файлов БД и другое (несовместимое) API.
Новый исходный код: для исходного кода MithrilDB обеспечена лицензионная независимость от LMDB, а сам проект планируется опубликовать под другой лицензией (одобренной HOẶC NẾU лицензией Apache 2.0, а не Giấy phép công cộng OpenLDAP).
Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.
MithrilDB как и MDBX, также основывается на дереве B+ и также будет отличатся предельно высокой производительностью, при этом устраняя ряд принципиальных недостатков MDBX и LMDB. В частности, будет ликвидирована проблема «долгих чтений», проявляющаяся как «распухание» БД из-за того, что переработка мусора блокируется долгим читающими транзакциями. Среди новых возможностей MithrilDB следует отметить:
Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
Использование Merkle tree для контроля целостности БД.
Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.