Какой дизайн следует использовать для хранения информации о файле - PullRequest
0 голосов
/ 31 июля 2011

Я хочу создать представление каталога flex / actionscript для моих файлов с помощью php / mysql. У меня есть несколько идей, которыми я хочу поделиться:

1) Я подумываю о создании таблицы (в mysql) «файлы» и другой таблицы «папки», когда пользователь ложится на меня, мне потребуются все данные из «файлов» и «папок», где имя пользователя = «что-то». Но проблема в том, что я создам много записей внутри таблиц. Например, если у меня будет 100 пользователей, и каждый пользователь сможет создать 100 записей (файлов или папок), это означает, что я получу 10000 записей внутри таблицы.

2) Моя вторая идея, и я думаю, что более безопасный способ сделать это - создать таблицу «users», в которой будут заданы id, имя пользователя, пароль, ..., файлы, папки. В файлах (запись в текстовом формате) будет указана информация о файлах, и они будут делиться на символ «*», например:

id*file name*size(in kbytes)*path*status 
example:
15*test.exe*150*/root/*private
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private
...

Эта информация будет выдана, когда сгибается один раз, когда пользователь входит в нее, и actioncript поймает ее. Но проблема в том, что, когда я отредактирую 1 информацию о файле (например, 1 имя файла "test.exe" в "editedtest.exe"), я снова загружу в mysql все данные:

15*editedtest.exe*150*/root/*private 
16*test2.exe*200*/root/folder1/*public
17*test3.exe*5600*/root/folder1/subfolder/*private

Теперь здесь только 3 информации о файле, но их может быть больше 1000.

так что вы думаете, как я могу решить свою задачу? Или это лучший способ, а я просто не знаю об этом? Пожалуйста, напишите ваши предложения и мысли.

Ответы [ 2 ]

1 голос
/ 31 июля 2011

Я буду использовать термин «файловая система» для представления структуры файлов / папок для каждого пользователя.

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

Также я T предоставляет вам много преимуществ:

  • отложенная загрузка: в вашем дереве каталогов вы можете выбрать только корневые каталоги / файлы для текущего пользователя, а когда пользователь хочет перейти в подпапку, вы можете загрузить содержимое этой подпапки. Если вы храните всю структуру файловой системы в строке, вам нужно загрузить всю структуру, даже если вам нужна только одна строка
  • обновления устройства: с помощью базы данных вы можете обновить файл / папку, не загружая полную структуру файловой системы
  • меньше кода: вам не придется анализировать текстовую строку, чтобы воссоздать путь, вы можете сохранить ее «как есть» в базе данных
  • индексация: если вы храните один файл / папку на строку, вы можете проиндексировать их для ускорения поиска. Если вы сохраните всю структуру файловой системы в строке ее владельца, вы не сможете эффективно выполнять поиск.
0 голосов
/ 31 июля 2011

Как выполнить:

  1. Сохранить в mysql, какой пользователь имеет доступ к какому подкаталогу.

  2. Напишите скрипт PHP, который читает каталог, который был запрошен приложением Flash. Проверьте, принадлежит ли каталог пользователю. Вернуть все файлы этого каталога. Показывать кнопки навигации во Flash так же, как веб-сервер отображает кнопки на страницах списков директорий, таких как: http://www.css -zibaldone.com / Articles / Directory / examples / 3 / 3.html (Google для Пример списка каталогов apache).

  3. Этот подход будет выполнять 1 обход каталога за запрос. Затем можно уточнить эту ситуацию, разрешив обходу возвращать текущий каталог, а также его прямые дочерние файлы каталога. Или вы кэшируете результаты в некоторых файлах на жестком диске.

Я нашел приложение для просмотра файлов для AJAX: http://www.ajaxfilebrowser.com/

...