PHP bug tracker: хранение вложенных файлов - PullRequest
0 голосов
/ 06 мая 2011

Учитывая проект отслеживания ошибок PHP с базой данных SQL (MySQL, PostgreSQL, Oracle ...), которая должна иметь возможность хранить вложенные файлы для каждой ошибки.

Как вы будете в основном хранить информацию (файлинформация и сам файл) на БД и диске?

например

  • БД: таблица ошибка будет иметь связанную таблицу bug_files с полем bug_id и полем filename , содержащим путь к файлу на диске
  • Диск: эффективное хранение файлов (избегая слишком большого количества файлов в одномкаталог), например, автоматически создавать каталоги 1-1000 , 1001-2000 и т. д., чтобы мы могли иметь / 1001-2000 / 1234 / bugfile.jpg илислучайные подкаталоги, такие как / z / e / x / q / 1000_bugfile.jpg ?

... или есть более эффективные способы?

Спасибо.

РЕДАКТИРОВАТЬ

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

Файлы будут перечислены / загружены / загружены через веб-приложение отслеживания ошибок (=> HTTP загрузка / загрузка).

Никтокроме как разработчики / sysadmins смогут просматривать автоматически сгенерированную структуру каталогов (однако было бы удобнее иметь «чистую» структуру).

Ответы [ 2 ]

1 голос
/ 06 мая 2011

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

Создание каталогов, основанных на осмысленной комбинации даты, имен проектов и т. Д., Поможет снизить потерю производительности при наличии большого количества файлов в одном каталоге.

0 голосов
/ 06 мая 2011

Я бы настоятельно рекомендовал использовать узнаваемую структуру каталогов, возможно, даже основанную на дате или что-то, что совпадает с (частями) вашего имени ошибки. F.E. «20110506-bugfile» будет в / 2011/05/06 / Возможно, это немного не соответствует, и достаточно только 2011/05 /.

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

Немного другой вариант - добавить файл в вашу базу данных в таблице ошибок (http://www.php -mysql-tutorial.com / wikis / mysql-tutorials / uploading-files-to-mysql-database.aspx), затем вам не нужно создавать структуру каталогов, НО, это не позволит вам найти файлы с использованием FTP-канала.

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