ビデオ ファイルを BLOB オブジェクトとしてデータベースに保存するか、物理ディスクに保存することをお勧めしますか。
これは、ユーザーがビデオをアップロードして表示できる youtube に似たサイト用です。
データベースはMysqlになります
どちらのオプションが優れているか、またその理由
ありがとう
ビデオ ファイルを BLOB オブジェクトとしてデータベースに保存するか、物理ディスクに保存することをお勧めしますか。
これは、ユーザーがビデオをアップロードして表示できる youtube に似たサイト用です。
データベースはMysqlになります
どちらのオプションが優れているか、またその理由
ありがとう
Pro MySQL: - BLOB は外部キーの影響を受ける可能性があるため、ファイルシステムに保存するのではなく、データベースを冗長に保ちます。この場合、ファイルの削除をプログラムする必要があります。- きめ細かなユーザー権限。
短所: - MySQL は無料で実行されません。ファイル システムからのサービスとは対照的に、オーバーヘッドが発生します。- Web サーバーは、データベースから BLOB を直接提供できません。これは、PHP がプロセスを仲介する必要があることを意味します。BLOB が MySQL から PHP にロードされると、メモリ使用量は少なくとも BLOB と同じ大きさになります。したがって、ファイルが数百 MB に達する可能性がある場合、これは Web サーバーに大きな負担をかけることになります。
実際には、MySQL をファイルの保存に使用することはできません。BLOB は主に、キャッシュなどの大量のシリアル化されたデータを保存するために使用されます。
NFS を使用して、ストレージの観点から問題なく、約 5 年間のメディア コンテンツを保存しています。操作、エンコード、および保存は、ffmpeg、php スクリプト、および cron ジョブを介して管理されます。ビデオ メタデータは MySql データベースに保存され、Web 配信は Nginx 経由で提供されます (読み取り専用の NFS マウント経由)。この環境では、動画ファイルのサイズは最大 2GB です。おそらく、別の db エンジンで高速化できますが、リアルタイムの無駄は、ファイルの保存ではなく、エンコード プロセスによるものです。
何千もの小さな画像(アバターなど)を保存するとき、MySqlを使用してファイルのメタデータ(画像パスやその他のプロパティ)を保存し、重いクエリでdbを遅くしすぎる可能性のあるBLOBフィールドにファイルを保存しません。