Глава 17: Работа с пользовательскими базами данных.
17.1 DBM-базы данных и DBM-хеши
В большинстве UNIX-систем есть стандартная библиотека, которая называется DBM. эта библиотека представляет собой простую систему управления базами данных, которая позволяет программам записывать набор пар ключ-значение в пару файлов. В этих файлах хранятся значения базы данных в промежутках между вызовами программ, использующих ее, и эти программы могут вводить в базы данных новые значения, обновлять существующие и удалять старые.
Библиотека DBM довольно проста, но, учитывая ее доступность, некоторые системные программы активно используют эту библиотеку для своих довольно скромных нужд. Например, sendmail (а также ее варианты и производные) хранит базу данных aliases (соответствие адресов электронной почты и имен получателей) как DBM-базу данных. Самое популярнее ПО телеконференций Usenet использует DBM-базу данных для хранения инфор-мации о текущих и недавно просмотренных статьях. Главные файлы базы данных Sun NTS (урожденной YP) также хранятся в формате DBM.
Perl обеспечивает доступ к такому же механизму DBM довольно умным способом: посредством процесса, похожего на открытие файла, с DBM-базой данных можно связать хеш. Этот хеш (называемый DBM-массивом) используется для доступа к DBM-базе данных и внесення в нее изменений.
Создание нового элемента в этом массиве влечет за собой немедленное изменение в базе данных. Удаление элемента приводит к удалению значения из DBM-базы данных и т.д.*
Размер, количество и вид ключей и значений в DBM-базе данных ограничены. В зависимости от того, какой версией библиотеки DBM вы пользуетесь, эти же ограничения могут иметь место и для DBM-массива. Подробности см. на man-странице AnyDBM_File. В общем, если вы сумеете сделать так, чтобы и ключи, и значения упаковывались не больше чем в 1000 символов с произвольными двоичными значениями, то все будет нормально.
* Это, по сути дела, просто особый случай использования общего механизма die. Если вам понадобится что-нибудь более гибкое, обратитесь к man-страницам AnyDBM_File(3), DB_File(3) и perltie(l).
Назад | Вперед
Содержание (общее) | Содержание раздела
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|