Django文件系统存储大量文件

4

场景: 一个Django应用程序会生成大量与不同模型中的对象相关的小文件。

当使用默认Filestorage时,我已经进行了很多搜索,以避免在单个目录中生成大量文件。

django-fsfield是唯一的开源解决方案吗?您还推荐其他方法来解决目录中大量的inode吗?

谢谢!

3个回答

1

我正在使用django-castor

django-castor是Django的可重用应用程序,提供内容可寻址存储后端。主要类djcastor.storage.CAStorage是一种FileSystemStorage,它将文件保存在它们的SHA-1摘要下。

  • 无论上传多少次相同的文件,它只会被存储一次,从而消除了冗余。

  • 文件名是伪随机的,仅由十六进制字符组成,因此您不必担心文件名冲突或净化。

  • django-castor根据它们的摘要在上传目录中分片文件;这可以防止当一个目录中有太多的文件时出现文件系统问题。


1

考虑将内容存储在MongoDB集合中。

由于文件很小,您可以创建一个包含文件内容的单个二进制字段的MongoDB文档。在这种情况下,“小”意味着小于MongoDB文档大小限制,目前为16MB。

如果您需要存储大文件,则Mongo支持使用GridFS

另请参见何时使用GridFS


0

还可以使用自定义存储管理器,如果文件很小,则将其保存在具有二进制字段的数据库模型中,并保存大于16MB的小文件,无需使用其他数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接