AnyDBM_File |
N'importe quel fichier DBM |
|---|---|
Perl |
Ce module permet de fournir un cadre d'application pour des multiples DBM. Il existe différentes implémentations de DBM : NDBM_File, DB_File, GDBM_File, SDBM_File, ODBM_File.
Synopsis
- use AnyDBM_File;
Description
Ce module est une «classe de base virtuelle pure» : il n'a rien de propre. Il est simplement là pour hériter de l'un des différents paquet DBM. Il privilégie ndbm pour des raisons de compatibilité avec Perl 4, puis Berkeley DB (voir DB_File), GDBM, SDBM (étant toujours présent ; il est fourni avec Perl) et enfin ODBM. Ainsi, les anciens programmes utilisant NDBM via dbmopen() peuvent continuer à le faire, mais les nouveaux peuvent réorganiser @ISA :
- BEGIN { @AnyDBM_File::ISA = qw(DB_File GDBM_File NDBM_File) }
- use AnyDBM_File;
Le fait d'avoir plusieurs implémentations DBM rend triviale la copie des formats de base de données :
Comparaisons DBM
Voici un tableau partiel des fonctionnalités offertes par les différents paquets :
| Description | odbm | ndbm | sdbm | gdbm | bsd-db |
|---|---|---|---|---|---|
| La liaison est livrée avec perl | oui | oui | oui | oui | oui |
| Le source est fourni avec Perl | non | non | oui | non | non |
| Livré avec/de nombreux systèmes d'exploitation Unix | oui | oui[0] | non | non | non |
| Compilation correcte sur !unix | ? | ? | oui | oui | ? |
| Taille du code | ? | ? | petit | gros | gros |
| Taille de la base de données | ? | ? | petit | gros? | correcte[1] |
| Vitesse | ? | ? | lent | correcte | rapide |
| FTPable | non | non | oui | oui | oui |
| Facile à construire | N/A | N/A | oui | oui | correcte[2] |
| Limites de taille | 1k | 4k | 1k[3] | aucun | aucun |
| Indépendant de l'ordre des octets | non | non | non | non | oui |
| Restrictions de licence | ? | ? | non | oui | non |
- [0] Sur les machines à univers mixte, peut se trouver dans la bibliothèque de compatibilité BSD, souvent ignorée.
- [1] Peut être réduit si vous compilez pour une seule méthode d'accès.
- [2] Voir DB_File. Nécessite des liens symboliques.
- [3] Par défaut, mais peut être redéfini.
Voir également
dbm(), ndbm(), DB_File(), perldbmfilter.