Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

MLDBM vs Storable

by oakbox (Chaplain)
on Feb 21, 2006 at 06:41 UTC ( #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?

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (6)
As of 2020-04-07 18:18 GMT
Find Nodes?
    Voting Booth?
    The most amusing oxymoron is:

    Results (43 votes). Check out past polls.