Как бы вы построили файловую систему базы данных (DBFS)?

Файловая система базы данных - это файловая система, которая представляет собой базу данных вместо иерархии. Сначала не слишком сложная идея, но я подумал, что спрошу, думает ли кто-нибудь о том, как они могут сделать что-то подобное? Какие проблемы может пропустить простой план? Мое первое предположение о реализации было бы чем-то вроде файловой системы для платформы Linux (возможно, поверх существующей файловой системы), но я действительно мало знаю о том, как это будет запущено. Его мимолетная мысль, что я сомневаюсь, что я когда-либо прослежу, но я надеюсь хотя бы удовлетворить свое любопытство.

Ответ 1

Самый простой способ - создать его с помощью fuse с базой данных базы данных.

Более сложная задача - иметь его как модуль ядра (VFS).

В Windows вы можете использовать IFS.

Ответ 2

DBFS - действительно хорошая реализация PoC для KDE. Вместо того чтобы внедрять его как файловую систему напрямую, он основан на индексировании в традиционной файловой системе и создании нового пользовательского интерфейса, чтобы сделать результаты доступными для пользователей.

Ответ 3

Я не уверен, что вы имеете в виду: "Файловая система базы данных - это файловая система, которая представляет собой базу данных вместо иерархии".

Возможно, использование "Файловая система в пространстве пользователей" (FUSE), как упоминалось в Osama ALASSIRY, является хорошей идеей. FUSE wiki перечисляет множество существующих проектов о файловых системах с поддержкой баз данных, а также файловых системах, в которых вы можете выполнять поиск по SQL-подобным запросам.

Ответ 4

Возможно, это является хорошей отправной точкой для получения идеи о том, как она может работать.

Это основной обзор Firebird.

Firebird - это RDBMS с открытым исходным кодом, поэтому вы можете иметь реальный глубокий взгляд, если вы заинтересованы.

Ответ 5

Прошло некоторое время с тех пор, как вы спросили об этом. Я удивлен, что никто не предложил очевидного. Посмотрите на мэйнфреймы и мини, особенно iSeries-OS (теперь называемый IBM-i раньше назывался iOS или OS/400).

Как сделать реляционную базу данных как хранилище массовых данных относительно легко. У Oracle и MySQL есть и такие. Уловка должна быть по существу вездесущей для приложений конечного пользователя.

Итак, шаги для преобразования приложения:

1) Все в нормальной иерархической файловой системе

2) Данные в BLOB с легкими метаданными в базе данных. Файл с информацией о каталоге.

3) Большие данные в BLOB с обширными метаданными и сложными структурами в базе данных. Файл с существенными метаданными, связанными с ним, которые могут быть в основном для понимания структуры.

4) Внутренние структуры BLOB, выставленные в объекте ↔ Реляционная карта с обширными метаданными. Хотя может быть экспортируемая форма, приложение, естественно, работает с базой данных, понятие файла по мере потери репозитория.

Ответ 6

Если вы используете Python, посмотрите на SpiderOak Транзакционная система хранения:

API-интерфейс доступной файловой системы на основе python, поддерживающий наиболее типичный файл операции (каталоги, папки, создание файлов, чтение, запись, поиск, переименование и т.д.) с отказоустойчивостью транзакций. Ты можешь открыть файловую систему, выполнить любое количество изменений, а затем совершать или откатывать все изменения атомарно. Это позволяет нам строить SpiderOak использует простые, традиционные файлы в качестве контейнеров. Пользы SQLite внутри системы хранения и, таким образом, сохраняет всю файловой системы в одном файле на диске. Является многопроцессорным и поточно.