Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

XVII(dbm型の)データベース・アブストラクション レイヤー関数

これらの関数は、Berkeley DB 型データベースへのアクセス用の基本関数を 構成します。

これらの関数は、複数のファイルベースのデータベース用のアブストラクション ・レイヤーです。その機能は、Sleepycat Software's DB2サポートのような近代的なデータベースの機能の サブセットに制限されています。(IBMのソフトウエアDB2と混同しないで 下さい。このデータベースは、ODBC 関数 を通じてサポートされます。)

各機能の動作は、使用するデータベースの実装に依存します。 dba_optimize() および dba_sync() の ような関数は使用するデータベースに依存したことを行い、他のデータベース 用の機能は実行しません。

dba_open()またはdba_popen() 関数を実行する際、以下のハンドラの1つを引数として指定する必要があ ります。実際に利用可能茄ハンドラのリストは、 phpinfo()を実行した際に表示されます。(PHPの作成 時に以下のハンドラのどれかのサポートを追加するには、PHPのconfigure にスイッチ--with-XXXX の指定を追加して下さい。

表 1DBAハンドラのリスト

ハンドラ注意
dbm dbm は最も古い(元祖の)Berkeley DB 型データベースです。可能なら ば使用しない方が良いでしょう。DB2およびgdbmに組み込まれている互 換性を保つための関数は、サポートされません。これは、実装されて いるのがソースレベルの互換性のみであり、元のdbmフォーマットを処 理することができないためです。(--with-dbm)
ndbm ndbm は、より新型であり、dbmよりも柔軟です。 dbm固有の制約の多くをまだ有しています。(そのため、古い実装です。) (--with-ndbm)
gdbm gdbmは、GNUデータベースマネージャ です。(--with-gdbm)
db2 DB2 は、Sleepycat Software's DB2 です。これは、「スタンドアローンおよびクライアント/サーバー アプリケーションの両方で高性能な組込みデータベースサポートを提供する プログラム用ツールキット」として記述されています。 (--with-db2)
db3 DB3 は、Sleepycat Softwareの DB3です。(--with-db3)
cdb cdbは、固定データベースの作成・読込み用の高速で高信頼性の軽量型 パッケージです。これは、qmailの作者によるものであり、ここにあります。固定であるため、読込 み操作のみがサポートされます。(--with-cdb)

例 1DBAの例

<?php

$id = dba_open ("/tmp/test.db", "n", "db2");

if (!$id) {
    echo "dba_open failed\n";
    exit;
}

dba_replace ("key", "This is an example!", $id);

if (dba_exists ("key", $id)) {
    echo dba_fetch ("key", $id);
    dba_delete ("key", $id);
}

dba_close ($id);
?>

DBAは、バイナリセーフでありいかなる制限も受けません。 DBA は、使用するデータベースの実装による全ての制約を継承します。

全てのファイルベースのデータベースは、完全に使用可能なものについて 新規に作成されたデータベースのファイルモードを設定する手段を、 提供する必要があります。 ファイルモードは、通常 dba_open() または dba_popen() に4番目の引数として渡されます。

dba_firstkey() および dba_nextkey() 関数を用いて連続的に全てのエントリにアクセスすることができます。 アクセスする際にデータベースを変更できない可能性があります。

例 2データベースへの連続アクセス

<?php

# ...データベースをオープンする...

$key = dba_firstkey ($id);
      
while ($key != false) {
    if (...) { # 他の操作を後で行うためにキーを記憶する
        $handle_later[] = $key;
    }
    $key = dba_nextkey ($id);
}

for ($i = 0; $i < count($handle_later); $i++)
    dba_delete ($handle_later[$i], $id);

?>

目次
dba_close -- データベースを閉じる
dba_delete -- キーが指すエントリを削除する
dba_exists -- キーが存在するかどうかを確認する
dba_fetch -- キーが指すデータを取得する
dba_firstkey -- 最初のキーを取得する
dba_insert -- エントリを挿入する
dba_nextkey -- 次のキーを取得する
dba_open -- データベースをオープンする
dba_optimize -- データベースを最適化する
dba_popen -- データベースを持続的にオープンする
dba_replace -- エントリを置換または挿入する
dba_sync -- データベースを同期する