Saya telah membuat kecil situs demo dan di atasnya saya menyimpan gambar dalam sebuah gambar kolom pada sql server. Beberapa pertanyaan yang saya miliki adalah...
Ini adalah ide yang buruk?
Hal itu akan mempengaruhi kinerja di situs saya ketika itu tumbuh?
Alternatif akan menyimpan gambar pada disk dan hanya menyimpan referensi ke gambar dalam database. Ini harus menjadi umum dilema yang banyak orang miliki. I'd selamat datang beberapa saran dan benar-benar akan senang untuk membuat lebih sedikit kesalahan jika aku bisa.
Ada's benar-benar baik kertas oleh Microsoft Research yang disebut Untuk Blob atau Tidak Gumpalan.
Kesimpulan mereka setelah sejumlah besar tes kinerja dan analisis ini:
jika gambar atau dokumen yang biasanya di bawah ini 256KB dalam ukuran, menyimpannya dalam database VARBINARY kolom lebih efisien
jika gambar atau dokumen yang biasanya lebih dari 1 MB dalam ukuran, menyimpan mereka di filesystem lebih efisien (dan dengan SQL Server 2008's FILESTREAM atribut, mereka're masih di bawah transaksional kontrol dan bagian dari database)
di antara mereka berdua, itu's sedikit toss-up tergantung pada penggunaan anda
Jika anda memutuskan untuk menempatkan gambar anda ke dalam tabel SQL Server, saya akan sangat menyarankan menggunakan tabel terpisah untuk menyimpan foto-foto - jangan simpan foto karyawan di tabel karyawan - menjaga mereka di meja terpisah. Dengan cara itu, tabel Karyawan dapat tetap ramping dan berarti dan sangat efisien, dengan asumsi anda don't selalu perlu untuk memilih foto karyawan, juga, sebagai bagian dari pertanyaan anda.
Untuk filegroups, check out File dan Filegroup Arsitektur untuk sebuah intro. Pada dasarnya, anda akan membuat database dengan terpisah filegroup besar struktur data yang tepat dari awal, atau menambahkan tambahan filegroup nanti. Let's menyebutnya "LARGE_DATA".
Sekarang, setiap kali anda memiliki sebuah tabel baru untuk membuat yang membutuhkan untuk menyimpan VARCHAR(MAX) atau VARBINARY(MAX) kolom, anda bisa menentukan file ini group untuk data yang besar:
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
Check out MSDN intro di grup file, dan bermain-main dengan itu!
Aku jatuh ke dalam dilema ini sekali, dan diteliti cukup sedikit di google untuk pendapat. Apa yang saya temukan adalah bahwa memang banyak yang melihat menyimpan gambar ke disk yang lebih baik untuk gambar yang lebih besar, sementara mySQL memungkinkan untuk akses yang lebih mudah, khususnya dari bahasa seperti PHP.
Saya menemukan sebuah pertanyaan serupa
https://stackoverflow.com/questions/4659441/mysql-blob-vs-file-for-storing-small-png-images
Putusan akhir saya adalah bahwa hal-hal tersebut sebagai foto profil, hanya sebuah kotak kecil gambar yang harus ada per user, mySQL akan lebih baik daripada menyimpan banyak jempol di hdd, sedangkan untuk foto album dan hal-hal seperti itu, folder/file gambar yang lebih baik.
Semoga membantu
Saya akan lebih memilih untuk menyimpan gambar dalam sebuah direktori, kemudian menyimpan referensi ke file gambar dalam database.
Namun, jika anda menyimpan gambar di database, anda harus partisi database anda sehingga gambar kolom berada dalam file terpisah.
Anda dapat membaca lebih lanjut tentang menggunakan filegroups di sini http://msdn.microsoft.com/en-us/library/ms179316.aspx.
Ketika menyimpan gambar di SQL Server jangan gunakan 'gambar' datatype, menurut MS itu sedang dihapus di versi baru dari SQL server. Menggunakan varbinary(max) bukan
Mengapa hal ini dapat baik untuk menyimpan gambar pada database yang tidak di katalog di web server.
Anda telah membuat sebuah aplikasi dengan banyak gambar yang disimpan dalam folder di server, bahwa klien telah digunakan selama bertahun-tahun.
Sekarang mereka datang untuk anda. Mereka server telah dihancurkan dan mereka perlu untuk mengembalikannya pada server baru. Mereka tidak memiliki akses ke server lama lagi. Hanya cadangan yang mereka miliki adalah database backup.
Anda tentu saja sumber dan sederhana dapat menyebar ke server baru, menginstal SqlServer dan mengembalikan database. Tapi sekarang semua gambar hilang.
Jika anda telah menyimpan foto-foto di SqlServer semuanya akan bekerja seperti sebelumnya.
Just my 2 sen.
Pilihan lain yang dirilis pada tahun 2012 disebut File tabel: https://msdn.microsoft.com/en-us/library/ff929144.aspx
Sementara masalah kinerja yang valid alasan yang nyata dalam praktek yang harus anda hindari menyimpan gambar ke dalam database untuk manajemen database alasan. Database anda akan tumbuh sangat pesat dan database biaya jauh lebih dari yang sederhana penyimpanan file. Backup Database dan mengembalikan jauh lebih mahal dan memakan waktu dari file backup mengembalikan. Dalam keadaan darurat, anda dapat mengembalikan database yang lebih kecil jauh lebih cepat dari satu kembung dengan gambar. Bandingkan dengan 1 TB penyimpanan file pada Azure ke 1 TB database dan anda'll melihat perbedaan-perbedaan dalam biaya.