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

I hope this question isn't overly stupid. I was reading on freshmeat about databases other than mysql. I basically use mysql and perl DBI for everything. I read a lot about postgresql and decided it wasn't my style.

Anyhoo, all that is off topic. Perhaps it's just so simple that there needn't be any docs on it. How do you use Berkeley DB from perl? (author's use of bold because author knows he babbles)

I gather you tie something to arrays or something? Is the DBM the same thing as Berkeley db? Is BBDB (on CPAN) the same thing and is that any good?

Replies are listed 'Best First'.
Re: Berkeley Use
by stajich (Chaplain) on Sep 29, 2003 at 19:46 UTC
    use DB_File; my ($handle,%db); $handle = tie(%db, 'DB_File'); $db{'Larry'} = 'Wall';
    I think the docs for these nodes pretty much sum up the modules use and the differences. DB_File is for BDB 1 API and BerkeleyDB is for BDB version 2,3,4 API. In my hands for simple key/value storage this is much faster than the overhead of DBI/mysql.
      The docs for DB_File state that:

      If you want to make use of the new features available in Berkeley DB 2.x or greater, use the Perl module Berke- leyDB instead.

      is there some great disadvantage to using that module?

        If you want/need the newer features I would say sure use BerkeleyDB. I'm a bit of a minimalist, so if I don't need the newer stuff, I like to stay with the simpler module. I probably just stick with what I know better I guess.

        Disadvantages - BerkeleyDB doesn't come in the perl core, DB_file does. Scripts which rely on the newer API features won't be directly portable to a machine which doesn't have this module installed. If other people are going to use your code I would stick with DB_File. This is a minor quibble, but it depends on sophistication of your users.

        Advantages - the OO modules and the new features. Queues are very nice. Also you can setup multiple dbs within a file eliminating the need to create multiple index files for different datasets. Lots more things, really depends on what you need.

      Oh, awesome. I'm not real sure how to use this yet, but now I have some reading to do. Thanks.