XVII(dbmåž‹ã®)データベース・アブストラクション レイヤー関数
ã“れらã®é–¢æ•°ã¯ã€Berkeley DB 型データベースã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ç”¨ã®åŸºæœ¬é–¢æ•°ã‚’
æ§‹æˆã—ã¾ã™ã€‚
ã“れらã®é–¢æ•°ã¯ã€è¤‡æ•°ã®ãƒ•ァイルベースã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ç”¨ã®ã‚¢ãƒ–ストラクション
・レイヤーã§ã™ã€‚ãã®æ©Ÿèƒ½ã¯ã€Sleepycat
Software's DB2サãƒãƒ¼ãƒˆã®ã‚ˆã†ãªè¿‘代的ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®æ©Ÿèƒ½ã®
サブセットã«åˆ¶é™ã•れã¦ã„ã¾ã™ã€‚(IBMã®ã‚½ãƒ•トウエアDB2ã¨æ··åŒã—ãªã„ã§
下ã•ã„。ã“ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¯ã€ODBC 関数
を通ã˜ã¦ã‚µãƒãƒ¼ãƒˆã•れã¾ã™ã€‚)
儿©Ÿèƒ½ã®å‹•作ã¯ã€ä½¿ç”¨ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®å®Ÿè£…ã«ä¾å˜ã—ã¾ã™ã€‚
dba_optimize() ãŠã‚ˆã³ dba_sync() ã®
よã†ãªé–¢æ•°ã¯ä½¿ç”¨ã™ã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ä¾å˜ã—ãŸã“ã¨ã‚’行ã„ã€ä»–ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹
ç”¨ã®æ©Ÿèƒ½ã¯å®Ÿè¡Œã—ã¾ã›ã‚“。
dba_open()ã¾ãŸã¯dba_popen()
関数を実行ã™ã‚‹éš›ã€ä»¥ä¸‹ã®ãƒãƒ³ãƒ‰ãƒ©ã®ï¼‘ã¤ã‚’引数ã¨ã—ã¦æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚
りã¾ã™ã€‚実際ã«åˆ©ç”¨å¯èƒ½èŒ„ãƒãƒ³ãƒ‰ãƒ©ã®ãƒªã‚¹ãƒˆã¯ã€
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 -- ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’åŒæœŸã™ã‚‹