我有一个存储大量用户生成文件的Web应用程序.目前,这些文件都存储在服务器文件系统上,这对我来说有几个缺点.

  • 当我们移动"文件夹"(由我们的应用程序定义)时,我们还必须移动磁盘上的文件(尽管这更多地是由于原始开发人员的奇怪设计决定,而不是将内容存储在文件系统上的要求).
  • 很难为文件系统操作编写测试;我有一个模拟文件系统类,它记录移动、删除等操作,而不执行这些操作,这或多或少可以完成这项工作,但我对测试没有100%的信心.
  • 我将添加一些其他作业(job),这些作业(job)需要从其他服务访问文件,以执行其他任务(例如,在Solr中建立索引、生成缩略图、电影格式转换),因此我需要远程获取文件.在网络共享上这样做似乎很危险...
  • 在过go ,处理文件系统上的权限有时会给我们带来问题,尽管现在我们已经转向纯Linux环境,这应该不是什么问题.

所以,我的主要问题是

  • 在MySQL中将文件存储为BLOB有什么缺点?
  • 像Cassandra这样的NoSQL系统也存在同样的问题吗?
  • 是否有人有其他合适的建议,例如MogileFS等?

推荐答案

这不是一个直接的答案,而是一些非常有趣的、以某种方式类似的问题(是的,它们是关于斑点和图像的,但这在我看来是可比的).

在MySQL中以blob形式存储文件的缺点是什么?

像Cassandra这样的NoSQL系统也存在同样的问题吗?

附言:我不想成为杀手锏,但我不认为任何NoSQL解决方案都能解决你的问题(NoSQL只是与大多数企业无关).

Database相关问答推荐

为Postgres数据库字段创建复合索引

在MongoDB的树形 struct 中更新具有给定id的元素

如果我想支持我的工作负载,我需要多少个 node ?

Django Save 方法在try 向表中添加新记录时出错

在保持抽象的同时将格式化文本存储在数据库中

在 PostgreSQL 的数组列中查找字符串

数据库排序规则更改问题 (SQL Server 2008)

502 是数据库错误的适当状态代码吗?

MS Access:如何在 VBA 中压缩当前数据库

保存图像:文件还是 blob?

用 Python 永久存储字典的优雅方式?

如何使用 INSERT ... ON CONFLICT ... 更新所有列?

表别名如何影响性能?

mySQL 复制是否具有即时数据一致性?

数据库中的整数与字符串

哪个更重要?数据库设计或编码?

根据上次日期 Select 记录

数据库 EAV 优点/缺点和替代方案

Windows phone 7 的本地 Sql 数据库支持

获取 xp_cmdshell 的执行权限