У меня есть сайт, который позволяет людям загружать файлы в свою учетную запись, и они отображаются в списке. Файлы для всех пользователей хранятся на разных серверах и перемещаются в зависимости от того, насколько они популярны (это сайт хостинга файлов).
Я хочу добавить возможность пользователям группировать файлы в папки.Я мог бы пойти обычным путем и создать физические папки на жестком диске для каждого пользователя на сервере и пересечь их, как и ожидалось. Обратной стороной этого является то, что файлы пользователя будут привязаны к одному серверу. Если на этом сервере начнется нехватка места (или многие файлы станут популярными одновременно), будет очень сложно смягчить его.
Я думал о сохранении природы файлов без сохранения состояния, позволяя хранить их на любом из файловых серверов, и просто сохранять идентификатор папки (в дополнение к идентификатору пользователя, который владеет файлом) с каждым файлом в база данных. Поэтому, когда пользователь решает переместить файл, он никуда не перемещается физически, вы просто меняете идентификатор папки в базе данных.
Это хорошая идея? Использую php и mysql.
Да, это так.
Я не вижу недостатков, кроме, возможно, большего количества запросов к базе данных, но при правильной индексации идентификатора родительской папки это, вероятно, будет быстрее, чем доступ к файловой системе напрямую.
Забудьте о папках и позвольте пользователям пометить свои файлы, по несколько тегов на файл. Затем позвольте им просмотреть файлов с тегами X . Реализация этого не сильно отличается от виртуальных папок, но гораздо более гибкая для пользователей.