シナリオ: Django アプリは、さまざまなモデルのオブジェクトに関連する多数の小さなファイルを生成します。
デフォルトの Filestorage を使用する場合、1 つのディレクトリに多数のファイルが生成されるのを避けるために、多くの検索を行いました。
django-fsfieldは、これに対する唯一のオープン ソース ソリューションですか? ディレクトリ内の多数のinodeを修正するために他に推奨することはありますか?
ありがとうございました!
シナリオ: Django アプリは、さまざまなモデルのオブジェクトに関連する多数の小さなファイルを生成します。
デフォルトの Filestorage を使用する場合、1 つのディレクトリに多数のファイルが生成されるのを避けるために、多くの検索を行いました。
django-fsfieldは、これに対する唯一のオープン ソース ソリューションですか? ディレクトリ内の多数のinodeを修正するために他に推奨することはありますか?
ありがとうございました!
私はdjango-castorを使用しています。
django-castor は Django 用の再利用可能なアプリで、 コンテンツ アドレス可能なストレージ バックエンドを提供します。メイン クラス は 、ファイルを SHA-1 ダイジェストで保存
djcastor.storage.CAStorage
するタイプです。FileSystemStorage
同じファイルが何度アップロードされても、保存されるのは 1 回だけであるため、冗長性が排除されます。
ファイル名は疑似乱数であり、16 進文字のみで構成されているため、ファイル名の衝突やサニタイズについて心配する必要はありません。
django-castor
ダイジェストに基づいてアップロード ディレクトリ内のファイルを断片化します。これにより、1 つのディレクトリにあまりにも多くのファイルが存在する場合のファイル システムの問題が回避されます。
コンテンツを MongoDB コレクションに格納することを検討してください。
ファイルは小さいため、ファイルの内容を含む単一のバイナリ フィールドを持つ MongoDB ドキュメントを作成できます。この場合の「小」は、MongoDB のドキュメント サイズ制限 (現在は 16MB) 未満であることを意味します。
大きなファイルを保存する必要がある場合、Mongo はgridfsでそれをサポートします。
GridFS を使用する場合も参照してください。
また、ファイルが小さい場合はバイナリ フィールドを使用してデータベース モデルに保存し、16 MB 以上の小さなファイルを保存し、他のデータベースを使用する必要がないカスタム ストレージ マネージャーを使用することもできます。