OVH Cloud OVH Cloud

DB_File (Berkeley DB) ou Storable ?

2 réponses
Avatar
Bruno Ethvignot
Bonjour,

Quel est l'intérêt d'utiliser des fichiers "Berkeley DB" plutôt que le
module "Storable" ? Pour les grandes quantités de données je pense que
les "Berkeley DB" sont conseillées. Mais sinon le module "Storable" a
l'air très rapide.

Est-il possible de stocker une table de hachage dans un fichier
"Berkeley DB", de la même façon que l'on peut faire des tables de
hachage de tables de hachage.

Je cherche des documentations sur les fichiers "Berkeley DB" en général
et leur utilisation avec Perl en particulier.
J'avoue ne pas avoir bien saisie les notions de DB_HASH, DB_BTREE,
et DB_RECNO (Queue n'est pas supporté ?)

Quelle sont les différences entre les versions 2, 3, 4 des fichiers
"Berkeley DB" supportés plus les modules DB_File, BerkDB, BerkeleyDB ?

Je suis preneur de toutes informations, liens, livres, ...

Merci,
--
Bruno Ethvignot
http://mozilla.tlk.fr/contact.php
http://linux.tlk.fr/contact.php

2 réponses

Avatar
Laurent Wacrenier
Bruno Ethvignot écrit:
Je cherche des documentations sur les fichiers "Berkeley DB" en général
et leur utilisation avec Perl en particulier.
J'avoue ne pas avoir bien saisie les notions de DB_HASH, DB_BTREE,
et DB_RECNO (Queue n'est pas supporté ?)


HASH est une table de hashage, elle permet d'avoir accès en un temps
constant aux données.

BTREE est un arbre binaire, le temps d'accès est proportionel au
logarithme du nombre d'enregistrements, par contre les clefs sont
triées et il est possible (en option) qu'une clef référence plusieures
valeurs.

RECNO sert à acceder à une liste d'enregsistrement. Il n'y a pas de
clef, mais des numéros d'enregistrement.

Quelle sont les différences entre les versions 2, 3, 4 des fichiers
"Berkeley DB" supportés plus les modules DB_File, BerkDB, BerkeleyDB ?


Plus le numéro de version est grand, plus les possibilités sont
nombreuses. Il y a des possibilités de plus en plus interessantes
comme le partage de la base avec d'autres processus, d'autres types de
de base (les queues), des curseurs, des transactions, des clefs
multiples, etc.

DB_File normalement accède au format DB1 (le format historique de
Berkeley)

Les autres (tout au moins BerkeleyDB) à DB 2 , 3 et 4.

Avatar
Michel Rodriguez
Bruno Ethvignot wrote:

Quel est l'intérêt d'utiliser des fichiers "Berkeley DB" plutôt que le
module "Storable" ? Pour les grandes quantités de données je pense que
les "Berkeley DB" sont conseillées. Mais sinon le module "Storable" a
l'air très rapide.


Les 2 ne sont pas utilises du tout de la meme facon: avec Storable tu
sauvegarde une structure de donnees qui peut etre complexe mais a priori
tient en memoire, sur disque, et tu peux la relire plus tard. Avec
Berkeley DB tu met un hash, rien de plus complique, mais il peut etre
plus gros que ta memoire, sur disque, et tu peux acceder a ses valeurs
sans avoir besoin de le charger entierement en memoire. Si tu veux des
structures de donnees plu scomplexes il faut que tu gere toi-meme leur
"serialisation" (ceci dit ca m'etonnerait qu'il n'y ait pas de modules
CPAN qui fasse cela).

Est-il possible de stocker une table de hachage dans un fichier
"Berkeley DB", de la même façon que l'on peut faire des tables de
hachage de tables de hachage.

Je cherche des documentations sur les fichiers "Berkeley DB" en général
et leur utilisation avec Perl en particulier.
J'avoue ne pas avoir bien saisie les notions de DB_HASH, DB_BTREE,
et DB_RECNO (Queue n'est pas supporté ?)


Pour les utiliser, regarde la doc de GDBM_File, c'est vraiment simple.
Sinon voit http://sleepycat.com/

--
Michel ROdriguez
Perl & XML
http://www.xmltwig.com