在 S3 中使用带有外部存储的图像和缩略图进行数据库设计的最佳实践?
Posted
技术标签:
【中文标题】在 S3 中使用带有外部存储的图像和缩略图进行数据库设计的最佳实践?【英文标题】:Best practice for database design with images and thumbnails with external storage in S3? 【发布时间】:2012-03-03 08:51:23 【问题描述】:首先:我在 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】:你为什么不只有一张桌子?
|Image
----------------------------------------------------------
id | image_size(if you need to know size) | url(varchar)
----------------------------------------------------------
文件名可能很棘手。您可能有 2 张具有相同文件名的图像。在 S3 中使用 id 作为键名。如果你使用 id,你可以去掉上面的 'url' 列并遵循这样的约定
https://myapp.s3.amazonaws.com/id.jpeg
如果它是固定大小,您也不需要 URL 和表格中的 image_size。 如果您要保存一组标准尺寸,则可以像 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
【讨论】:
以上是关于在 S3 中使用带有外部存储的图像和缩略图进行数据库设计的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章