2010-11-15 12 views
1

У меня есть в моем распоряжении PHP, MySQL и сервер Linux.Каким будет предпочтительный метод создания онлайнового фотоальбома?

Сайт, который я создаю для клиента, должен иметь управляемую фотогалерею.

Я планирую создать его полностью в MySQL, то есть у меня будет таблица, содержащая mediumblob, которая будет содержать двоичные данные изображения. Это позволит мне иметь все на одном месте, не полагаясь на вероятность того, что клиент не случайно удалит изображение из каталога галереи без обновления базы данных и так далее.

Альтернативой, конечно же, было бы иметь изображения, не зависящие от базы данных MySQL, и сохранять только пути изображения.

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

Что вы думаете?

(я отметит правильный ответ, который стирает все сомнения относительно этого дела от моего ума)

ответ

3

Лично я бы не рекомендовал вам изобретать это колесо ... особенно если вы хотите, чтобы ваши клиенты/пользователи обновляли эти данные. Гораздо лучше посмотреть на уже существующее решение. Там их много. Вероятно, наиболее надежным является Gallery

Что касается вашего фактического вопроса, существует множество причин не хранить двоичные файлы в db. (И только некоторые из них, которые я знаю об этом.) Размер - это определенное соображение. Многие хостинг-провайдеры имеют гораздо меньший размер для вашей базы данных, чем ограничение файловой системы. Вы связываете их с провайдерами, которые позволяют создавать огромные файлы баз данных. Кроме того, apache очень хорошо обслуживает статические файлы для клиента. PHP, проходящий через эти двоичные файлы, будет медленнее. Скорость вашего сайта определенно пострадает.

+0

Причина, по которой я не использую уже существующее решение, заключается в том, что я создаю сайт для платного клиента, что делает мой проект коммерческим продуктом. Я сомневаюсь, что есть бесплатные бесплатные решения для галереи, которые позволят мне бесплатно продавать свою галерею. Но спасибо за полезную информацию Apache и хостинга. – Hubro

+0

Возможно, вы должны прочитать этот вопрос: http: // stackoverflow.com/questions/2550260/reselling-open-source-code-licensed-under-gpl-mit – livingtech

+0

После многократного поиска я обнаружил, что Gallery - это GPL, а не MIT, поэтому вы не можете распространять/продавать ее. Тем не менее, я думаю, в зависимости от вашего контракта есть очень сильный аргумент в пользу установки программного обеспечения ОС в качестве услуги, за которую вы можете взимать плату. – livingtech

0

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

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

3

Я бы не хранил изображения в базе данных, так как вы, вероятно, захотите включить кеширование клиентов и/или серверов для этих изображений. Хранение изображений в БД не принесет пользы. Сохраните путь изображения в базе данных, а не в самом файле.

+1

Это не обязательно отрицает кеширование на стороне клиента, поскольку каждая фотография может (теоретически) иметь уникальный URL-адрес, используя параметры get. Но кеширование сервера также очень важно. – livingtech

+0

@ livingtech Да, действительно, вытягивание файла с несколькими мегабайтами каждый раз из БД может быть временем/CPU/памятью. Это, вероятно, будет хорошо работать для небольшого сайта с несколькими посетителями, но убьет сервер для большого сайта! – AlexV

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