将所有图像放在数据库中或仅放在文件夹中

时间:2013-02-26 15:59:36

标签: linux image node.js mongodb

我正在开发一个使用大量图片的网站。 图像经常被操作(每隔几秒,由客户端)。所有图像都在Linux服务器上。两个客户端也可能尝试同时更改图像。 所以我的问题是:我应该将图像放入数据库还是只将它们放在一个文件夹中(操作系统如何处理写 - 写冲突?)?

我在服务器上使用node.js和mongoDB。

2 个答案:

答案 0 :(得分:2)

您通常将引用存储在数据库内的文件位置。关于写 - 写冲突在大多数拥有该文件的人首先得到它然而它主要取决于你正在使用的操作系统。您将需要查看文件锁定。这篇维基百科文章给出了一个很好的概述。

http://en.wikipedia.org/wiki/File_locking

如果文件正在使用中,如果可能发生写入冲突,则在代码中检查并通知用户也是一种良好做法。

答案 1 :(得分:1)

我建议您使用GridFS文件系统将图像存储在MongoDB中。这允许您将图像及其元数据保持在一起,它具有原子更新和另外两个优点,如果您使用数据库的副本集:

  • 您的图片与其他数据具有相同的高可用性,并且可以一起备份

  • 您最终可以将查询定向到集

  • 的辅助成员

有关详细信息,请参阅

http://docs.mongodb.org/manual/applications/gridfs

http://docs.mongodb.org/manual/replication/

这有帮助吗?

干杯

罗纳德