Дизайн базы данных для сайта обмена фотографиями?


Я использую php и mysql. Если я хочу создать веб-сайт для обмена фотографиями, какой лучший дизайн базы данных для загрузки и отображения фотографий. Вот что я имею в виду:

domain:
  |_> photos
  |_> user

Вошедший в систему пользователь загрузит фотографию в [http://www.domain.com/user/upload.php]

Фотографии хранятся в файловых системах, а путь к фотографиям хранится в базе данных. Итак, в папке "Мои фотографии" будет выглядеть так: фотографии/Пользователь/вложенные папки+ фотографии, фотографии/пользователь/вложенные папки+ фотографии, фотографии/Каталог пользователей/вложенные папки+фотографии и т.д.

Публика/другие люди могут просматривать его фотографию в: [http://www.domain.com/photos/user/?photoid=123]

Где 123 - фотоид, оттуда я сделаю запрос из базы данных, чтобы получить путь и отобразить изображение.

Мои вопросы:

  1. Какой лучший дизайн базы данных для веб-сайта для обмена фотографиями (например, flickr)?

  2. Возникнут ли какие-либо проблемы, если я продолжу создавать новую папку в папке "фотографии". Что, если сотни тысяч зарегистрированных пользователей? Каковы лучшие практики

  3. Какой размер фотографий я должен хранить? В настоящее время я сохранил только миниатюры (100x100) и (максимум) 1600x1200 пикселей фотографий.

  4. Какие еще вещи я должен учитывать при разработке веб-сайта для обмена фотографиями?

Author: javaLearner.java, 2010-05-19

1 answers

1 - Как минимум ваша база данных должна состоять из

users: user_id, user_name, pw_hash, salt
photos: photo_id, user_id, photo_path

Поля будут добавлены для дополнительной функциональности, которую вы хотели (теги, last_seen, photo_upload_date, photo_views и т. Д.)

2 - Не оптимизируйте преждевременно. я бы пошел с добавлением папки пользователей/имени пользователя для каждого пользователя и сбросил туда фотографии пользователей.

3 - я рекомендую сохранить исходный размер, миниатюру и размер, подходящий для вашего сайта. поэтому, если ваш макет содержит фотографию с максимальной шириной 850 пикселей измените размер всех фотографий до максимальной ширины 850 пикселей. Если у вас изменится макет, вы можете использовать исходное изображение и изменить его размер до нового размера.

4 - где-то есть отличный ответ на SO о безопасности загрузки изображений, но я не могу его найти. я продолжу поиски.

Подумайте об использовании CDN: https://stackoverflow.com/questions/72369/whats-the-best-cdn-for-image-hosting-on-a-high-volume-web-site

Хороший разговор о масштабируемости, раздел о миниатюрах был бы полезен для вас, чтобы смотреть: http://www.youtube.com/watch?v=ZW5_eEKEC28 . в этом видео рассказывается об ограничении количества файлов в каталоге в файловых системах ext3, которые могут вас заинтересовать.

 7
Author: Galen, 2017-05-23 12:09:10