ユーザーが生成した多数のファイルを保存するWebアプリケーションがあります。現在、これらはすべてサーバーファイルシステムに保存されていますが、いくつかの欠点があります。
だから、私の主な質問は
直接的な回答ではありませんが、非常に興味深く、何らかの形で類似した質問へのポインタがあります(そうです、それらはブロブと画像に関するものですが、これはIMOに匹敵します)。
MySQLにファイルをBLOBとして保存することの欠点は何ですか?
CassandraのようなNoSQLシステムにも同じ問題がありますか?
PS:私は殺し屋になりたくはありませんが、NoSQLソリューションで問題を解決できるとは思いません(NoSQLはほとんどのビジネスには関係ありません)。
多分ハイブリッドソリューション。
データベースを使用して各ファイルに関するメタデータを保存し、ファイルシステムを使用して実際にファイルを保存します。
「フォルダ」の再構築は、DBでモデル化し、実際のOSの場所から逆参照することができます。
Cassandraにファイルを1MB程度の列に分割することで、2GBまでのファイルを簡単に保存できます。これはかなり一般的です。
1つの大きな列として保存することもできますが、アクセスするときにすべてをメモリに読み込む必要があります。
OSまたはアプリケーションがファイルにアクセスする必要がない場合は、ファイルをファイルシステムに保存する必要はありません。データベースのバックアップと同時にファイルをバックアップする場合は、ファイルをデータベースの外部に保存してもあまりメリットがありません。したがって、ファイルをデータベースに保存することは有効な解決策である可能性があります。
もう1つの欠点は、dbでファイルを処理すると、ファイルシステムレベルでファイルを処理するよりもオーバーヘッドが大きくなることです。ただし、長所が短所を上回り、あなたの場合はそうかもしれないと思われる限り、試してみることができます。
私の主な関心事は、ディスクストレージの管理です。データベースファイルが大きくなると、データベース全体の管理がより複雑になります。フライパンから出て火の中に入れたくありません。