version 0.9.1 de la bibliothèque (MDBX) avec une implémentation d'une base de données intégrée, compacte et hautement performante de type clé-valeur. Le code libmdbx est distribué sous licence .
La version actuelle est un compromis entre l'intention de publier une version stable à long terme 1.0 avec un support complet de C++ et le refus de retarder les sorties en raison de l'incapacité à geler la nouvelle API C++. La version présentée est le résultat de 9 mois de travail visant à stabiliser la bibliothèque et à améliorer sa convivialité, et comprend une version préliminaire .
La bibliothèque libmdbx n'est pas simplement un « fork », mais un descendant radicalement retravaillé - un SGBD intégré de type clé-valeur basé sur sans , qui permet aux processus multithread de travailler de manière concurrente et efficace avec une base de données localement partagée (non réseau) sans processus serveur dédié. Libmdbx est fondamentalement les capacités de son ancêtre, tout en éliminant ou en atténuant les défauts. Selon les développeurs, libmdbx est légèrement plus rapide et nettement plus fiable que LMDB.
libmdbx propose , une sérialisation stricte des modifications et une lecture non bloquante avec une mise à l'échelle linéaire sur les cœurs CPU. Les résultats des tests de performances (envoi de requêtes parallèles de lecture/recherche en 1-2-4-8 flux sur CPU i7-4600U avec 2 cœurs physiques en mode 4 flux HyperThread) :
Les différences les plus importantes entre MDBX et LMDB :
- Une attention particulièrement accrue est portée à la qualité du code, à la « non-chute » de l'API, aux tests et aux vérifications automatiques.
- Un contrôle beaucoup plus important pendant l'exécution, allant de la vérification des paramètres à l'audit interne des structures de la base de données.
- Auto-compaction et gestion automatique de la taille de la base de données.
- Format de base de données unifié pour les builds 32 bits et 64 bits.
- Évaluation du volume des échantillons par plages (estimation de requêtes par plage).
- Prise en charge des clés de deux fois plus de longueur et taille de page de base de données choisie par l'utilisateur.
- Un utilitaire de vérification de l'intégrité de la structure de la base de données avec certaines capacités de récupération.
Les principales nouveautés et améliorations après présentant la version 0.5 en janvier 2020 :
- Pour un soutien opérationnel et des réponses aux questions, un groupe ouvert a été créé .
- Plus d'une dizaine de bogues et de défauts ont été corrigés (voir ).
- Une multitude de fautes de frappe et d'erreurs orthographiques ont été corrigées, ainsi que de nombreuses améliorations cosmétiques.
- Les scénarios de test ont été élargis.
- Le support pour iOS, Android a été mis en œuvre, , , , et .
- Une version préliminaire de l'API C++ a été présentée dans .
- La documentation intégrée a été formulée au format Doxygen et la génération automatique .
- La création automatique d'archives avec des textes d'origine amalgamés est assurée.
- Ajout du support pour la préparation des transactions et des curseurs, ainsi que des contextes utilisateur pour les transactions et les curseurs.
- Des méthodes supplémentaires de contrôle de l'intégrité des liens dans les instantanés MVCC B+tree ont été mises en œuvre.
- Ajout du support pour la vérification des instantanés MVCC de la base de données, accessible via n'importe quelle méta-page avec la possibilité de basculer pour le rétablissement.
- Le support de la réouverture de la base de données depuis un processus unique a été réalisé à des fins de test, etc.
- La gestion automatique de l'option MDBX_NOSUBDIR lors de l'ouverture de la base de données a été réalisée.
- Des fonctions de génération de clés entières à partir de valeurs à virgule flottante et de nombres 'universels' JavaScript ont été ajoutées.
- Au total, 430 modifications ont été apportées touchant 93 fichiers, avec plus de 25 000 lignes ajoutées et plus de 8 500 lignes supprimées.
Le développement ultérieur de libmdbx se concentrera sur la formation de l'API C++ finale, la stabilisation du code de base, l'amélioration de la convivialité de la bibliothèque et la création de paquets pour les distributions Linux populaires. Parmi les améliorations prévues, on note le support des clés au format. .
Source : opennet.ru
