---
name: "Data::Session::Driver::BerkeleyDB"
section: "3pm"
platform: "linux"
package: "libdata-session-perl"
version: "1.18-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Data::Session::Driver::BerkeleyDB"
---

# Data::Session::Driver::BerkeleyDB(3pm)

A persistent session manager

## NAME

Data::Session::Driver::BerkeleyDB - A persistent session manager

## Synopsis

See Data::Session for details.

## Description

Data::Session::Driver::BerkeleyDB allows Data::Session to manipulate sessions via BerkeleyDB.

To use this module do both of these:

- o Specify a driver of type BerkeleyDB, as Data::Session -\> new(type =\> 'driver:BerkeleyDB ...')

  - o Specify a cache object of type BerkeleyDB as Data::Session -\> new(cache =\> $object)

  Also, `$object` must have been created with a Env parameter of type BerkeleyDB::Env. See below.

See scripts/berkeleydb.pl.

## Case-sensitive Options

See "Case-sensitive Options" in Data::Session for important information.

## Method: new()

Creates a new object of type Data::Session::Driver::BerkeleyDB.

`"new()"` takes a hash of key/value pairs, some of which might mandatory. Further, some combinations might be mandatory.

The keys are listed here in alphabetical order.

They are lower-case because they are (also) method names, meaning they can be called to set or get the value at any time.

- o cache =\> $object

  Specifies the object of type BerkeleyDB to use for session storage.

  This key is normally passed in as Data::Session -\> new(cache =\> `$object`).

  Warning: This cache object must have been set up both as an object of type BerkeleyDB, and with that object having an Env parameter of type Berkeley::Env, because this module - Data::Session::Driver::BerkeleyDB - uses the BerkeleyDB method **cds\_lock()**.

  This key is mandatory.

- o verbose =\> $integer

  Print to STDERR more or less information.

  Typical values are 0, 1 and 2.

  This key is normally passed in as Data::Session -\> new(verbose =\> `$integer`).

  This key is optional.

## Method: remove($id)

Deletes from storage the session identified by `$id`.

Returns the result of calling the BerkeleyDB method delete($id).

This result is a Boolean value indicating 1 =\> success or 0 =\> failure.

## Method: retrieve($id)

Retrieve from storage the session identified by `$id`.

Returns the result of calling the BerkeleyDB method get($id).

This result is a frozen session. This value must be thawed by calling the appropriate serialization driver's **thaw()** method.

Data::Session calls the right **thaw()** automatically.

## Method: store($id =\> $data)

Writes to storage the session identified by `$id`, together with its data `$data`.

Returns the result of calling the BerkeleyDB method set($id =\> `$data`).

This result is a Boolean value indicating 1 =\> success or 0 =\> failure.

## Method: traverse()

Retrieves all ids via a cursor, and for each id calls the supplied subroutine with the id as the only parameter.

The database is not locked during this process.

Returns 1.

## Installing BerkeleyDB

```
        Get Oracle's BerkeleyDB from
        http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html
        I used V 5.1.19
        tar xvzf db-5.1.19.tar.gz
        cd db-5.1.19/build_unix
        ../dist/configure
        make
        sudo make install
        It installs into /usr/local/BerkeleyDB.5.1
        Get Perl's BerkeleyDB from http://search.cpan.org
        I used V 0.43
        tar xvzf BerkeleyDB-0.43.tar.gz
        cd BerkeleyDB-0.43
        Edit 2 lines in config.in:
        INCLUDE = /usr/local/BerkeleyDB.5.1/include
        LIB     = /usr/local/BerkeleyDB.5.1/lib
        perl Makefile.PL
        make && make test
        sudo make install
```

## Support

Log a bug on RT: \<https://rt.cpan.org/Public/Dist/Display.html?Name=Data-Session\>.

## Author

Data::Session was written by Ron Savage *\<ron@savage.net.au\>* in 2010.

Home page: \<http://savage.net.au/index.html\>.

## Copyright

Australian copyright (c) 2010, Ron Savage.

```
        All Programs of mine are 'OSI Certified Open Source Software';
        you can redistribute them and/or modify them under the terms of
        The Artistic License, a copy of which is available at:
        http://www.opensource.org/licenses/index.html
```
