DBM (informatique) - DBM (computing)

En informatique, un DBM est une bibliothèque et un format de fichier offrant un accès rapide et à clé unique aux données. Une base de données clé-valeur de l' Unix d' origine , dbm est l'un des premiers exemples de système NoSQL .

Histoire

La bibliothèque et le format de fichier dbm d' origine étaient un simple moteur de base de données , écrit à l'origine par Ken Thompson et publié par AT&T en 1979. Le nom est un acronyme à trois lettres pour DataBase Manager et peut également faire référence à la famille de moteurs de base de données avec des API et des fonctionnalités. dérivé du dbm d' origine .

Les DBM bibliothèque stocke des données arbitraires par l' utilisation d'une clé unique (une clé primaire ) en taille fixe des seaux et des utilisations de hachage techniques pour permettre une récupération rapide des données par clé.

Le schéma de hachage utilisé est une forme de hachage extensible , de sorte que le schéma de hachage s'étend à mesure que de nouveaux compartiments sont ajoutés à la base de données, ce qui signifie que, lorsqu'elle est presque vide, la base de données commence avec un compartiment, qui est ensuite divisé lorsqu'il est plein. Les deux compartiments enfants résultants se diviseront eux-mêmes lorsqu'ils seront pleins, de sorte que la base de données s'agrandit au fur et à mesure que les clés sont ajoutées.

La bibliothèque dbm et ses dérivés sont des bases de données pré- relationnelles  - elles gèrent des tableaux associatifs , implémentés sous forme de tables de hachage sur disque . En pratique, ils peuvent offrir une solution plus pratique pour le stockage à haut débit accessible par clé, car ils ne nécessitent pas la surcharge de connexion et de préparation des requêtes. Ceci est contrebalancé par le fait qu'ils ne peuvent généralement être ouverts pour l'écriture que par un seul processus à la fois. Un démon d' agent peut gérer les demandes de plusieurs processus, mais introduit une surcharge IPC .

Implémentations

La bibliothèque dbm d' AT&T d'origine a été remplacée par ses nombreuses implémentations qui lui succèdent. Les exemples notables incluent :

  • ndbm ("nouveau dbm"), basé sur le dbm original avec quelques nouvelles fonctionnalités.
  • GDBM ("GNU dbm"), réécriture GNU de la bibliothèque implémentant les fonctionnalités ndbm et sa propre interface. Fournit également de nouvelles fonctionnalités telles que la tolérance aux pannes pour garantir la cohérence des données.
  • sdbm ("small dbm"), une réécriture du domaine public de dbm . Il fait partie des distributions standard pour Perl et Ruby .
  • qdbm ("Quick Database Manager"), un dbm plus performant employant bon nombre des mêmes techniques que Tokyo/Kyoto Cabinet. Écrit par le même auteur avant de passer aux armoires.
  • tdb ("Trivial Database"), une base de données simple utilisée par Samba qui prend en charge plusieurs rédacteurs. Possède une API basée sur gdbm.
  • Berkeley DB , 1991 remplacement de ndbm par Sleepycat Software (maintenant Oracle ) créé pour contourner le copyright AT&T Unix sur BSD . Il comporte de nombreuses extensions telles que le parallélisme, le contrôle transactionnel, le hachage et le stockage de l'arborescence B.
  • LMDB : implémentation de l' arbre B+ mappé en mémoire par copie sur écriture en C avec une API de style Berkeley.

Les bases de données suivantes sont inspirées de dbm, mais elles ne fournissent pas directement d'interface dbm, même s'il serait trivial d'en encapsuler une :

  • cdb ("constant database"), base de données de Daniel J. Bernstein , les fichiers de base de données peuvent uniquement être créés et lus, mais jamais modifiés
  • Tkrzw , un successeur sous licence Apache 2.0 du Cabinet Kyoto et du Cabinet Tokyo
  • WiredTiger : base de données avec stockage traditionnel orienté lignes et colonnes.

Disponibilité

En 2001, l' implémentation ndbm de DBM était standard sur Solaris et IRIX, alors que gdbm est omniprésent sur Linux . Les implémentations de Berkeley DB étaient standard sur certains systèmes d'exploitation libres. Après un changement de licence de Berkeley DB vers GNU AGPL en 2013, des projets comme Debian sont passés à LMDB.

Fiabilité

Un test de fuzzing AFL de 2018 sur de nombreuses bases de données de la famille DBM a révélé de nombreux problèmes d'implémentation en ce qui concerne les fichiers de base de données corrompus ou invalides. Seul freecdb de Daniel J. Bernstein n'a montré aucun plantage. Les auteurs de gdbm, tdb et lmdb ont été prompts à répondre. Berkeley DB a pris du retard en raison du grand nombre d'autres problèmes ; les correctifs ne seraient pas pertinents pour les utilisateurs de logiciels open source en raison du changement de licence les verrouillant sur une ancienne version.

Voir également

Les références

Bibliographie