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 и т.д.
  • Mise à jour Descriptions des API.
  • Слияние (амальгамация) исходного кода для удобства встраивания.
  • Prise en charge de CMake.
  • Prise en charge des transactions imbriquées.
  • Utilisation de bootid pour déterminer si le système d'exploitation a redémarré (arrêt de la base de données sale).
  • Сквозной подсчёт обновлённых/старых страниц и расширенная информация о транзакциях.
  • Option MDBX_ACCEDE pour se connecter à une base de données déjà ouverte en mode compatible.
  • l'utilisation de Blocage OFD quand disponible.
  • Sauvegarde à chaud dans le tuyau.
  • Специализированный оптимизированный алгоритм внутренней сортировки (до 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 и существенно более высокая производительно в сценариях с интенсивной записью и гарантиями на целостность данных.
  • Ленивая догоняющая фиксация данных на дисках.

Source: opennet.ru

Ajouter un commentaire