BDB::Wrapper
Wrapper module for BerkeleyDB.pm for easy usage of it.
This will make it easy to use BerkeleyDB.pm.
You can protect bdb file from the concurrent access and you can use BerkeleyDB.pm with less difficulty.
This module is used on http://sakuhindb.com/ and is developed based on the requirement.
Attention: If you use this module for the specified Berkeley DB file,
please use this module for all access to the bdb.
By it, you can control lock and strasaction of bdb files.
BDB_HOMEs are created under /tmp/bdb_home in default option.
Japanese: http://sakuhindb.com/pj/6_B4C9CDFDBFCDA4B5A4F3/13/list.html
English: http://en.sakuhindb.com/pe/Administrator/19/list.html

Creates an object of BDB::Wrapper
If you set {'ram'=>1}, you can use /dev/shm/bdb_home for storing locking file for BDB instead of /tmp/bdb_home/.
1 is default value.
If you set {'no_lock'=>1}, the control of concurrent access will not be used. So the lock files are also not created.
0 is default value.
If you set {'cache'=>$CACHE_SIZE}, you can allocate cache memory of the specified bytes for using bdb files.
The value can be overwritten by the cache value of create_write_dbh
undef is default value.
If you set {'wait'=>wait_seconds}, you can specify the seconds in which dead lock will be removed.
11 is default value.
If you set {'transaction'=>transaction_root_dir}, all dbh object will be created in transaction mode unless you don\'t specify transaction root dir in each method.
11 is default value.

Creates Environment for BerkeleyDB
create_env({'bdb'=>$bdb,
'no_lock='>0(default) or 1,
'cache'=>undef(default) or integer,
'error_log_file'=>undef or $error_log_file,
'transaction'=> 0==undef or $transaction_root_dir
});
no_lock and cache will overwrite the value specified in new but used only in this env

This returns database handler for writing or ($database_handler, $env) depeinding on the request.
$self->create_write_dbh({'bdb'=>$bdb,
'cache'=>undef(default) or integer,
'hash'=>0 or 1,
'dont_try'=>0 or 1,
'no_lock'=>0(default) or 1,
'sort_code_ref'=>$sort_code_reference,
'sort' or 'sort_num'=>0 or 1,
'transaction'=> 0==undef or $transaction_root_dir,
'reverse_cmp'=>0 or 1,
'reverse' or 'reverse_num'=>0 or 1
});
In the default mode, BDB file will be created as Btree;
If you set 'hash' 1, Hash BDB will be created.
If you set 'dont_try' 1, this module won\'t try to unlock BDB if it detects the situation in which deadlock may be occuring.
If you set sort_code_ref some code reference, you can set subroutine for sorting for Btree.
If you set sort or sort_num 1, you can use sub {$_[0] <=> $_[1]} for sort_code_ref.
If you set reverse or reverse_num 1, you can use sub {$_[1] <=> $_[0]} for sort_code_ref.
If you set reverse_cmp 1, you can use sub {$_[1] cmp $_[0]} for sort_code_ref.
If you set transaction for storing transaction log, transaction will be used and ($bdb_handler, $transaction_handler) will be returned.

This returns database handler for reading or ($database_handler, $env) depeinding on the request.
$self->create_read_dbh({
'bdb'=>$bdb,
'hash'=>0 or 1,
'dont_try'=>0 or 1,
'sort_code_ref'=>$sort_code_reference,
'sort' or 'sort_num'=>0 or 1,
'reverse_cmp'=>0 or 1,
'reverse' or 'reverse_num'=>0 or 1,
'transaction'=> 0==undef or $transaction_root_dir
});
In the default mode, BDB file will be created as Btree;
If you set 'hash' 1, Hash BDB will be created.
If you set 'dont_try' 1, this module won\'t try to unlock BDB if it detects the situation in which deadlock may be occuring.
If you set sort_code_ref some code reference, you can set subroutine for sorting for Btree.
If you set sort or sort_num 1, you can use sub {$_[0] <=> $_[1]} for sort_code_ref.
If you set reverse or reverse_num 1, you can use sub {$_[1] <=> $_[0]} for sort_code_ref.
If you set reverse_cmp 1, you can use sub {$_[1] cmp $_[0]} for sort_code_ref.

Not recommended method. Please use create_write_dbh() instead of this method.
This will creates hash for writing.
$self->create_write_hash_ref({'bdb'=>$bdb,
'hash'=>0 or 1,
'dont_try'=>0 or 1,
'sort_code_ref'=>$sort_code_reference,
'sort' or 'sort_num'=>0 or 1,
'reverse_cmp'=>0 or 1,
'reverse' or 'reverse_num'=>0 or 1
});
In the default mode, BDB file will be created as Btree.
If you set 'hash' 1, Hash BDB will be created.
If you set 'dont_try' 1, this module won\'t try to unlock BDB if it detects the situation in which deadlock may be occuring.
If you set sort_code_ref some code reference, you can set subroutine for sorting for Btree.
If you set sort or sort_num 1, you can use sub {$_[0] <=> $_[1]} for sort_code_ref.
If you set reverse or reverse_num 1, you can use sub {$_[1] <=> $_[0]} for sort_code_ref.
If you set reverse_cmp 1, you can use sub {$_[1] cmp $_[0]} for sort_code_ref.

Not recommended method. Please use create_read_dbh and cursor().
This will creates database handler for reading.
$self->create_read_hash_ref({
'bdb'=>$bdb,
'hash'=>0 or 1,
'dont_try'=>0 or 1,
'sort_code_ref'=>$sort_code_reference,
'sort' or 'sort_num'=>0 or 1,
'reverse_cmp'=>0 or 1,
'reverse' or 'reverse_num'=>0 or 1
});
In the default mode, BDB file will be created as Btree.
If you set 'hash' 1, Hash BDB will be created.
If you set 'dont_try' 1, this module won\'t try to unlock BDB if it detects the situation in which deadlock may be occuring.
If you set sort_code_ref some code reference, you can set subroutine for sorting for Btree.
If you set sort or sort_num 1, you can use sub {$_[0] <=> $_[1]} for sort_code_ref.
If you set reverse or reverse_num 1, you can use sub {$_[1] <=> $_[0]} for sort_code_ref.
If you set reverse_cmp 1, you can use sub {$_[1] cmp $_[0]} for sort_code_ref.
If you set use_env 1, you can use environment for this method.