BDB
view release on metacpan or search on metacpan
eg/basic_operations view on Meta::CPAN
#! perl
use strict;
use AnyEvent;
use BDB;
our $FH; open $FH, "<&=" . BDB::poll_fileno;
our $WATCHER = AnyEvent->io (fh => $FH, poll => 'r', cb => \&BDB::poll_cb);
my $env = db_env_create;
my $db;
warn "i3\n";#d#
mkdir "bdtest", 0700;
BDB::min_parallel 8;
db_env_open
$env,
"bdtest",
BDB::INIT_LOCK | BDB::INIT_LOG | BDB::INIT_MPOOL | BDB::INIT_TXN | BDB::RECOVER | BDB::USE_ENVIRON | BDB::CREATE,
0600;
$env->set_flags (BDB::AUTO_COMMIT | BDB::TXN_NOSYNC, 1);
$db = db_create $env;
db_open $db, undef, "table", undef, BDB::BTREE, BDB::AUTO_COMMIT | BDB::CREATE | BDB::READ_UNCOMMITTED, 0600;
for (1..1000) {
db_put $db, undef, "key[$_]", "data[$_]";
db_key_range $db, undef, "key[$_]", my $keyrange; my ($lt, $eq, $gt) = @$keyrange;
}
my $c = $db->cursor;
my @del;
for (;;) {
db_c_get $c, my $key, my $data, BDB::NEXT;
warn "<$!,$key,$data>";
last if $!;
push @del, $key if rand > 0.9;
}
{
my $seq = $db->sequence;
db_sequence_open $seq, undef, "seq", BDB::CREATE;
db_sequence_get $seq, undef, 1, my $value;
warn "next sequence value: $value\n";
}
db_c_close $c, sub { };
undef $c;
db_del $db, undef, $_ for @del;
db_sync $db;
( run in 1.206 second using v1.01-cache-2.11-cpan-39bf76dae61 )