2011-12-01 41 views
0

我在让用户上传图片到我的应用程序时遇到了困境。我的主机允许无限制的存储空间,但只允许250K个人文件。我在125K,我计划发布一个功能,允许用户上传图片。如果我开始上传大量图片,我可以快速填充该配额。我想过把它们存储在MySQL等数据库中。这是一个可行的解决方案,还是仅仅是愚蠢的?如果它只是愚蠢的,那么一些免费/廉价的选择会是什么?在数据库中存储大量图像是愚蠢的吗?

回答

1

是的,把图像数据放在一个分贝将是一种愚蠢的。
我会看看使用像Amazon S3存储的东西。

这是一个CodingHorror帖子,几年前杰夫在这里讨论它。

+0

这看起来像我最好的选择。它超级便宜。我认为带宽成本不会像我的存储一样成为问题。 :P。非常感谢! – LordZardeck

+0

不客气! :) – tzaman

1

使用数据库显然比使用文件系统慢。如果你已经有125k,也许使用VPS而不是托管是一个好主意。这是约5-10美元/星期一。

+0

什么?你可以在哪里获得5-10美元/月的VPS? – LordZardeck

+0

http://www.hetzner.de/hosting/produkte_vserver/vq7(我用这个满足我的小小需求) – Ximik

+0

真是棒极了。我可能最终将其用于某些副项目。 – LordZardeck

0

我个人不会那么做。它最终会在以后导致更多问题。 为什么不登录http://www.000webhost.com/(或类似)并创建脚本来上传图片而不是服务器?这是我会做的。

或者,您可以开始设置图片保存期限的限制吗?并在x天后删除它们?

0

您可以选择将图像存储在CDN或s3之类的选项吗?从服务器上获取图像并获得快速基础架构的好处。更多这里:http://aws.amazon.com/cloudfront/

如果您需要保护图像但更加可行,则会更复杂。

1

有很多很好的理由将图像(或任何庞大的媒体文件)存储在数据库之外。

将图像存储在数据库中的原因是如果您需要图像数据以使用SQL ACID语义。

例如,如果您在数据库中插入一行但回滚,则您希望图像数据也被丢弃。如果将图像数据从外部存储到数据库,则必须清理孤立的图像。 同样,如果你从数据库中删除行,你也必须记得从磁盘或S3或其他东西中删除它们。 同样,如果你更新行,你会失去事务隔离,所以你有竞争条件。

如果您将图像存储在数据库之外,还需要创建数据库备份。不仅因为现在您的备份是一个多步骤过程(备份数据库,然后是备份映像收集),而且您也无法创建热备份。在备份从数据库复制数据的过程中,您的映像集可能会在分钟内发生更改。

+0

+1对于一些非常有用的信息。由于这不是一个重要的企业项目,我不认为我必须担心需要将图像存储在数据库中。感谢分享! – LordZardeck