An open API service indexing awesome lists of open source software.

https://github.com/nigelhorne/db-berkeley

Interface to Berkeley DB
https://github.com/nigelhorne/db-berkeley

berkeley-db cpan-module nosql nosql-database perl perl5

Last synced: 10 months ago
JSON representation

Interface to Berkeley DB

Awesome Lists containing this project

README

          

# NAME

DB::Berkeley - XS-based OO Berkeley DB HASH interface

# VERSION

Version 0.03

# DESCRIPTION

A lightweight XS wrapper around Berkeley DB using HASH format, without using tie().
DB\_File works, I just prefer this API.

# SYNOPSIS

use DB::Berkeley;

# Open or create a Berkeley DB HASH file
my $db = DB::Berkeley->new("mydata.db", 0, 0666);

# Store key-value pairs
$db->put("alpha", "A");
$db->put("beta", "B");
$db->put("gamma", "G");

# Retrieve a value
my $val = $db->get("beta"); # "B"

# Check existence
if ($db->exists("alpha")) {
print "alpha is present\n";
}

# Delete a key
$db->delete("gamma");

# Get all keys (as arrayref)
my $keys = $db->keys; # returns arrayref
my @sorted = sort @$keys;

# Get all values (as arrayref)
my $vals = $db->values; # returns arrayref

# Iterate using each-style interface
$db->iterator_reset;
while (my ($k, $v) = $db->each) {
print "$k => $v\n";
}

# Use low-level iteration
$db->iterator_reset;
while (defined(my $key = $db->next_key)) {
my $value = $db->get($key);
print "$key: $value\n";
}

# Automatic cleanup when $db is destroyed

# METHODS

## new

my $db = DB::Berkeley->new($filename, $flags, $mode, $sync_on_put);

Creates and opens a new Berkeley DB file.
If `$sync_on_put` is true, every `put()` will automatically call `sync()` to flush to disk.

## store($key, $value)

Alias for `put`. Stores a key-value pair in the database.

## set($key, $value)

Alias for `set`. Stores a key-value pair in the database.

## fetch($key)

Alias for `get`. Retrieves a value for the given key.

## iterator

my $iter = $db->iterator;

Returns a [DB::Berkeley::Iterator](https://metacpan.org/pod/DB%3A%3ABerkeley%3A%3AIterator) object which can be used to iterate over
all key/value pairs in the database.

This allows you to write iterator-style loops:

my $iter = $db->iterator;

while (my $pair = $iter->each()) {
my ($key, $value) = @{$pair};
print "Key: $key, Value: $value\n";
}

You can reset the iterator using:

$iter->iterator_reset();

Note that calling `each()` or other iteration methods directly on the `$db` object
will use an internal cursor that is separate from the object returned by `iterator()`.

This is especially useful for nested iteration or concurrent traversal contexts.

## sync

$db->sync();

Flushes all pending writes to disk.
Useful for ensuring durability between critical updates.

Returns true on success.
Croaks on error.

## sync\_on\_put

$db->sync_on_put(1); # Enable syncing on put
my $flag = $db->sync_on_put(); # Check current status

Get or set whether `put()` operations immediately flush to disk via `sync()`.

# AUTHOR

Nigel Horne, ``

# SEE ALSO

- [BerkeleyDB](https://metacpan.org/pod/BerkeleyDB)
- [DB\_File](https://metacpan.org/pod/DB_File)

# REPOSITORY

[https://github.com/nigelhorne/DB-Berkeley](https://github.com/nigelhorne/DB-Berkeley)

# SUPPORT

This module is provided as-is without any warranty.

Please report any bugs or feature requests to `bug-db-berkeley at rt.cpan.org`,
or through the web interface at
[http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DB-Berkeley](http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DB-Berkeley).
I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.

You can find documentation for this module with the perldoc command.

perldoc DB::Berkeley

You can also look for information at:

- MetaCPAN

[https://metacpan.org/dist/DB-Berkeley](https://metacpan.org/dist/DB-Berkeley)

- RT: CPAN's request tracker

[https://rt.cpan.org/NoAuth/Bugs.html?Dist=DB-Berkeley](https://rt.cpan.org/NoAuth/Bugs.html?Dist=DB-Berkeley)

- CPAN Testers' Matrix

[http://matrix.cpantesters.org/?dist=DB-Berkeley](http://matrix.cpantesters.org/?dist=DB-Berkeley)

- CPAN Testers Dependencies

[http://deps.cpantesters.org/?module=DB::Berkeley](http://deps.cpantesters.org/?module=DB::Berkeley)

# LICENCE AND COPYRIGHT

Copyright 2025 Nigel Horne.

Usage is subject to licence terms.

The licence terms of this software are as follows:

- Personal single user, single computer use: GPL2
- All other users (including Commercial, Charity, Educational, Government)
must apply in writing for a licence for use from Nigel Horne at the
above e-mail.