Skip to content

Latest commit

 

History

History
284 lines (211 loc) · 8.75 KB

File metadata and controls

284 lines (211 loc) · 8.75 KB

������

BerkeleyDB::Lite - 膂≧����˨�ŝ�c��BerkeleyDB��吾�勉�ゃ�潟�帥�若����с�若�

网�荀�

use BerkeleyDB::Lite;

## 箴�1

## 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 ;

## 箴�2

## 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

## 箴�3

## 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�����������≪�壔�祉�鴻����������活����違�㋘�潟�若���� ���������菴������冴�勉�<�純�����������箴������障�����

箴�1

BerkeleyDB::Lite��壠�����home��◑�������㏍�若� ��∫�d����������������������宴�若�後����違�勉�������激�ャ�������с����� BerkeleyDB��医��紊���違��茯炊�眼����障����� ��堺�㋜�����BerkeleyDB::Lite��勉�潟�潟�鴻����í�壔�帥�勐����違� BerkeleyDB��勛�医��紊���違�������潟����若�帥����若�鴻��絎�臂í����障����� ��潟�潟�鴻����í�壔�帥����若�喝�冴��������������篁ュ����˨�ŝ�若����潟�������� ��医��紊���違�������鴻�с�������遺戎��������������障�����筝���鴻����違����� ��違�������医��紊���違�����������������篁ュ����勉�潟�潟�鴻����í�壔�帥� 荀�羆���勉�������������鴻����ŝ����障�����

BerkeleyDB::Lite��勖�㋘����若�吾�с�潟�с�壠����⓾�勛�医��紊���違�ŝ����吾�с�壔���� 鐚���拷��筝㏍����������若�帥�鴻����≪�������☎�������������障����� �����í�潟�吟�壔�激�с�喝櫝�純�ŝ�鴻����㋘�若�吾�夌憜�◐輝�����������⓾����障��������

��������í�˨����с�壔��BerkeleyDB::Lite���Storable��≪�吾�ャ�若�˨�� ��������������若�帥����若�鴻����ŝ�������若�激�c�˨�ŝ����吾�с�壔���������� 荐㊧����������⓾����障�����

箴�1��с�壔����������勌検��鴻�勛�劫彰��������潟��������膣���ŝ�≪����ŝ�宴�若�激�с�潟�� 腓冴����⓾����障�������潟�潟�鴻����í�壔�帥�夌�医��紊���違�������潟����若�帥����若�鴻�� 茘���ャ�������������勖��絨���勐����違�˨����c�☗�若�喝�冴�������⓾����障�����

�����������域����勉�潟�若����с�≪����ŝ�宴�若�激�с�潟����泣����若���������������� persistent��ŝ�ŝ����吾�с�壔�����菴遵����������勉����������с�����

箴�2

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

箴�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>

�����������

Storable BerkeleyDB http://www.sleepycat.com