Как стать автором
Обновить

Файловая база данных

Время на прочтение2 мин
Количество просмотров14K
«… Один из краеугольных камней архитектуры Inferno — юниксовая идея с файлами-устройствами доведена до предела: в Inferno файлами представлено абсолютно всё… »powerman. А как, в свете вышесказанного, может выглядеть база данных?


Знакомясь с возможностью многоязычного пользовательского интерфейса в программе wm/calendar я случайно столкнулся с возможной реализацией…

В ОС 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 используется как гостевая ОС).
Теги:
Хабы:
Всего голосов 7: ↑6 и ↓1+5
Комментарии17

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань