А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/zametki/dbm/
Rambler's Top100
PHP. Заметки. Berkeley DB (DBM)

Все давно привыкли использовать в качестве баз данных движки, вроде MySQL или Postgres. А между тем, существует довольно широкий круг задач, где можно обойтись и без использования SQL-движка.

Я говорю не о текстовых файлах собственного формата, а о DBM-базе.

Berkeley DB — довольно старинный формат, хорошо знакомый UNIX-администраторам. Однако его не так часто используют в web-программировании, как он того заслуживает. Позвольте мне вкратце рассказать вам об этом удивительном формате хранения данных.

DBM -- это база данных, безусловно. Но если сравнить ее свойства с привычными сегодня SQL-движками, то выяснится, что до современного понятия "база данных" Berkeley DB не сильно-то дотягивает.

Прежде всего, Berkeley DB — это только формат хранения данных, то есть ни о каком отдельно работающем движке речь не идет. DBM -- это обычные файлы, к которым просто надо уметь обращаться.

PHP умеет работать с DBM-форматом, если при компиляции языка не забыли включить опцию DB (--with-db).

Какие особенности DBM следует выделить.

Прежде всего, скорость. Скорость получения информации из DBM-базы настолько велика, что устроит web-проект с любой, даже очень высокой нагрузкой.

Но скорость не берется из ниоткуда. Скорость обеспечивается форматом хранения данных, который говорит о том, что любая DBM-таблица состоит из двух полей, первое из которых содержит ключевые уникальные записи. Если вы не сильно хорошо разбираетесь в терминологии баз данных, поясню на примере простой таблицы.

Коля		123-1212
Вася		123-1212
Лена		993-9988

Это номера телефонов. В первом поле — имена, во втором — номера. При этом, в первом поле записи должны быть строго уникальны, т.е. не должны повторяться. Во втором поле может быть записано все что угодно. Вот и весь формат DBM.

"И это все?!", — удивитесь вы. Да, все, а разве этого мало?

Строго говоря, DBM — это обыкновенный массив, только не в оперативной памяти, а на диске. Массив, размеры которого могут быть угрожающе велики. Разве этого мало?

Для примера могу сказать, что сайт http://copi.ru целиком построен на DBM. И формат этот выбран отнюдь не случайно: скорость работы, независимость от дополнительных SQL-движков, минимальная нагрузка на систему — все эти качества определили мой выбор в пользу DBM-формата.

Операторов для работы с Berkeley DB совсем не много. Я даже не поленюсь перечислить их:

dbmopen — открыть базу
dbmclose — закрыть базу

dbmexists — проверить запись на существование
dbmfetch — получить запись
dbmreplace — заменить запись
dbminsert — вставить новую запись
dbmdelete — удалить запись

dbmfirstkey — первая запись
dbmnextkey — следующая запись

Как видите, операторов действительно не много и они вполне очевидны. Настолько все просто, что даже примеры скриптов приводить не стану. А если у вас возникнет вопрос о том, как можно использовать "столь ущербный" формат хранения данных, вспомните о массивах.

13.01.03

[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin