2011-01-24 1 views
2

Я ищу, чтобы создать базовый компонент управления файлами для системы, над которой я работаю (php, javascript, sencha). Я пытаюсь убедить себя так или иначе в том, нужно ли мне хранить дополнительную информацию в базе данных о файлах, управляемых через систему. С одной стороны, я не хочу усложнять простой дизайн, пытаясь обеспечить отражение информации, хранящейся в базе данных, в файловой системе. Я предполагаю, что наступает кошмар, если по какой-то причине они перестают синхронизироваться. То есть путь не обновляется правильно. Просто кажется, что проще полагаться на то, что в файловой системе. Мне не нужны никакие механизмы управления, такие как ACL.Должен ли я хранить информацию о файлах в базе данных для файлового менеджера на основе php?

По большей части структуры каталогов скрыты от пользователя, так как им действительно все равно, где в файловой системе они хранятся. Kinda, как вложения электронной почты. Вложения связаны с другими данными в базе данных. Моя первоначальная идея заключалась в создании отношений внутри файловой системы с использованием каталогов. Например:

Коренной
... Project_id_1
...... Theme_id_1
......... Topic_id_1
......... Topic_id_2
. ........ Topic_id_3
...... Theme_id_2
...... Theme_id_3
... Project_id_2
... Project_id_3

Идентификатор будет запись IDэлемента в базе данных тоже связано. Я думаю, что это будет работать нормально, за исключением случаев, когда мне нужно отобразить это как древовидное представление. Мне нужно будет извлечь отношения для каждого каталога, чтобы я мог отображать значимые имена. Возможно, это прекрасный компромис для простоты, полученной в других местах. То есть не переименовывать каталоги при каждом изменении имени темы.

Если бы я решил хранить дополнительную информацию в БД о каждом файле, что бы я выиграл, кроме полезной (но не необходимой) информации, например, кто загрузил ее, дату и т. Д. И т. Д. Конечно, любые другие причины Я должен рассмотреть другие проекты, которые будут оценены. Большая часть материалов OTS либо предлагает слишком много функций, мне не нужно, либо слишком много работы, чтобы модифицировать систему.

+0

Этот вопрос может иметь смысл спросить на новом сайте SE dba - http://dba.stackexchange.com/. Чтобы быть немного более полезным, чем просто это (и позволяя, чтобы я не проделал столько проектов, подобных этому), похоже, что у вас есть неплохая идея о масштабах вашего проекта и вам не нужно больше, чем у вас уже есть. Мне кажется, что сохранение такой информации в БД является избыточным - не будет ли у ОС таких вещей, как «дата создания», «владелец файла» (если только PHP не работает как один пользователь, если к нему обращаются многие разные учетные записи, вы можете рассмотреть chroot тюрьму) и т. д., уже прикрепленные как метаданные файлов? – aendrew

+0

без базы данных ваш файловый менеджер не будет более полезен, чем клиент ftp. db позволит вам делать такие вещи, как быстрый поиск по более конкретным критериям. например, если вы хотите просмотреть все файлы, загруженные пользователем x между датами x и x, как бы вы это сделали без db? но тогда вы, возможно, никогда не захотите таких функций. – dqhendricks

ответ

1

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

Я видел множество систем, где кто-то много работал, не утруждая себя вопросами, будет ли кто-нибудь заботиться?

Я не знаю, чего хотят или чего хотят ваши пользователи, поэтому без дополнительной информации я не могу ответить на этот вопрос.

Update

В ответ на ваш комментарий:

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

+0

Все очень хорошие моменты. Независимо от требований сегодня, они всегда имеют тенденцию развиваться. Поэтому часть этого для меня заключается в том, что я не затрудняю себя позже, взяв ярлык. Было бы полезно знать, как другие решали ту же проблему или примеры того, как использование БД в этом случае расширило их функциональность. Насколько я вижу, многие из них связаны с контролем доступа к файлам. В моей системе это уже позаботится на другом уровне. – bender

+0

См. Обновление выше. – Jay

0

Я бы сказал:

На сегодня: нет. Не создавайте работу, основанную на возможной будущей необходимости.

На завтра? Да, как только вам на самом деле нужно. Вы упомянули, что у вас уже есть база данных, поэтому не так, как вам приходится откусывать много накладных расходов.

Смежные вопросы