データベース内のデータに関連するバイナリファイルを保存するのに最適な場所は何ですか?あなたは:
- BLOBを使用してデータベースに保存する
- データベース内のリンクを使用してファイルシステムに保存する
- ファイルシステムに保存しますが、コンテンツのハッシュに名前を変更し、データベースにハッシュを保存します
- 私が考えていないこと
(1)の利点は(とりわけ)トランザクションの原子性が保持されることです。コストは、ストレージ(および関連するストリーミング/バックアップ)要件を劇的に増加させる可能性があることです
(3)の目標は、ある程度まで原子性を保持することです。書き込み先のファイルシステムでファイルの変更や削除を許可せず、ファイル名として常に正しいハッシュを持つことを強制できる場合。ハッシュを参照する挿入/更新を許可する前にファイルシステムにファイルを書き込むことが考えられます-ファイルシステムの書き込み後、データベースDMLの前にこのトランザクションが失敗した場合、ファイルシステムはすべてのリポジトリであるため、問題ありません可能性のあるファイルとハッシュ-そこにポイントされていないファイルがあるかどうかは関係ありません(注意すれば定期的にクリーンアップできます)
編集:
一部のRDBMSはこれを個別の方法でカバーしているようです-他の人がそれをどのように行うのか知りたいと思います-特にpostgresのソリューション