DBM (DBM)

Перейти к навигации Перейти к поиску

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

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

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

#Подключение DBM
require 'dbm'
#Создание нового объекта. Имя файла -- data
d=DBM.new("data")
#Присваивание ключу abc значения 123
d["abc"]="123"
#Закрытие dbm-файла
d.close
#Попытка получения доступа к закрытому dbm-файлу вызовет RuntimeError
puts 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 возвращает строковое представление идентификатора объекта.