Как бы вы создали файловую систему базы данных (DBFS)? - PullRequest
10 голосов
/ 29 мая 2009

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

Ответы [ 6 ]

5 голосов
/ 23 февраля 2010

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

1 голос
/ 15 июня 2009

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

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

1 голос
/ 31 мая 2009

Самый простой способ - создать его, используя fuse , с базой данных для базы данных.

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

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

0 голосов
/ 29 июля 2013

Если вы используете Python, взгляните на SpiderOak Transactional Storage System :

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

0 голосов
/ 04 марта 2011

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

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

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

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

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

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

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

0 голосов
/ 29 мая 2009

Может быть это является хорошей отправной точкой для того, чтобы понять, как это может работать.

Это базовый обзор архитектуры Firebird .

Firebird - это СУБД с открытым исходным кодом, так что вы можете по-настоящему глубоко заглянуть, если вам интересно.

...