场景: 一个Django应用程序会生成大量与不同模型中的对象相关的小文件。
当使用默认Filestorage时,我已经进行了很多搜索,以避免在单个目录中生成大量文件。
django-fsfield是唯一的开源解决方案吗?您还推荐其他方法来解决目录中大量的inode吗?
谢谢!
场景: 一个Django应用程序会生成大量与不同模型中的对象相关的小文件。
当使用默认Filestorage时,我已经进行了很多搜索,以避免在单个目录中生成大量文件。
django-fsfield是唯一的开源解决方案吗?您还推荐其他方法来解决目录中大量的inode吗?
谢谢!
我正在使用django-castor。
django-castor
是Django的可重用应用程序,提供内容可寻址存储后端。主要类djcastor.storage.CAStorage
是一种FileSystemStorage
,它将文件保存在它们的SHA-1摘要下。
无论上传多少次相同的文件,它只会被存储一次,从而消除了冗余。
文件名是伪随机的,仅由十六进制字符组成,因此您不必担心文件名冲突或净化。
django-castor
根据它们的摘要在上传目录中分片文件;这可以防止当一个目录中有太多的文件时出现文件系统问题。
考虑将内容存储在MongoDB集合中。
由于文件很小,您可以创建一个包含文件内容的单个二进制字段的MongoDB文档。在这种情况下,“小”意味着小于MongoDB文档大小限制,目前为16MB。
如果您需要存储大文件,则Mongo支持使用GridFS。
另请参见何时使用GridFS。
还可以使用自定义存储管理器,如果文件很小,则将其保存在具有二进制字段的数据库模型中,并保存大于16MB的小文件,无需使用其他数据库。