Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

MLDBM vs Storable

by oakbox (Chaplain)
on Feb 21, 2006 at 06:41 UTC ( [id://531629]=perlquestion: print w/replies, xml ) Need Help??

oakbox has asked for the wisdom of the Perl Monks concerning the following question:

I have a hash of arrays that has about 150 unique keys. This hash is stored to disk using Storable. On each call, I read the Storable file into a hash in the program and perform the required lookups for display to the user.

To be less abstract: The storable file holds text entries for different languages. The user of the web application is identified as using a particular language. When text needs to go to the screen, I just insert the appropriate language entry ($language->{unique_key}).

I'm doing 99% reading and very little writing to this data.

My question is, should I be using Storable here or tie(ing) this data structure using MLDBM? Which is faster? Is there a PROBLEM with just using Storable in this way?

Replies are listed 'Best First'.
Re: MLDBM vs Storable
by Aristotle (Chancellor) on Feb 21, 2006 at 07:44 UTC

    There is no particular problem with the way you’re doing this.

    MLDBM is worthwhile when the hash is huge; then it allows you to leave most data on disk and only pick up as much as you need in the moment. This means reduced waste in I/O, time spent on de-seriliasing data, and memory to hold it. But if you can afford to slurp all of the data, there is little reason not to; since MLDBM sits atop Storable (or atop Data::Dumper, which is slower) plus a DBM hash module, it certainly can’t be any faster than Storable alone if you’re only ever processing a small amount of data.

    So from your question as is, I don’t see much reason for you to change your approach.

    Makeshifts last the longest.

      Thanks Aristotle. I just wanted to make sure that my (to me) obvious solution was not silly. I'll stick with Storable until the translation file gets big.
Re: MLDBM vs Storable
by dragonchild (Archbishop) on Feb 21, 2006 at 12:49 UTC
    You might want to consider possibly using DBM::Deep for this, especially as your data requirements either grow or start to encompass arrays.

    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
      DBM::Deep is especially useful if you want to manipulate multi-level data structures stored on disk, and not just store and retrieve them. And you will want to do that sooner than you expect.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://531629]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2024-03-28 14:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found