![]() |
![]() |
![]()
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: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 18.07.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje Ci za odpowiedz,
jednakże to jest znowu tylko pewna teoria nie poparta żadnymi danymi (liczbami). Na każdej stornie internetowej tak jest: - wymiana zalet, wad baz danych, systemu plików i podsumowanie które bierze się z rozumowania autora artykułu notatki. Nawet na wiki nie ma danych tylko to: "Typ blob rozpowszechnił się, kiedy w miarę rozwoju technologii dyski twarde stały się coraz większe i coraz tańsze, a komputery znacznie zwiększyły wydajność, jednak stosowanie blobów wciąż nie jest zalecane przez specjalistów". 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 ? A jeśli bazy danych są wolniejsze to o ile są wolniejsze, może są tylko wolniejsze o kilka milisekund, a ponieważ bezpieczeństwo plików w bazie danych jest lepiej zarządzane to może większość programistów nie ma racji, twierdząc że blob nie jest dobry do przechowywania plików binarnych "ponieważ to jest mniej wydajne". Proszę oto niektóre cytaty i strony z cytatów: ”Niektórzy twierdzą, że nie powinno się przechowywać grafiki w bazie, bo grafika znacznie obciąża serwer MySQL. Duża ilość obrazków i innych plików faktycznie potrafi znacznie obciążyć bazę. Czasami jednak trzeba się oprzeć na bazie danych. ” http://www.diaboli.pl/index.php?site=blob ”Wiem, że ludzie nie polecają umieszczania zdjęć wewnątrz bazy danych - jednak ja w firmie musiałem i opracowałem skrypt do uploadu zdjęcia do bazy MySQL oraz sposób wyświetlania zdjęcia. No ale czasami trzeba robić według wymagań szefa. ” http://forum.kataloog.info/viewtopic.php?t=14 Z nich jasno wynika że programiści, uważają blob za mniej wydajny (wolniejszy). Spotkałem się z innymi zdaniami krytyki dla ludzi którzy chcieli wykonać skrypt galerii przechowując obrazki w BLOBie, nawet na tym forum (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) , ale nie ma konkretnie podanej różnicy ładowania obrazka z bazy danych i z systemu plików. Ostatecznie zrobiłem swój skrypt który testuje wczytywania plików z bazy danych z kolumny typu blob i z bazy danych ścieżkę, a później z systemu plików. Niestety na razie źle mi mierzy czas pobrania obrazka z bazy danych a właściwie to mierzy tylko wykonanie wyświetlenia tekstu. "<img src='skrypt.php'" /> Tak czy siak, po dzień dzisiejszy nie mam pojęcia co jest szybsze, tzn nie mam dowodów że szybsza jest baza danych, i nie mam dowodów że szybszy jest system plików. A Dr. którego mam przekonać żąda dowodów. Proszę jeśli widzieliście gdzieś w necie, kiedyś pomiar czasu dostępu, pobierania plików z bazy danych i z systemu plików to proszę wklejcie linka. Jeszcze jedno dodatkowe pytanie: Jak baza danych pobiera dane z bloba. Tzn są dwie wersje: 1) a) Otwiera połączenie (lub korzysta z puli połączeń) (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) Wyciąga dane z bloba zapisuje na dysk/bufor c) zamyka połaczenie d) przesyła dane z bufora/dysku. 2) Wersja 2 a) Otwiera połączenie (lub korzysta z puli połączeń) (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) Wyciąga dane z bloba i przesyła dane do usera c) zamyka połaczenie Dlaczego pytam, ponieważ połączenie do bazy danych kosztuje (ileś ramu, w zależności od wersji bazy danych od kilkukilo do kilkuMB ) jeśli baza danych nie nie musi mieć otwarte połączenie na czas przesyłania danych z bloba to blokuje pule połączeń do bazy. Jeśli natomiast dane zapisuje najpierw na dysk, i później z niego odczytuje dane, to znowu zastanawia mnie szybkość tego rozwiązania. A może baza danych pobiera tylko wskażnik początku danych i czyta dane bezpośrednio z dysku twardego. Masakra, mam jakiegoś pecha do google, pytania nie są proste i oczywiste a wujek google serwuje mi tylko gdybanie. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 20:56 |