ProHoster > Blog > actualités internet > Après cinq années de développement, la deuxième version candidate de libmdbx 1.0 a été publiée
Après cinq années de développement, la deuxième version candidate de libmdbx 1.0 a été publiée
Disponible для тестирования второй кандидат в релизы библиотеки libmdbx с реализацией высокопроизводительной, компактной встраиваемой базой данных класса ключ-значение. Текущая версия (0.5) является техническим релизом, отмечает завершение каких-либо доработок и переход к фазе публичного финального тестирования и стабилизации, с последующем формированием первого полноценного релиза библиотеки. Код libmdbx distribué par под лицензией OpenLDAP Public License.
Библиотека MDBX является существенно переработанным ответвлением от BDLM — SGBD transactionnel embarqué de la classe « clé-valeur » basé sur arbre B+ sans journalisation proactive, которая позволяет многопоточным процессам конкурентно и эффективно работать с локально-разделяемой (не сетевой) БД. В свою очередь MDBX быстрее и надёжнее LMDB, и при этом сохраняет все ключевые возможности своего прародителя, такие как ACID и неблокирующее чтение с линейным масштабированием по ядрам CPU.
Les différences les plus importantes entre MDBX et LMDB :
Fondamentalement, une plus grande attention est accordée à la qualité du code, aux tests et aux contrôles automatiques.
Beaucoup plus de contrôle pendant le fonctionnement, de la vérification des paramètres à l'audit interne des structures de bases de données.
Auto-compactification et gestion automatique de la taille de la base de données.
Un format de base de données unique pour les assemblys 32 bits et 64 bits.
Estimation des volumes d'échantillons par plages (estimation de requête par plage).
Prise en charge de clés deux fois plus grandes que les crêpes et taille de page de base de données sélectionnable par l'utilisateur.
Выпущенный кандидат в релизы 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()»).
La longueur maximale de la clé a été augmentée.
Contrôle automatique de la lecture anticipée (stratégie de mise en cache des fichiers de base de données en mémoire).
Auto-compactification plus agressive et plus rapide.
Une stratégie plus optimale pour fusionner les pages de l'arborescence B+.
Контроль нелокальных файловых систем (NFS, Samba и т.п.) для предотвращения повреждения БД при неверном использовании.
L'ensemble des tests a été élargi.
Le développement de la « prochaine » version de libmdbx se poursuivra en tant que projet distinct MithrilDB, tandis que le vecteur de développement de la version « actuelle » de MDBX vise à geler l'ensemble des fonctionnalités et à le stabiliser. Cette décision a été prise pour trois raisons :
Totalement incompatible : MithrilDB nécessite un format de fichier de base de données différent (incompatible) et une API différente (incompatible) pour implémenter toutes les fonctionnalités prévues.
Nouveau code source : le code source de MithrilDB a été rendu sous licence indépendante de LMDB, et le projet lui-même devrait être publié sous une licence différente (approuvée par OSI лицензией Apache 2.0, а не Licence publique OpenLDAP).
Разделение позволяет избежать потенциальную путаницу, внести больше определённости и обеспечить независимость пути развития проектов.
MithrilDB, comme MDBX, est également basé sur arbre B+ et offrira également des performances extrêmement élevées, tout en éliminant un certain nombre d'inconvénients fondamentaux de MDBX et LMDB. En particulier, le problème des « lectures longues », qui se manifeste par un « gonflement » de la base de données en raison du blocage du traitement des déchets par les transactions de lecture longues, sera éliminé. Les nouvelles fonctionnalités de MithrilDB incluent :
Поддержка размещения БД на нескольких разнородных носителях: HDD, SSD и энергонезависимой памяти.
Оптимальные стратегии для «ценных» и «малоценных», для «горячих», «теплых» и «холодных» данных.
Использование Merkle tree для контроля целостности БД.
Опциональное использование WAL и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.