【发布时间】:2017-02-02 02:17:49
【问题描述】:
我目前正在开发一种产品,其中包含不同类型的图像,例如产品图像、用户个人资料图片、徽标等。 我需要一个具有良好查询性能的数据库。
我想到了两个数据库设计。
选项 1. - 将所有图像存储在具有 id、title、url_full、url_thumb、状态和时间戳字段的单个表中
优势
- 我可以使用单个 ImageModel 文件插入删除/更新数据。所以图像存储不会有多重逻辑。它只是一个单一的逻辑,“存储在一个表中”。所以每当需要保存图像时,我都可以调用 ImageModel 的方法
缺点
- 如果产品图片多而用户图片少,由于产品数量庞大,用户图片查询会变慢。
选项 2. - 使用 id、title、url_full、url_thumb、status 和时间戳字段将不同类型的图像存储在不同的表中
优势
- 增加一个section的记录数不会影响其他section的查询速度
缺点
- 必须为每种图像类型编写单独的模型文件/函数。
- 无论何时必须存储图像,都需要指定类型。
我的问题是,哪种方法更好。优点和缺点是否真正值得关注。如果还有其他优点/缺点,请列出。 或者如果有其他的神db设计,请提出。
请根据产品和用户多的实际场景回答。
【问题讨论】:
-
"良好的查询性能" -- 请向我们展示查询;没有他们,我们无法为您提供帮助。
-
图片的典型尺寸是多少?如果我们谈论的是千字节,那么一个答案会更好;兆字节然后另一个更好。
标签: mysql performance database-design architecture code-maintainability