2010.12.30
yna

Perlの簡易データベース

そろそろ各ネタが尽きてきたので、昔作ったライブラリを紹介します。
PerlやRubyには、SDBMとかGDBMという一種のファイルアクセスルーチンがあります。これは、ハッシュをそのままファイルに保存するような機能で、キーに対してデータを保存できます。
特にPerlではこの簡易データベースは、標準機能なので、perlが使えると、99%使えるというメリットがあります。UNIX系ならOSの標準機能ですし、Windows系ならエミュレータでサポートしています。
しかし、機能的には、ハッシュをディスクに保存するだけですので、プログラムを書くにはちょっと不便です。

そこで、ちょっとこの機能にフィールド管理機能を加えて、すこし使いやすくしたのが今回紹介するdbmlib.plです。(dbmlib.zipzipで圧縮しています)


#===============================================
データベースのオープン
sub sdbm_open($fname, $def)
$fname ファイル名(拡張子はなし)
$def 項目定義配列リファレンス
[return] コントロールオブジェクト

項目定義は項目名の配列へのリファレンスです。配列の最初の項目名はキー項目です。

my @aryFields = qw( id Name Postal Address Telno);
my $dbctl = sdbm_open(“sample”, \@aryFields);

#===============================================
データベースのクローズ
sub sdbm_close($dbctl)
$dbctl コントロールオブジェクト
[return] なし

sdbm_close($dbctl);

#===============================================
レコードをロード
sdbm_load($dbctl, $rid)
$dbctl コントロールオブジェクト
$rid レコードのキー
[return] レコードへのハッシュ

$rec = sdbm_load($dbctl, $recno);

print $rec->{Name}

#===============================================
レコード保存
sub sdbm_save($dbctl, $rec)
$dbctl コントロールオブジェクト
$rec レコードハッシュへの参照
[return] レコードのキー項目
キー項目は必須です。また、この項目は変更できません。
キー項目を変更するには、古いキー項目を削除して、新規に保存するしかありません。このあたりは使いやすいとはいえないです。

$my $rec = {
id => 100,
Name => “ビット 太郎”,
Postal => “060-0061”,
Address => “札幌市中央区南1条西6丁目”,
};
sdbm_save($dbctl, $rec)

#===============================================
新規レコード作成
sub sdbm_addnew($dbctl)
$dbctl コントロールオブジェクト
[return] レコードハッシュへの参照
実際には、空のハッシュを作成するだけで、sdbm_saveで保存しないと、保存されません。

$rec = sdbm_addnew($dbctl);

#===============================================
レコード削除
sdbm_delete($dbctl, $rid)
$dbctl コントロールオブジェクト
$rid レコード番号
[return] なし

検索実行
sub sdbm_query_arrayref($dbctl, $fnc)
$dbctl コントロールオブジェクト
$fnc レコードチェック関数への参照。

実際のコードも、180行前後と小さいものです。
データベースやCPANなどの環境の整わないレンタルサーバーなどで、簡単なCGIを実装するときなどに使えます。
なお、厳密な用途や大規模な開発に使えるレベルではありません。あくまでも、趣味やツールの作成などのレベルでの利用までです。

yna

一覧に戻る