数据库设计 - 大型领域

时间:2011-07-31 12:20:59

标签: database-design large-data

比方说,我在博客中有一个文章列表。每篇文章都有一个图像,每个图像都有一个缩略图。

当显示文章列表时,每个文章都会显示缩略图;当显示单篇文章时,它将以完整尺寸的图像显示。

这意味着每篇文章都有三个大的(未知大小)数据项:图像,缩略图和文本。

这些设计的优点和缺点是什么:

  1. 文章表格包括缩略图列和图像列
  2. 文章表包括缩略图列,图像存储在单独的表格中
  3. 缩略图和图像存储在单独的表中
  4. 缩略图和图像存储在各自独立的表格中
  5. 网站具有对存储图像和缩略图的文件夹的写访问权限,数据库包含URL /文件名
  6. (我还没考虑过吗?)

    如果它有所作为,我认为不应该,那么该网站将使用Postgres或MySql以Ruby / Rails编写。

2 个答案:

答案 0 :(得分:1)

IMO,选项5是最好的。仅仅因为您可以将图像存储在数据库中,并不意味着您应该这样做。存储文件位置以及有关DB中图像的任何元数据。将图像存储在文件系统中。

将图像存储在数据库中的“缺点”是,您最终会通过箍跳实际使用应用中的图像。几乎任何库,脚本,附加组件等都可以使用您的图像,如果它们在没有任何特殊编码的目录中。将它们放在数据库中,您需要编写代码才能提供使用它们的权限。

我能看到的唯一好处是在webfarm环境中,多个Web服务器使用单个(或复制的数据库),图片将自动提供给所有Web服务器,数据和图像可以一次备份

IMO,利弊远远超过使用数据库存储图像的专业人士。

答案 1 :(得分:0)

如果我理解正确,数据库已经自动处理大字段分离为单独的“表”,具体取决于字段的数据类型和大小。谷歌的“行外存储”或类似的东西。也可能有这样的设置。

这意味着您不必自己为大字段创建单独的表。

至于存储在磁盘而不是db我不知道。我认为这个问题之前已被问过很多次了。