Наилучшая практика для проектирования баз данных с изображениями и миниатюрами с внешним хранилищем в S3? - PullRequest
3 голосов
/ 11 февраля 2012

Первое: я сохраняю изображения в amazon s3.

Итак, корень URL для моих изображений: https://myapp.s3.amazonaws.com/

Мои таблицы дизайна и отношения:

таблица документ

id     file_name
1      my_document         

таблица изображения

id document_id  missing_column??
1     1
2     1                  

таблица images_sizes

id    images_id     image_size          file_name        file_extension
1         1          800                output1               .png
2         2          800                output2               .png
3         1          200                output1               .png
4         2          200                output2               .png

затемпостроить URL для получения изображения будет https://myapp.s3.amazonaws.com/document_id/image_size/file_name+file_extension

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

Большое спасибо, ребята !!

1 Ответ

0 голосов
/ 31 марта 2012

Почему у вас нет только 1 стола?

|Image 
----------------------------------------------------------
id | image_size(if you need to know size) | url(varchar)
----------------------------------------------------------

Имя файла может быть хитрым. У вас может быть 2 изображения с одинаковым именем файла. Используйте идентификатор в качестве имени ключа в S3. Если вы используете идентификатор, вы можете избавиться от столбца 'url' выше и следовать соглашению, как

https://myapp.s3.amazonaws.com/id.jpeg

Вам также не нужен image_size в URL и таблице, если это фиксированный размер. Если вы сохраняете набор стандартных размеров, вы можете следовать соглашению, как это делает YouTube -

http://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
http://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
...