![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 18.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam pytanie, ostatnio wdałem się w interesującą konwersacje z Dr. (nie ważne którym ), który powiedział że lepiej przechowywać obrazki (jpg i inne ) w bazie danych niż w systemie plików. Oczywiście że są zalety i wady tego rozwiązania, lecz mnie interesuje prędkość tych rozwiązań. Ogólnie wiadomo że szybciej powinien działać sposób taki: Zapisujemy obrazek do systemu plików (czyli na dysk twardy) i ścieżkę do bazy danych. I jak chcemy wyświetlić obrazek na stronie to pobieramy z bazy danych ścieżkę do obrazka, i ładujemy obrazek. Ogólnie to zawsze tak robiłem (mysql + php). Szukałem co jest lepsze (szybsze), w necie przechowywanie obrazków w BLOBie czy w Systemie plików. I tutaj jest problem, ogólnie większość programistów piszę że blob jest wolniejszy. Ale UWAGA (IMG:http://forum.php.pl/style_emoticons/default/exclamation.gif) ! nigdzie nie podaję linków do jakiś statystyk, porównań czasu. Przeszukałem setki stron internetowych i nadal nie wiem, co jest szybsze a co wolniejsze i o ile, bo jeśli tylko o 0.00001 s to nie ma co sobie głowę zawracać, ale jeśli o 1 rząd czy o 2 rzędy to już jest problem. Myślałem że mojego Dr. od razu uciszę argumentem wydajności, i szybkości, jednak nigdzie nie jest czarno na białym napisane, co jest szybsze (wydajniejsze). 2) pytanie, który obrazek zajmie mniej miejsca. Ten w bazie danych, czy w systemie plików. 3) czy obrazek z bazy danych, może być chashowany w przeglądarce. (tzn. z moich eksperymentów, prób - nie ponieważ za każdym odświeżeniem strony jest wczytywany na nowo. Ale może ktoś ma konkretne dane. Porównania czasów) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
Cytat Skąd mam wiedzieć co tak naprawdę używać, w aplikacji php, java skoro nigdzie nie mam porównania czasów dostępu do danych (plików). Co jest szybsze ? Wydawało mi się, że odpowiedziałem ci na to pytanie... Nieistotne, co jest szybsze, bo bez względu na wariant pobrania pliku (baza albo system plików) czas tego pobrania będzie o rząd wielkości MNIEJSZY od czasu jego PRZESŁANIA przez internet. Stąd wybór jednej albo drugiej metody ma MARGINALNY wpływ na szybkość przesłania obrazków do przeglądarki. Żądasz liczb? Proszę bardzo. Typowe dyski z interfejsem SATA oferują przepustowość rzędu 150 Mb/s, a średni czas wyszukiwania jest rzędu 10ms. Plik graficzny o rozmiarze 100kB (kilobajtów), to w rzeczywistości 800kb (kilobitów) czyli 0,8Mb. Zatem czas pobrania tego pliku "do pamięci" jest rzędu 15 ms (10ms wyszukanie, 5ms odczyt). Zakładając, że zgodnie z marudzeniem leniwych programistów odczyt z bazy jest zacznie mniej wydajny (a naprawdę chodzi tylko o to, że trzeba trochę się wysilić i dodatkowego kodu napisać) - niech pobranie z bazy zajmie nam 30ms. A jaka jest typowa przepustowość łącza internetowego po stronie klienta (użytkownika naszego systemu)? Optymistycznie zakładam, że 2Mb/s. Tym samym przesłanie 100kB obrazka zajmie ok. 0,4 sek. (400ms - teoretycznie, w rzeczywistości ok 1 000 ms). Mam nadzieję, że teraz jasno widzisz, że na wydajność podtawowy wpływ ma prędkość transferu przez sieć, czas pobrania obrazka z pliku lub z bazy jest w zasadzie NIEISTOTNY. Powodzenia. Ten post edytował nevt 16.03.2008, 22:51:53 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 19:23 |