Pertanyaan saya cukup umum dan saya tahu mungkin tidak ada jawaban 100% untuk itu. Saya sedang membangun solusi web ASP .NET yang akan menyertakan banyak gambar dan mudah-mudahan cukup banyak lalu lintas. Saya benar-benar ingin mencapai kinerja.
Haruskah saya menyimpan gambar di Database atau di sistem File? Dan terlepas dari jawabannya, saya lebih tertarik pada mengapa memilih cara tertentu.
Terima kasih banyak, Stefan
DUPLIKAT : Menyimpan Gambar di DB - Ya atau Tidak? , Bagaimana cara menyimpan gambar di sistem file Anda , Menyimpan sejumlah kecil gambar: blob atau fs? dan mungkin beberapa lainnya.
KOMENTAR: Terima kasih atas banyak jawaban yang bagus. Saya akan menggunakan solusi berbasis file bahkan jika saya menyukai gagasan memiliki solusi berbasis database 100%. Tampaknya saat ini ada solusi yang baik untuk melakukan apa yang saya inginkan dengan database dll, tetapi saya memiliki beberapa alasan untuk tidak melakukannya.
Saya akan menggunakan solusi yang di-host, saya memiliki penyimpanan dalam jumlah besar (10gb) tetapi hanya 300mb untuk database. Ini akan memakan banyak biaya untuk penyimpanan ekstra di DB.
Saya bukan ahli DB dan juga tidak mengendalikan pengaturan DB. Solusi berbasis DB mungkin memerlukan konfigurasi kustom seperti yang terlihat.
Jika kita akan pindah untuk menjalankan situs di server kita sendiri, saya mungkin mempertimbangkan solusi berbasis DB. terima kasih, Stefan
sumber
Jawaban:
Simpan gambar pada sistem file dan lokasi gambar di database.
Mengapa? Karena...
sumber
Dalam proyek saya yang baru dikembangkan, saya menyimpan gambar (dan semua jenis dokumen biner) sebagai kolom gambar dalam tabel database.
Keuntungan memiliki file yang disimpan dalam database jelas bahwa Anda tidak akan berakhir dengan file yang tidak direferensikan di harddisk jika record dihapus, karena sinkronisasi antara database (= meta data) dan harddisk (= penyimpanan file) tidak built-in dan harus diprogram secara manual.
Menggunakan teknologi saat ini, saya sarankan Anda menyimpan gambar di kolom FILESTREAM SQL Server 2008 (setidaknya itulah yang akan saya lakukan dengan proyek saya berikutnya), karena mereka menggabungkan keuntungan dari menyimpan data dalam database DAN memiliki biner besar dalam file terpisah (di Setidaknya menurut iklan;))
sumber
Pepatahnya selalu "File di sistem file, file metadata di database"
sumber
Lebih baik menyimpan file sebagai file. Database yang berbeda menangani data Blob secara berbeda, jadi jika Anda harus memigrasi back end, Anda mungkin mendapat masalah.
Saat menyajikan impages, <img src = ke file yang sudah ada di server cenderung lebih cepat daripada membuat file sementara dari bidang database dan mengarahkan tag <img ke sana.
Saya menemukan jawaban ini dari googling pertanyaan Anda dan membaca komentar di http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
sumber
Saya biasanya suka memiliki file biner di database karena:
sumber
Menyimpan gambar dalam database menambahkan overhead DB untuk menyajikan gambar tunggal dan membuatnya sulit untuk dipindahkan ke penyimpanan alternatif (S3, Akami) jika Anda berkembang ke level tersebut. Menyimpannya dalam database membuat lebih mudah untuk memindahkan aplikasi Anda ke server yang berbeda karena hanya DB yang perlu dipindahkan sekarang.
Menyimpan gambar di disk memudahkan untuk dipindahkan ke penyimpanan alternatif, membuat gambar menjadi elemen statis sehingga Anda tidak perlu dipusingkan dengan header HTTP di aplikasi web Anda untuk membuat gambar dapat disimpan dalam cache. Kelemahannya adalah jika Anda pernah memindahkan aplikasi Anda ke server yang berbeda, Anda harus ingat untuk memindahkan gambar juga; sesuatu yang mudah dilupakan.
sumber
Untuk aplikasi berbasis web, Anda akan mendapatkan kinerja yang lebih baik dengan menggunakan sistem file untuk menyimpan gambar Anda. Melakukan hal itu akan memungkinkan Anda untuk dengan mudah mengimplementasikan caching gambar di berbagai level dalam aplikasi Anda. Ada beberapa keuntungan menyimpan gambar dalam database, tetapi sebagian besar keuntungan tersebut datang dengan aplikasi berbasis klien.
sumber
Hanya untuk menambahkan lebih banyak lagi ke jawaban yang sudah bagus sejauh ini. Anda masih bisa mendapatkan manfaat dari caching dari tingkat web dan mungkin tingkat database jika Anda mengikuti rute yang menyimpan gambar Anda dalam database.
Saya pikir untuk database Anda dapat mencapai ini dengan cara Anda menyimpan gambar yang berkaitan dengan data tekstual yang terkait dengannya dan jika Anda dapat mengakses gambar ke kueri tertentu sehingga database dapat menyimpan kueri tersebut (hanya teori saja. merasa bebas untuk membujuk saya pada bagian itu).
Dengan sisi web, saya akan menebak karena pertanyaan Anda ditandai dengan asp.net bahwa Anda akan menggunakan cara menggunakan http handler untuk menyajikan gambar. Maka Anda memiliki semua manfaat kerangka kerja yang Anda inginkan dan Anda dapat menjaga logika domain Anda lebih bersih hanya dengan meneruskan kunci gambar Anda ke penangan http.
sumber
Mengapa tidak memilih database NoSql individu untuk menyimpan file Anda.
Ini memberi Anda integritas data, konsistensi data seperti yang disebutkan @chburd.
Sementara Anda rdbms masih tetap kecil.
sumber
Eclipse
) untuk menyimpan gambar dalam sistem file dan menyimpan metadatanya di DB - http://www.devmanuals.com/tutorials/java/spring/spring3/mvc /Spring3MVCImageUpload.htmlsumber