4

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

在使用默认文件存储时,我进行了大量搜索以避免在单个目录中生成大量文件。

django-fsfield是唯一的开源解决方案吗?您还有什么建议用于修复目录中的大量 inode 吗?

谢谢!

4

3 回答 3

1

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

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

如果你需要存储大文件,Mongo 支持gridfs

另请参阅何时使用 GridFS

于 2012-07-02T10:53:33.930 回答
1

我正在使用django-castor

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

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

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

  • django-castor根据摘要对上传目录中的文件进行分片;当单个目录中有太多文件时,这可以防止文件系统问题。

于 2015-02-04T22:03:10.500 回答
0

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

于 2014-04-07T17:13:37.563 回答