【发布时间】:2014-11-06 11:32:10
【问题描述】:
这个问题可能太笼统了,但是这里……
我想接受用户上传的图像并将它们托管在 S3 上。这方面的最佳做法是什么?我在想以下几点:
Mysql - 创建一个包含所有图像元数据的表:
- 自动递增 ID
- 上传者的用户 ID
- 指向其在 S3 中的位置的 slug 或路径
- 其他图像元数据? (大小、宽度、高度等)
S3 - 创建一个新的存储桶来保存图像
网站后端 - 处理上传的逻辑:
- 接受用户上传、验证文件等
- 可选择处理图像(调整大小、转换等)
- 使用新的随机 slug 上传到相应的 S3 存储桶
- 如果成功,在mysql表中添加一条新记录
--
这是将 S3 用作带有我的 Web 服务的云提供商的标准做法吗? 如何确保数据库和 S3 彼此保持更新?例如,如果手动从数据库中删除一条记录会怎样?我应该如何处理孤立的 S3 对象?或者另一方面,如果从 S3 中删除图像但在 mysql 表中没有相应记录怎么办? 是否由我自己编写一个脚本来验证两个系统之间的完整性?
【问题讨论】:
-
"例如,如果手动从数据库中删除一条记录会怎样?"不要那样做?
-
显然我不会那样做,但是您不为您的架构实施安全措施吗?看起来很短视,不是吗?
-
如果我偶尔会收到一个孤立的 S3 文件,这将花费我一分钱。花几个小时进行检查以节省一分钱对我来说并不划算。 S3 的文档表明他们每 1 万年丢失一个文件,所以我不太担心事情会消失。
-
我更担心数据的完整性,而不是成本。我不知道,也许这只是一个不必要的“优化”。
-
不管怎样,你好像做过类似的事情。你觉得这种架构好看吗?
标签: mysql database amazon-web-services amazon-s3