|
XVII. Функции абстрактного слоя баз данных
(в dbm-стиле)
Эти функции являются фундаментом для доступа к БД в стиле Berkeley DB.
Имеется общий абстрактный слой для различных БД на основе файлов.
Сама по себе функциональность ограничена обычным поднабором возможностей,
поддерживаемых современными БД, такими как Sleepycat Software's DB2.
(Это не конфликтует с программой DB2 IBM, которая поддерживается с помощью
ODBC-функций.)
Поведение различных аспектов зависит от реализации конкретной БД. Такие
функции как dba_optimize() и
dba_sync() могут выполнять свои действия с одной БД и не выполнять - с другими.
вы должны
загрузить и установить поддерживаемые dba-обработчики.
Таблица 1. Список обработчиков DBAОбработчик |
Примечания |
---|
dbm | Dbm это самый старый (оригинальный) тип БД в стиле Berkeley DB. Вы
должны исключить его использование, если это возможно. Мы не
поддерживаем функции совместимости, встроенные в DB2 и gdbm, поскольку
они совместимы только на уровне исходного кода, но не могут обрабатывать оригинальный dbm-формат. |
ndbm | Ndbm это тип более новый и гибкий, нежели dbm. Но в нём ещё имеются
некоторые ограничения dbm (поэтому он не рекомендуется). | gdbm
| Gdbm это GNU менеджер БД. |
db2 | DB2 это Sleepycat Software'sDB2.
Он описан как "программный набор утилит, предоставляющий встроенную
высокопроизводительную поддержку БД для самостоятельных и
клиент/серверных приложений". | db3 | DB3 это
Sleepycat Software's DB3. |
cdb | Cdb это "быстрый, надёжный, небольшой пакет для создания и чтения
константных БД." Этот - от автора qmail и находится
здесь. Поскольку это константа,
мы поддерживаем только операции чтения. |
При использовании функции
dba_open() или
dba_popen() имя одного из обработчиков должно быть предоставлено в качестве аргумента.
Действующий список обработчиков выводится вызовом функции
phpinfo().
Используя опцию конфигурации --enable-dba=shared, вы можете построить динамически загружаемый модуль, чтобы сделать возможной
поддержку в РНР баз данных dbm-стиля. Вы должны также добавить поддержку для
как минимум одного из следующих обработчиков, специфицировав переключатель
конфигурации --with-XXXX в строке конфигурации вашего PHP.
Таблица 2. Поддерживаемые обработчики DBAОбработчик | Переключатель конфигурации |
---|
dbm | для включения поддержки dbm добавьте
--with-dbm[=DIR]. | ndbm | для включения поддержки ndbm добавьте
--with-ndbm[=DIR]. | gdbm | для включения поддержки gdbm добавьте
--with-gdbm[=DIR]. | db2 | для включения поддержки db2 добавьте
--with-db2[=DIR]. | db3 | для включения поддержки db3 добавьте
--with-db3[=DIR]. | cdb | для включения поддержки cdb добавьте
--with-cdb[=DIR]. |
Это расширение не определяет никаких директив конфигурации.
Функции
dba_open() и dba_popen() возвращают дескриптор специфицированного файла БД, который используется при
вызовах всех других функций dba.
Это расширение не определяет никаких констант.
Пример 1. DBA<?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 является binary safe (безопасным в бинарном режиме) и не имеет каких-либо ограничений.
Однако он наследует все ограничения, установленные реализацией БД.
БД на основе файлов обязаны предоставлять способ установки режима файла
для вновь создаваемой БД, если это вообще возможно. Режим файла/file mode
обычно передаётся как четвёртый аргумент в функцию
dba_open() или
dba_popen(). Вы можете получить доступ ко всем вхождениям БД линеарным способом,
используя функции dba_firstkey() и
dba_nextkey(). Вы не можете изменять БД, проходя по ней.
Пример 2. Проход по БД
<?php
// ...открыть БД...
$key = dba_firstkey ($id);
while ($key != false) {
if (...) { // запомнить key для выполнения в дальнейшем некоторой акции
$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 - удаляет вхождение, специфицированное ключом/key
- dba_exists - проверяет существование ключа
- dba_fetch - извлекает данные, специфицированные ключом
- dba_firstkey - извлекает первый ключ
- dba_insert - вставляет вхождение
- dba_nextkey - извлекает следующий ключ
- dba_open - открывает БД
- dba_optimize - оптимизирует БД
- dba_popen - открывает БД постоянно
- dba_replace - заменяет или вставляет вхождение
- dba_sync - синхронизирует БД
| |