Après cinq ans de développement, le deuxième candidat à la sortie de libmdbx 1.0 a été publié.

Disponible pour tester le deuxième candidat de la bibliothèque en version préliminaire libmdbx avec une base de données intégrée compacte et haute performance de type clé-valeur. La version actuelle (0.5) est une version technique, marquant la fin des développements et le passage à la phase de test final public et de stabilisation, avec la formation ultérieure de la première version complète de la bibliothèque. Le code de libmdbx est distribué est sous la licence OpenLDAP Public License.

La bibliothèque MDBX est un fork considérablement retravaillé de LMDB - un SGBD intégré de type clé-valeur basé sur l'arbre B+ sans journalisation anticipée, qui permet aux processus multithread d'interagir de manière concurrente et efficace avec une base de données partagée localement (non réseau). À son tour, MDBX est plus rapide et plus fiable que LMDB tout en conservant toutes les capacités clés de son ancêtre, telles que ACID et la lecture non bloquante avec une mise à l'échelle linéaire selon les cœurs du CPU.

Les différences les plus importantes entre MDBX et LMDB :

  • Une attention considérablement plus grande est accordée à la qualité du code, 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 ayant un double des valeurs et taille de page de base de données choisie par l'utilisateur.

Le candidat libmdbx publié est le résultat de la décision prise en août 2019 de diviser les projets MDBX et MithrilDB. Il a été décidé dans libmdbx d'éliminer le maximum (rationnel) de la dette technique et de stabiliser la bibliothèque. En fait, il a été réalisé dans cette direction 2 à 3 fois plus que prévu initialement :

  • La prise en charge de macOS et des plateformes « de deuxième niveau » : FreeBSD, Solaris, DragonFly BSD, OpenBSD, NetBSD. La prise en charge de AIX et HP-UX peut être ajoutée si nécessaire.
  • Le code a été assaini à l'aide de l'Undefined Behavior Sanitizer et de l'Address Sanitizer, toutes les alertes lors de la compilation avec "-Wpedantic", toutes les alertes Coverity Static Analyzer, etc. ont été corrigées.
  • Mise à jour de la description de l'API.
  • Fusion (amalgamation) du code source pour plus de commodité lors de l'intégration.
  • Prise en charge de CMake.
  • Prise en charge des transactions imbriquées.
  • Utilisation de bootid pour déterminer le fait d'un redémarrage du système d'exploitation (arrêt brutal de la base de données).
  • Comptage global des pages mises à jour/vieilles et informations détaillées sur les transactions.
  • Option MDBX_ACCEDE pour se connecter à une base de données déjà ouverte en mode compatible.
  • Utilisation Verrous OFD lorsqu'ils sont disponibles.
  • Sauvegarde à chaud dans le pipe.
  • Algorithme de tri interne optimisé spécialisé (jusqu'à 2-3 fois plus rapide que «qsort()» et jusqu'à 30% plus rapide que «std::sort()»).
  • Longueur maximale de la clé augmentée.
  • Gestion automatique du read ahead (stratégie de mise en cache de la base de données en mémoire).
  • Compactage auto plus agressif et rapide.
  • Stratégie de fusion des pages de l'arbre B+ plus optimale.
  • Contrôle des systèmes de fichiers non locaux (NFS, Samba, etc.) pour éviter la corruption de la base de données en cas d'utilisation incorrecte.
  • Série de tests étendue.

Le développement de la «prochaine» version de libmdbx se poursuivra dans le cadre d'un projet séparé. MithrilDB, tandis que la direction du développement de la «version actuelle» de MDBX est axée sur la stabilisation et le gel de l'ensemble des fonctionnalités. Cette décision a été prise pour trois raisons :

  • Incompatibilité totale : pour réaliser toutes les fonctionnalités planifiées dans MithrilDB, un autre format de fichiers de base de données (incompatible) et une autre API (incompatible) sont nécessaires.
  • Nouveau code source : le code source de MithrilDB est garanti indépendant de la licence LMDB, et le projet est prévu d'être publié sous une autre licence (approuvée par OSI licence Apache 2.0, plutôt que licence publique OpenLDAP.).
  • La séparation permet d'éviter toute confusion potentielle, d'apporter plus de clarté et d'assurer l'indépendance des chemins de développement des projets.

MithrilDB, tout comme MDBX, est également basé sur l'arbre B+ et se distinguera également par des performances exceptionnellement élevées, tout en éliminant plusieurs inconvénients fondamentaux de MDBX et LMDB. En particulier, le problème des «longs lectures», qui se manifeste par un «gonflement» de la base de données en raison du blocage des transactions de lecture longues pendant le ramassage des déchets, sera résolu. Parmi les nouvelles fonctionnalités de MithrilDB, on peut noter :

  • Support du stockage de la base de données sur plusieurs supports hétérogènes : HDD, SSD et mémoire non volatile.
  • Stratégies optimales pour les données «précieuses» et «peu précieuses», pour les données «chaudes», «tièdes» et «froides».
  • Utilisation d'un arbre Merkle pour contrôler l'intégrité de la base de données.
  • Utilisation optionnelle de WAL et performances considérablement améliorées dans des scénarios d'écriture intensive avec des garanties d'intégrité des données.
  • Fixation paresseuse des données en attente sur les disques.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster