Когда вы будете хранить метаданные в файловой системе, а не в базе данных? - PullRequest
0 голосов
/ 16 июля 2011

Я хочу хранить документы с метаданными в веб-приложении, чтобы человек мог просматривать их в иерархии.

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

Кажется, что гораздо проще и быстрее хранить как документы, так и метаданные в файловой системе.Таким образом, каталог может выглядеть так:

$ ls subdirectory
.json
Subsubdirectory
bar.pdf
bar.json
foo.tex
foo.json

И тогда я мог бы получить метаданные из файлов json (или любого другого формата, который я использую).Я мог бы визуализировать подкаталог / foo.html на основе содержимого подкаталога / foo.json.И я могу отобразить файл subdirectory.html на основе содержимого подкаталога / .json и содержимого других дочерних файлов json.

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

РЕДАКТИРОВАТЬ: я не очень беспокоюсь о поиске;если я построю какой-то поиск, он, вероятно, будет в одном маленьком каталоге.

1 Ответ

0 голосов
/ 16 июля 2011

«Я мог бы искать на основе метаданных на уровне файловой системы» - вы могли бы сделать это, но это означает, что каждый раз, когда вы выполняете поиск, вы должны прочитать все файлы метаданных из FS, а затем вам придется обрабатывать их вручную. Индексация отсутствует, это примерно эквивалент полного сканирования таблицы в базе данных SQL (но это даже медленнее ..).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...