変換前と変換後の動画データの保存には MongoDB を使用しています。1 つのファイルをエンコードすると、6 つ以上の小さなファイルが生成されます (いくつかの品質グレードと異なる形式)。入力ファイルと出力ファイルの両方が同じ一意のファイル ID を共有します。
問題は、パフォーマンスとスケーラビリティの点でどちらのアプローチが優れているかです。すべての出力ファイルを、元のファイル ID、品質グレード、およびフォーマット タイプを含む複合キーを使用して 1 つの巨大な gridFS コレクションに格納するか、それとも、品質とフォーマットのペアごとに個別のコレクションを作成するかです。
私にとって、これらのアプローチにはどちらも長所と短所があります。
- 結果として得られる 1 つの大きなコレクションを使用すると、読み取り時に使用する構成が少なくなりますが、ファイルを見つけるにはより複雑なクエリが必要になります。
- 結果として得られる複数のコレクションを使用すると、クエリがより単純で高速になりますが、このクエリの対象となるコレクションを選択するための追加の構成が必要になります。
個人的な選択の問題のように思えます...しかし、スケーラビリティやパフォーマンスはどうですか? 以前にこのような解決策に直面した人はいますか? 多分誰かがアドバイスできますか?
サイズの大きな多数のファイルを考慮して、戦略的な観点からどのアプローチが優れていますか? 将来、スケーリングとシャーディングが容易になるアプローチはどれですか? たぶん、長期的にはパフォーマンスのペナルティがありますか?