Saya telah membuat situs demo kecil dan di atasnya saya menyimpan gambar dalam kolom gambar di server sql. Beberapa pertanyaan yang saya miliki adalah ...
Apakah ini ide yang buruk?
Apakah ini akan memengaruhi kinerja di situs saya ketika situs itu tumbuh?
Alternatifnya adalah dengan menyimpan gambar pada disk dan hanya menyimpan referensi ke gambar dalam database. Ini pasti dilema umum yang dialami banyak orang. Saya akan menyambut beberapa saran dan akan dengan senang hati melakukan kesalahan kecil jika saya bisa.
sql-server
image
marko
sumber
sumber
Jawaban:
Ada makalah yang sangat bagus oleh Microsoft Research bernama To Blob atau Not To Blob .
Kesimpulan mereka setelah sejumlah besar tes kinerja dan analisis adalah ini:
jika gambar atau dokumen Anda biasanya berukuran di bawah 256KB, menyimpannya dalam kolom database VARBINARY lebih efisien
jika gambar atau dokumen Anda biasanya berukuran lebih dari 1 MB, menyimpannya dalam sistem file lebih efisien (dan dengan atribut SQL Server 2008 FILESTREAM, mereka masih di bawah kontrol transaksional dan bagian dari database)
di antara keduanya, ini sedikit tergantung tergantung pada penggunaan Anda
Jika Anda memutuskan untuk memasukkan gambar Anda ke tabel SQL Server, saya akan sangat menyarankan menggunakan tabel terpisah untuk menyimpan foto-foto itu - jangan menyimpan foto karyawan di tabel karyawan - simpan di tabel terpisah. Dengan begitu, tabel Karyawan dapat tetap ramping dan berarti serta sangat efisien, dengan asumsi Anda tidak selalu perlu memilih foto karyawan juga, sebagai bagian dari kueri Anda.
Untuk filegroup, lihat Arsitektur File dan Filegroup untuk intro. Pada dasarnya, Anda akan membuat basis data dengan grup grup terpisah untuk struktur data besar sejak awal, atau menambahkan grup grup tambahan nanti. Sebut saja "LARGE_DATA".
Sekarang, setiap kali Anda memiliki tabel baru untuk dibuat yang perlu menyimpan kolom VARCHAR (MAX) atau VARBINARY (MAX), Anda dapat menentukan grup file ini untuk data besar:
Lihat intro MSDN di filegroup, dan mainkan!
sumber
Saya jatuh ke dalam dilema ini sekali, dan meneliti sedikit di google untuk pendapat. Apa yang saya temukan adalah bahwa memang banyak yang melihat menyimpan gambar ke disk lebih baik untuk gambar yang lebih besar, sementara mySQL memungkinkan akses yang lebih mudah, khususnya dari bahasa seperti PHP.
Saya menemukan pertanyaan serupa
MySQL BLOB vs File untuk Menyimpan Gambar PNG Kecil?
Putusan akhir saya adalah bahwa untuk hal-hal seperti gambar profil, hanya gambar persegi kecil yang perlu ada di sana per pengguna, mySQL akan lebih baik daripada menyimpan banyak jempol di hdd, sedangkan untuk album foto dan hal-hal seperti itu, folder / File gambar lebih baik.
Semoga ini bisa membantu
sumber
Saya lebih suka menyimpan gambar dalam direktori, lalu menyimpan referensi ke file gambar dalam database.
Namun, jika Anda menyimpan gambar dalam basis data, Anda harus mempartisi basis data Anda sehingga kolom gambar berada di file terpisah.
Anda dapat membaca lebih lanjut tentang menggunakan filegroup di sini http://msdn.microsoft.com/en-us/library/ms179316.aspx .
sumber
Mengapa bisa baik untuk menyimpan gambar dalam database dan tidak dalam katalog di server web.
Anda telah membuat aplikasi dengan banyak gambar yang disimpan dalam folder di server, yang telah digunakan klien selama bertahun-tahun.
Sekarang mereka mendatangi Anda. Server mereka telah hancur dan mereka harus mengembalikannya ke server baru. Mereka tidak memiliki akses ke server lama lagi. Satu-satunya cadangan yang mereka miliki adalah cadangan basis data.
Anda tentu saja memiliki sumber dan dapat dengan mudah menyebarkannya ke server baru, menginstal SqlServer dan mengembalikan database. Tapi sekarang semua foto hilang.
Jika Anda telah menyimpan gambar di SqlServer semuanya akan berfungsi seperti sebelumnya.
Hanya 2 sen saya.
sumber
Ketika menyimpan gambar dalam SQL Server jangan gunakan tipe data 'gambar' , menurut MS itu sedang dihapus dalam versi baru dari SQL server. Gunakan varbinary (maks) sebagai gantinya
https://msdn.microsoft.com/en-us/library/ms187993.aspx
sumber
Opsi lain dirilis pada 2012 yang disebut tabel File: https://msdn.microsoft.com/en-us/library/ff929144.aspx
sumber
Sementara masalah kinerja valid, alasan sebenarnya dalam praktiknya bahwa Anda harus menghindari menyimpan gambar dalam database adalah untuk alasan manajemen basis data. Basis data Anda akan tumbuh sangat cepat dan biaya database jauh lebih banyak daripada penyimpanan file sederhana. Pencadangan dan pemulihan basis data jauh lebih mahal dan memakan waktu daripada pemulihan cadangan file. Dalam keadaan darurat, Anda dapat memulihkan basis data yang lebih kecil jauh lebih cepat daripada yang penuh dengan gambar. Bandingkan 1 TB penyimpanan file di Azure ke database 1 TB dan Anda akan melihat perbedaan besar dalam biaya.
sumber
Dalam pengalaman saya, menyimpan ke url ke gambar yang disimpan di lokasi lain adalah cara terbaik untuk proyek sederhana.
sumber