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);
?> |
|