bibliothèque version 0.9.1 (MDBX) implémentation d'une base de données clé-valeur intégrée, compacte et hautes performances. Le code libmdbx est distribué sous licence .
La version actuelle est un compromis entre l'intention de publier une version 1.0 stable à long terme avec un support complet du C++ et la réticence à retarder les versions en raison du manque de préparation au gel de 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 également une version préliminaire .
La bibliothèque libmdbx n'est pas seulement un « fork », mais un descendant radicalement repensé — SGBD transactionnel embarqué de la classe « clé-valeur » basé sur sans , qui permet aux processus multithread de fonctionner de manière compétitive et efficace avec une base de données partagée localement (hors réseau) sans processus de serveur dédié. libmdbx fondamentalement capacités de son ancêtre, tout en éliminant ou en atténuant simultanément les inconvénients. Dans le même temps, selon les développeurs, libmdbx est un peu plus rapide et nettement plus fiable que LMDB.
libmdbx suggère , sérialisation stricte des modifications et lecture non bloquante avec mise à l'échelle linéaire sur les cœurs de processeur. Résultats des tests de performances (envoi de requêtes de lecture/recherche parallèles en 1-2-4-8 threads sur un CPU i7-4600U avec 2 cœurs physiques en mode HyperThread 4 threads) :
Les différences les plus importantes entre MDBX et LMDB :
- Fondamentalement, une plus grande attention est accordée à la qualité du code, à la cohérence des API, 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 longues et d'une taille de page de base de données sélectionnable par l'utilisateur.
- Un utilitaire pour vérifier l'intégrité de la structure de la base de données avec certaines capacités de récupération.
Principales innovations et améliorations après avec l'introduction de la version 0.5 en janvier 2020 :
- Un système ouvert a été créé pour une assistance rapide et des réponses aux questions. .
- Plus d'une douzaine d'erreurs et de lacunes ont été éliminées (voir. ).
- De nombreuses fautes de frappe et d'orthographe ont été corrigées et de nombreuses améliorations esthétiques ont été apportées.
- Les scénarios de test ont été étendus.
- La prise en charge d'iOS a été implémentée. Android, , , , и .
- Aperçu de l'API C++ publié dans .
- Documentation intégrée au format Doxygen et génération automatique .
- La génération automatique d'archives avec des textes sources amalgamés est fournie.
- Ajout de la prise en charge de la préparation des transactions et des curseurs, des contextes utilisateur pour les transactions et les curseurs.
- Des méthodes supplémentaires ont été implémentées pour contrôler l’intégrité référentielle dans les instantanés B+tree MVCC.
- Ajout de la prise en charge de la vérification d'un instantané MVCC de la base de données, accessible via n'importe quelle page méta avec la possibilité de basculer pour la récupération.
- Prise en charge implémentée pour la réouverture de la base de données à partir d'un processus à des fins de tests, etc.
- Implémentation du traitement automatique de l'option MDBX_NOSUBDIR lors de l'ouverture d'une base de données.
- Ajout de fonctions pour générer des clés entières à partir de valeurs à virgule flottante et de nombres « universels » JavaScript.
- Au total, 430 modifications ont été apportées affectant 93 fichiers, plus de 25 8.5 lignes ont été ajoutées et plus de XNUMX XNUMX lignes ont été supprimées.
Le développement futur de libmdbx se concentrera sur la finalisation de l'API C++, 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 populaires. LinuxParmi les améliorations proposées, il convient de noter la prise en charge des clés au format .
Source: opennet.ru
