我有一个Web应用程序,存储了大量的用户生成的文件。目前所有这些文件都存储在服务器文件系统上,这对我有几个不利影响:
- 当我们移动“文件夹”(由我们的应用程序定义)时,我们也必须移动磁盘上的文件(尽管这更多是由于原始开发人员奇怪的设计决策而不是存储在文件系统中的要求)。
- 很难为文件系统操作编写测试;我有一个模拟文件系统类,记录像移动、删除等操作,而不执行它们,这差不多可以完成工作,但我对测试没有100%的信心。
- 我将添加一些其他任务,需要从其他服务访问文件以执行其他任务(例如,在Solr中索引、生成缩略图、电影格式转换),因此我需要远程访问文件。通过网络共享实现这一点似乎不太可靠...
- 处理文件系统权限有时会给我们带来问题,尽管现在我们已经转移到纯Linux环境,这应该不再是问题。
所以,我的主要问题是:
- 在MySQL中将文件存储为BLOB的缺点是什么?
- NoSQL系统(如Cassandra)是否存在同样的问题?
- 是否有其他建议可能是合适的,例如MogileFS等?