DBM (от англ. datbase manager) — платформенно-независимый механизм для хранения строк в файле как в хеше. И ключ, и ассоциированные с ним данные, должны быть строками. DBM как формат и программное средство для его обработки можно считать простейшим движком баз данных.

Формат и одноимённая утилита для его обслуживания созданы в 1979 году Кеном Томпсоном, с тех пор та или иная реализация такой утилиты входит в состав большинства Unix-подобных систем (ndbm в Unix-системах, gdbm в проекте GNU). Berkeley DB изначально была создана как высокопроизводительная альтернатива для утилиты dbm, сохранявшая тот же интерфейс (впоследствии развилась до встраиваемой СУБД со множеством прочих возможностей).

DBM реализован для ряда языков программирования в качестве библиотек; в Ruby входит в стандартный интерфейс ruby. Для его использования в Ruby нужно создать объект DBM с указанием для него имени файла, а дальше работать с ним как с обычным хешем, по завершении работы файл следует закрыть:

#Подключение DBMrequire 'dbm'#Создание нового объекта. Имя файла -- datad=DBM.new("data")#Присваивание ключу abc значения 123d["abc"]="123"#Закрытие dbm-файлаd.close#Попытка получения доступа к закрытому dbm-файлу вызовет RuntimeErrorputs d["abc"]#Открытие ранее созданного dbm-файлаe=DBM.open("data")#Вывод ранее созданных значенийputs e["abc"]#Преобразование в хеш. f = {"abc"=>"123"}f=e.to_hash#Закрытие dbm-файлаe.close

Интерфейс к DBM реализован в виде одного класса, к которому подмешан модуль Enumerable. Два синонимичных метода класса new и open являются одиночками, то есть в любой момент времени можно иметь только один объект DBM, связанный с данным файлом. Почти все операции с хешем применимы к объекту DBM. Метод to_s возвращает строковое представление идентификатора объекта.

Ссылки