Apa tempat terbaik untuk menyimpan file biner yang terkait dengan data di database Anda? Seharusnya kamu:
- Simpan di database dengan gumpalan
- Simpan di sistem file dengan tautan di basis data
- Simpan di sistem file tetapi ganti nama menjadi hash dari konten dan simpan hash pada database
- Sesuatu yang tidak pernah saya pikirkan
Keuntungan dari (1) adalah (antara lain) bahwa keaslian transaksi dipertahankan. Biayanya adalah Anda mungkin secara dramatis meningkatkan persyaratan penyimpanan (dan streaming / cadangan terkait)
Tujuan dari (3) adalah untuk mempertahankan atomisitas sampai taraf tertentu - jika Anda dapat memastikan bahwa sistem file yang Anda tulis tidak memungkinkan file untuk diubah atau dihapus, dan selalu memiliki hash yang benar sebagai nama file. Idenya adalah untuk menulis file ke sistem file sebelum mengizinkan memasukkan / memperbarui referensi hash - jika transaksi ini gagal setelah sistem file menulis tetapi sebelum DML database, itu baik-baik saja karena sistem file 'berpura-pura' menjadi gudang semua kemungkinan file dan hash - tidak masalah jika ada beberapa file di sana yang tidak diarahkan (dan Anda dapat membersihkannya secara berkala jika Anda berhati-hati)
SUNTING:
Sepertinya beberapa RDBMS membahas hal ini dalam cara masing-masing - Saya tertarik untuk mengetahui bagaimana orang lain melakukannya - dan khususnya dalam solusi untuk postgres