2013年6月18日 星期二

如何使用MLDBM模組

Perl的資料結構之一「雜湊(hash」是用來存取「(鍵值、對應值)」的資料集合。
其中「鍵值」是字串格式,而對應值是「純量(scalar)」,
「參照(reference)」也是純量的一種,通常是指向一個資料結構所在的記憶體位址(address)
透過「參照(reference)」可以建立相當複雜的資料結構,
適當地運用可以達到強大而又靈活的資料處理,有點像是階層式資料模型。

要儲存這種資料結構,至少有兩種選擇,分別是「DBM:Deep」及「MLDBM」。

「DBM:Deep」由純Perl語言所開發,對於少量資料(數百筆」相當好用,
可是當資料量變多時,存取速度會明顯變慢。

「MLDBM」可以介接數種不同DBM存取程式庫,速度相當快,
當資料量是幾萬筆以內時,使用起來方便靈活,
對於輕量的資料庫應用,特別是小型資訊系統,是個不錯的選擇。

簡單使用MLDBM的程式範例如下
use strict;

use BerkeleyDB;
use MLDBM qw(BerkeleyDB::Btree);
use Data::Random qw(:all);

my $filename = 'foo.db';
my %db;
tie %db, 'MLDBM', -Filename => $filename,
                  -Flags    => DB_CREATE
    or die "Cannot open database $filename: $!\n";

# 產生10筆隨機資料,放入%db中,隨著迴圈的執行,資料也會同步寫到硬碟上的檔案中。
for my $seq (1..10) {

    my @random_words = rand_words( size => 5 );  
    $db{$seq} = [@random_words];
   
}