Sortie du SGBD embarqué compact libmdbx 0.9.1

Publié bibliothèque version 0.9.1 libmdbx (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 Licence publique OpenLDAP.

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 API C++.

La bibliothèque libmdbx n'est pas seulement un « fork », mais un descendant radicalement repensé BDLM — SGBD transactionnel embarqué de la classe « clé-valeur » basé sur arbre B+ sans journalisation proactive, 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 se développe 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 ACID, 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) :

Sortie du SGBD embarqué compact libmdbx 0.9.1

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 nouvelles précédentes 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. Groupe de télégramme.
  • Plus d'une douzaine d'erreurs et de lacunes ont été éliminées (voir. journal des modifications).
  • 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.
  • Prise en charge d'iOS, d'Android, racine de construction, Musulman, uClibc, WSL1 и Vin.
  • Aperçu de l'API C++ publié dans un fichier d'en-tête.
  • Documentation intégrée au format Doxygen et génération automatique Documentation en ligne.
  • 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 ultérieur de libmdbx se concentrera sur l'API C++ finale, la stabilisation supplémentaire du code de base, l'amélioration de la convivialité de la bibliothèque et l'empaquetage pour les distributions Linux populaires. Parmi les améliorations proposées, il convient de noter la prise en charge des clés au format Pack de messages.

Source: opennet.ru

Ajouter un commentaire