Witam, w jednym z przykładów(dodawanie obrazków dla produktów) jaki miałem okazje przestudiować został użyty typ varbinary(MAX) do przechowywania wartości zdjęcia. Szkoda tylko, że nie zostało to w jakikolwiek sposób wyjaśnione, dlaczego taki a nie inny typ. Dlatego chciałbym zapytać was o zdanie z jakich typów korzystacie? A druga kwestia, dlaczego zdjęcie jest przechowywane w bazie danych a nie w folderze(image) servera? Jakie są z tego korzyści?
Rejencina napisał(a):
Witam, w jednym z przykładów(dodawanie obrazków dla produktów) jaki miałem okazje przestudiować został użyty typ varbinary(MAX) do przechowywania wartości zdjęcia. Szkoda tylko, że nie zostało to w jakikolwiek sposób wyjaśnione, dlaczego taki a nie inny typ. Dlatego chciałbym zapytać was o zdanie z jakich typów korzystacie?
Tu raczej nie ma innego wyboru. Bo niby jaki?
A druga kwestia, dlaczego zdjęcie jest przechowywane w bazie danych a nie w folderze(image) servera? Jakie są z tego korzyści?
Zaletą jest chyba to, że robiąc backup całej bazy zrobi się też backup grafik. Poza tym, ponoć dla obrazków mniejszych niż 1 MB jest to ponoć wydajniejsze. No i łatwiej też to zaimplementować, bo nie trzeba mapować danych z bazy na nazwy plików, itp.
Można też użyć Filestream, wtedy serwer sam trzyma dane typu varbinary(max)
w systemie plików.
Rejencina napisał(a)
A druga kwestia, dlaczego zdjęcie jest przechowywane w bazie danych a nie w folderze(image) servera? Jakie są z tego korzyści?
Poza wspomnianym przez @somekind backupem dochodzą jeszcze kwestie z zachowaniem spójności danych. Jeżeli zapisujesz plik na dysku w osobnym katalogu to musisz w jakiś sposób samodzielnie obsłużyć sytuację kiedy któryś z elementów nie zadziała
- nie poszedł SQL - musisz skasować plik
- nie udało się zapisać pliku - musisz KOLEJNYM SQL-em wycofać dane z bazy.
Generalnie problem transakcji rozproszonych.
Co do typów to w MS SQL jest coś co się nazywa filestream
(https://msdn.microsoft.com/en-us/library/gg471497.aspx ) i generalnie zostało wymyślone do składowania plików 1MB+