BerkeleyDB::Lite - 膂≧����˨�ŝ�c��BerkeleyDB��吾�勉�ゃ�潟�帥�若����с�若�
use BerkeleyDB::Lite;
## Create a Hashed database
my $db = new BerkeleyDB::Lite::Hash
home => 'zoo',
filename => 'residents' ;
$db->{Samson} = new Primate ;
$db->{Cornelius} = new Primate ;
$db->{Kaa} = new Reptile ;
## Create a Btree database allowing duplicates and scalar values
my $types = scalars BerkeleyDB::Lite::Btree
home => 'zoo',
filename => 'types',
&duplicatekeys ;
$types->{primate} = 'Samson' ;
$types->{primate} = 'Cornelius' ;
$types->{reptile} = 'Kaa' ;
printf "%s\n", join ' ', $types->recordset{primate} ;
## prints: Samson Cornelius
$types->delete( primate => 'Samson' ) ;
printf "%s\n", join ' ', $types->recordset{primate} ;
## prints: Cornelius
## Create a database of visitors
## Use a table with arbitrary keys
## Track visitors by date/timestamp
$tickets = new BerkeleyDB::Lite::Btree
home => 'zoo',
filename => 'tickets',
&incrementkeys ;
## Lexical Alternative
# $tickets = lexical BerkeleyDB::Lite::Btree
# home => 'zoo',
# filename => 'tickets' ;
$bytime = scalars BerkeleyDB::Lite::Btree
home => 'zoo',
filename => 'ticketsbytime',
&duplicatekeys ;
## Process a new visitor in real time
sub newvisitor {
my $serial = $tickets->nextrecord() ;
my $date = getdate() ; ## not part of BerkeleyDB::Lite
my $time = gettime() ; ## not part of BerkeleyDB::Lite
$tickets->{$serial} = { @_ } ;
$bytime->{ "$date $time" } = $serial ;
return $serial ;
}
## Get a list of visitors on a certain date
sub showvisitorsbydate {
my $date = shift ;
return $bytime->matchingvalues( $date ) ;
}
BerkeleyDB::Lite���Paul Marquess���BerkeleyDB��˨��������膂≧����˨�ŝ�c�� ��潟�潟�鴻����í�壔�帥�������若�帥�吾��tie�����������≪�壔�祉�鴻����������活����違�㋘�潟�若���� ���������菴������冴�勉�<�純�����������箴������障�����
BerkeleyDB::Lite��壠�����home��◑�������㏍�若� ��∫�d����������������������宴�若�後����違�勉�������激�ャ�������с����� BerkeleyDB��医��紊���違��茯炊�眼����障����� ��堺�㋜�����BerkeleyDB::Lite��勉�潟�潟�鴻����í�壔�帥�勐����違� BerkeleyDB��勛�医��紊���違�������潟����若�帥����若�鴻��絎�臂í����障����� ��潟�潟�鴻����í�壔�帥����若�喝�冴��������������篁ュ����˨�ŝ�若����潟�������� ��医��紊���違�������鴻�с�������遺戎��������������障�����筝���鴻����違����� ��違�������医��紊���違�����������������篁ュ����勉�潟�潟�鴻����í�壔�帥� 荀�羆���勉�������������鴻����ŝ����障�����
BerkeleyDB::Lite��勖�㋘����若�吾�с�潟�с�壠����⓾�勛�医��紊���違�ŝ����吾�с�壔���� 鐚���拷��筝㏍����������若�帥�鴻����≪�������☎�������������障����� �����í�潟�吟�壔�激�с�喝櫝�純�ŝ�鴻����㋘�若�吾�夌憜�◐輝�����������⓾����障��������
��������í�˨����с�壔��BerkeleyDB::Lite���Storable��≪�吾�ャ�若�˨�� ��������������若�帥����若�鴻����ŝ�������若�激�c�˨�ŝ����吾�с�壔���������� 荐㊧����������⓾����障�����
箴�1��с�壔����������勌検��鴻�勛�劫彰��������潟��������膣���ŝ�≪����ŝ�宴�若�激�с�潟�� 腓冴����⓾����障�������潟�潟�鴻����í�壔�帥�夌�医��紊���違�������潟����若�帥����若�鴻�� 茘���ャ�������������勖��絨���勐����違�˨����c�☗�若�喝�冴�������⓾����障�����
�����������域����勉�潟�若����с�≪����ŝ�宴�若�激�с�潟����泣����若���������������� persistent��ŝ�ŝ����吾�с�壔�����菴遵����������勉����������с�����
Berkeley��с����c�������壔�頳������������合����勌����ゃ�����茲���㏍�若� ��泣����若����с����������勛�劫彰��壔����若�激�c�ŝ�潟�違�������������ŝ����˨�� 荀�膣������≪�壔�祉�鴻�с����⓾��菴遵���櫝�純�с�������ゃ�с������������� persistent��ʒ����������������������������������у櫝�純�˨����障�����
箴�2��с�壔�㋘�潟�若����≪�壔�祉�鴻�勤�ɱ����激�ŝ�≪�í�ゃ�冴����≦�鴻�˨����� scalars��潟�潟�鴻����í�壔�帥����������⓾����障�����筝���鴻�с����í�������c� 篆�絖������������̹�≪�����������new��潟�潟�鴻����í�壔�帥�� �����������������翫�������鴻�˨�í�若�壔�鴻�˨�í�若�勉�ŝ����<�㋘�潟�鴻�������☀�������с�����������
&duplicatekeys��壔�激�с�若����˨�������������⓾�勐����違�勉����≪�� 菴������泣����˨�若����潟�с����������������勐����違��BerkeleyDB��≪�吾�ャ�若�˨� 筝㏍�у��臂í�������⓾����障�����
recordset��<�純�������壔����若�帥����若�鴻�����篆�絖������������ŝ�鴻����� 菴������障����������勉�<�純��������BerkeleyDB::Lite::Btree�������� BerkeleyDB::Lite::Hash筝<�壔�í�鴻�ф����鴻����ŝ�c�⓾����障�����
delete��<�純�������壔�ŝ�鴻��������荀�膣���������ゃ�������������˩戎��������障����� BerkeleyDB::Lite���tie��ゃ�潟�帥�若����с�若�鴻��篁�絮������☖札��ャ�� delete��∽����奝��絽娯��絖������������ŝ����吾�с�壔����������ゃ������������� ��������������������堺�ャ�障�����delete��<�純�������壔����若�帥����若�剛���� ���茲���㏍�若��篌眼�������с�ɾ����������帥�������������˩戎��������������鴻����с�����
BerkeleyDB��壠����ゆ��篏���勛�倶�����菴������障����� �����勐就綣���с�壩❶��勉�ゃ����c�ŝ����������������������с�ŝ�鴻�����篏���������ゃ�������������� ��с����障��:
while ( ! delete $types->{primate} ) {}
���茲���㏍�若�勤┃絎�������������BerkeleyDB�����若�帥����若�鴻�с� ���茲�������key/value�����≪��荐怨俉��������障�������祉�������ïぇ�������� �����若�帥�祉�������с�壔��key/value�����≪�奝��茲������⓾�壔�ŝ����障�������� �����勐�馹���壠�������˨�虁В羆冴�������⓾����障�����������菴���с�壔����勌�����膈��������� ���緇���������ŝ�鴻�������������激�ユ�������˨�ゃ�潟����若�������障��:
%unique = map { $_ => 1 } $types->recordset('primate') ;
keys %unique ;
�����������ŝ��������荀�膣���������ゃ��������������羈���������鴻����с����� ���茲���㏍�若�������ゃ�������������˨�壔�祉�弱幻��˩��荐���˩室�����c����ゃ����c�ŝ����� ���������delete��<�純��������絎�茵���������障��:
while ( ! $types->delete( primate => 'samson' ) ) {}
��純�若�鴻�˨��������������筝���ゃ�勐�馹����delete��<�純����������ŝ����吾�с�壔�������˨�� �����若�帥����若�剛����х�������������̥�榊�������障����������勐�翫����с�壔�� 2��ょ�勉�勐����違�壚��絖������������ゃ��罩c�������������������ŝ����ŝ����吾�с�壔����� �����с����⓾�������������ャ����障��������罨<�勉�潟�若����с�壔����勰�c��������腓冴����障��:
my $cats = new BerkeleyDB::Lite::Btree(
home => 'zoo',
filename => 'cats',
&duplicatekeys,
) ;
my $Felix = new BigCat dinner => 'antelope' ;
$cats->{lion} = $Felix ;
$Felix->{dinner} = 'gazelle' ;
$cats->delete( lion => $Felix ) ; ## fails
�����勐�馹���壔����若�激�c�ŝ�潟�井��篏���˨�����腟������ ��贋�違��絨���違����������ŝ����井��絖������������☀В��������������医�ゃ����違�ŝ���� 荐������翫����с��莎激����障����������������c�⓾����ŝ����吾�с�壔����勐�ゃ� ��������勖�������勛�������������☗����眼����������������������ŝ����������������ŝ�� �櫝�醇�с��絖������с�������勉�с��:
$weight = '300 lbs.' ;
$weight =~ s/\D//g ;
my $Felix = new BigCat( weight => $weight ) ; ## member as string
$cats->{lion} = $Felix ;
$cats->delete( lion => $Felix ) ## operation fails
if $Felix->{weight} > 200 ; ## member as integer
箴�3��с�奝����肴����勐�í�������ŝ�������ŝ����帥�勉�ŝ�㋘�若�激�с����˨����若�帥����若�鴻� 菴遵����勛�劫彰���2,3膣剛�������障����������������勐就綣����Btree�����若�帥����若�鴻� ��遵����˨�≪�������潟����若�吾����������������障��������BerkeleyDB::Lite::Hash��ŝ����吾�с�壔�� ��с�壩����鴻�с�壔�������障��������
BerkeleyDB::Lite::Btree���nextrecord��<�純������� ��違�������⓾����若�壔�ŝ�㏍�若��菴������障�����nextrecord��� ��������������若�喝�冴����������хɤ�����倶����������帥����������������違�����腥榊�純�㋘�潟�若�� ���篏���������������違����ŝ�㏍�若��菴������障����������勉�<�純�������с� ���腟���㋘�潟�若�����1���菴遵����������������с�㏍�若��篏���������障����� ���蕭���ゃ�勉�㏍�若����˨�����腟���㋘�潟�若�����腆坂����������������˨�壔�� &incrementkeys綣���違��BerkeleyDB::Lite::Btree��潟�潟�鴻����í�壔�帥� 絲障����☎�������☖�����������&incrementkeys��∽�違�壩�医�ゃ��Btree��純�若����� 綣桁�吟�����CODE絎���違��菴������激�с�若����˨�������с�����
&incrementkeys綣���違����������⓾����若�帥����若�鴻��罕�膀���������������˨����� ���紊с�ʋ��絎潟����������障����������勉�������˨����c�⓾�������若�帥����若�鴻��db_dump�������� db_verify��勉��������SleepyCat��⓾�若����c�ŝ����c��篋������с��紊宴����������˨�ŝ����勉�с����� �����勌撮������nextrecord���BerkeleyDB::Lite::Btree::Lexical��泣����壔�í�鴻����� ��<�純�������������☗�若�喝�冴������������櫝�純�с����������勉�泣����壔�í�鴻�壠��罕��� 罘���純����障�������������勖�医�ゃ�勉�㏍�若��0�����������c�潟�違�����������絖������������ ��純�若����������������勉�с����������������ŝ��������Lexical��泣����壔�í�鴻�˨�������� ��句����˨�������������若�帥����若�鴻�˨����������㏍�若��10,000,000,000篁ヤ����勖�医�ゃ� ��ŝ�������違�ŝ����障��������
BerkeleyDB::Lite::Btree��壔�í�鴻�吾��lexical��潟�潟�鴻����í�壔�帥� BerkeleyDB::Lite::Btree::Lexical��泣����壔�í�鴻��new��潟�潟�鴻����í�壔� �����������с�����
BerkeleyDB::Lite��с��Berkeley��˨��������������筝���ゃ�勤�壔����劫彰��� 絎�茖������⓾����障��: ���絖������勰����������������潟�違�� ��<�純�����matchingkeys���matchingvalues����������� searchset��с�壠����☗�演����勰��������絖������у����障����㏍�若� ��㋘�潟�若����勰��������菴������障�����
箴������違����������㏍�若��罨<�勉����í�若����������у��臂í�����������: "2002 Jul 14 15:30"���篁ヤ����勉����若�帥��菴��������������櫝�純�с��:
## All records for the year
@annually = $bytime->matchingkeys('2002 ') ;
## All records for the month
@monthly = $bytime->matchingvalues('2002 Jul ') ;
## All records for the day
%daily = $bytime->searchset('2002 Jul 14 ') ;
matchingkeys��с�壔����������������㋘�潟�若����勉�㏍�若�勰��������菴������障����� matchingvalues��с�壔����������������㋘�潟�若����勐�ゃ�勰��������菴������障����� ��鎀���ʋ祁箙宴��������matchingvalues�����������<�純�������˨��������腟����- 菴������������㋘�潟�若����壔�������������⓾�������㏍�若��篆���������⓾����障�������� 絎������̬����c�〠�ャ����勉�壔�㋘�潟�若����勐�ゃ�с�����
searchset��с�夌ず�����������������ʒ�f�渇��������紊�����櫝�純� key/value�����≪�������⓾����������������㋘�潟�若�����菴������障����������������ŝ�������� ��f�渇��������篏帥����������壔����若�帥����若�鴻�����茲���㏍�若����˨����с�������翫�� ��≧����潟����ŝ����障�����篁ヤ����勉�潟�若����с�壔����勖����勖「膣≪�˨�������� 腟����������緇���������������勐�号�������ŝ����壔�������壔�с��:
foreach ( $bytime->matchingkeys( '2002 Jul 14', &uniquekeys ) ) {
$daily{ $_ } = [ $bytime->recordset( $_ ) ] ;
}
&uniqukeys��с�壔����若�帥����若�鴻�������勰��茲�腟������������c�˨�帥�若������������� matchingkeys��<�純��������絲障�����綣���違�������☎⓬筝���˩戎������������絎���違�� 菴������障����������勐����違��&searchset��<�純��������羝<��������������key/value����� ��˨����������ゃ�壔�㋘�潟�若����˨�⓾�潟�����腓冴����障�����&uniquekeys��с� matchingvalues��<�純����������宴�̥�������������������с����障��������
&duplicatekeys &incrementkeys &uniquepairs &uniquekeys
Jim Schueler, <jschueler@tqis.com>
筝�羌☎��脾� <snj@users.sourceforge.jp>