ФЭНДОМ


Оригинал: http://habrahabr.ru/blogs/os_inferno/16123/
Автор: kovleon

В ОС Inferno есть интересный способ представления баз данных - в виде файловой системы. Для этого используются команды dbfs, rawdbfs – которые монтируют базу данных как файловую систему. Возьмем, для примера, базу календаря(wm/calendar):

% rawdbfs -e user/inferno/cal /mnt/schedule

cмонтирует в папку /mnt/schedule базу данных из файла user/inferno/cal (если файл cal не существовал – он будет создан, благодаря ключу -e). В точке монтирования будет сгенерирован список файлов, где каждый файл соответствует одной записи в БД. Благодаря этому с записями базы можно работать создавая и удаляя, записывая и считывая соответствующие файлы. Записывая в файл NEW создаются новые записи:

% echo 20071107 1 > /mnt/schedule/new

в пустой безе создали первую запись, чтобы проверить:

% ls /mnt/schedule
/mnt/schedule/0
/mnt/schedule/new

наша запись номер ноль:

% cat /mnt/schedule/0
20071107 1

Основное различие между dbfs и rawdbfs в способе хранения данных. В первом случае, используется обыкновенный текстовый файл, где записи разделяются пустой строкой; во втором, специальный формат, позволяющий не переписывать весь файл БД, при изменении одной только записи, что хорошо для Flash накопителей. В Inferno имеются другие базы данных: существуют модули dbm, attrdb которые работают со своими «форматами»; а также модуль dbsrv, который позволяет обращается к БД основной операционной системы(в случае, если Inferno используется как гостевая ОС).