Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySql+PHP] Blob, Blob - przechowywanie obrazków w bazie danych
mariopce
post
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)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nevt
post
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 19:23