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
- Host: GitHub
- URL: https://github.com/nigelhorne/db-berkeley
- Owner: nigelhorne
- License: gpl-2.0
- Created: 2025-07-09T13:47:42.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2025-07-11T10:54:25.000Z (11 months ago)
- Last Synced: 2025-08-07T19:12:56.975Z (10 months ago)
- Topics: berkeley-db, cpan-module, nosql, nosql-database, perl, perl5
- Language: Perl
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.