Article View: pl.comp.lang.php
Article #230911Re: dane binarne w bazie?
From: PawelS cbrbob(at)wbcd(dot)pl
Date: Sat, 21 Feb 2015 06:08
Date: Sat, 21 Feb 2015 06:08
93 lines
5504 bytes
5504 bytes
Lemat pisze: > PawelS cbrbob(at)wbcd(dot)pl wrote: > >> Lemat pisze: >>> jivanmukta@poczta.onet.pl wrote: >>> >>>> Piszę system o nieruchomościach w CodeIgniterze. W bazie (MySQL) >>>> przechowuję m.in. dane o nieruchomościach, dla których użytkownik może >>>> załączyć kilka zdjęć/filmów. Ktoś mi polecił, żebym przechowywał te >>>> obrazki w systemie plików a nie w bazie, jednak ostatnio czytałem >>>> pewną książkę o PHP5+MySQL i tam polecają rozwiązanie z >>>> przechowywaniem danych binarnych w bazie. >>> teatrzyk zielona gęś przedstawia przypadek trzymania w systemie plików: >>> >>> P - przeglądarka >>> A - apacz >>> PHP - PHP >>> M - MySQL >> [...] >>> M - niech no tylko je przekształcę do odpowiedniego formatu >>> PHP - tylko 8GB a i tak wyglada jak najbliższy kernel panic >>> PHP - co to ja miałem, jakieś tam parametry od-do były, czekaj, ale >>> programista ciul jeden nie raczył w ogóle tego oprogramować, ciul z tym >>> jedziemy pełnym plikiem. >> OK, tu usprawiedliwiam Twój tok rozumowania, >> ale mógłbym mimo wszystko trochę popolemizować. >> Skoro już zadał sobie trud by te obrazki do bazy wstawić, >> to przypuszczam, że może mieć świadomość istnienia >> funkcji w bazie danych typu SUBSTR()/SUBSTRING(), > > na danych binarnych?! to są funkcje do obsługi tekstów a nie danych > binarnych. Po pierwsze walisz z muchy do armaty a po drugie istnieje wysokie > prawdopodobieństwo zjebania tego (dane w bazie są wyeskejpowane, tysięczny Przepraszam za może głupie pytanie, ale czy sugerujesz, że po odczytaniu danych należy przeprowadzić jeszcze operację odwrotną do: "wyeskejpowane", jeśli nie to poniżej: > znak nie będzie zawsze tysięcznym bajtem). to chyba zależy od kodowania (popraw mnie jeśli się mylę) ? >> i mógłby to oprogramować zwłaszcza w przypadku >> przechowywania w bazie danych dużych plików. >> PS: oczywiście również nie jestem za takim rozwiązaniem, >> a co przechowywania plików w systemie plików oraz uprawnień >> było to już poruszane w wątku o temacie: "obrazek PNG w bazie MySQL". >> > > Do czego się nadaje baza danych: Napisałem, że "nie jestem za takim rozwiązaniem", ale niestety chyba ten fragment posta nie dotarł na grupę ... > 1) do przeszukiwania > baza danych ma wbudowane mechanizmy indeksowania, dzięki którym łatwo i > szybko jest coś w niej wyszukać. W danych binarnych nie da się niczego > wyszukać. > > 2) Wielodostęp > baza danych ma mechanizmy umożliwiające odczyt i zapis danych jednocześnie. > Trudno mi sobie wyobrazić problem wymagający czegoś podobnego dla obrazków w > bazie. > > 3) do obliczeń - baza danych jest genialnym narzędziem do statystyk, > raportów i innych tego typu cudów. Relacyjność umożliwia składanie (join) > tabel. Składanie obrazków robi się w photoshopie. > > 4) Mechanizmy replikacji, klastrowania i inne high-availability sztuczki... > a trzymanie ogromnych danych binarnych skutecznie je zarzyna / stanowi > całkowite zaprzeczenie tych idei. > > Równie dobrze da się to osiągnąć trzymając obrazki w plikach a ścieżki oraz > dodatkowe informacje np tagi, wymiary - w bazie. > > Baza napakowana danymi binarnymi puchnie i hujowo się ją przenosi > phpMyAdminem (memory_limit+post_max_size). > > Obciąża niepotrzebnie serwer operacjami - jak zaczynałem pracę na stanowisku > programisty php to dostałem do poprawki serwis, który trzymał obrazki w > bazie. Ten jeden serwis potrafił rozpieprzyć cały serwer. > Zły dotyk boli całe życie. > > Taka baza danych hujowo się backupuje (standardowymi narzędziami) - za > każdym razem trzeba zrzucić te kilka gigabajtów danych do pliku - > niezależnie od tego czy się coś zmieniło czy nie. > > Obecnie mam na tapecie serwis www wykonany w technologii zope+plone. Twórcom > tego czegoś wydawało się, że umieją zrobić wydajną bazę danych obiektów > binarnych na jednym pliku. Ponieważ ten plik ma już 3GB to kilka operacji > zapisu (nawet nie jednoczesnych a kolejnych) do niego potrafi skutecznie > rozpieprzyć ten serwis. I oczywiście klient ma pretensje, że to pewnie wina > serwera. > > Czy użyłem wystarczająco wiele razy "hujowo" aby podkreślić, że danych > binarnych nie trzyma się w bazie? Podziękował, cytuję raz jeszcze, co by pozostało dla potomnych.
Technical Details
Message-ID:
<mc97cs$5mj$1@node1.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<36897656-eb47-48fd-8bc1-410b96a612ce@googlegroups.com> <54dda047$0$12961$65785112@news.neostrada.pl> <mbnk10$9bd$1@node1.news.atman.pl> <54dfb73e$0$2177$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: "PawelS cbrbob(at)wbcd(dot)pl" <fake@email.org> Newsgroups: pl.comp.lang.php Subject: Re: dane binarne w bazie? Date: Sat, 21 Feb 2015 07:08:28 +0100 Organization: ATMAN - ATM S.A. Lines: 93 Message-ID: <mc97cs$5mj$1@node1.news.atman.pl> References: <36897656-eb47-48fd-8bc1-410b96a612ce@googlegroups.com> <54dda047$0$12961$65785112@news.neostrada.pl> <mbnk10$9bd$1@node1.news.atman.pl> <54dfb73e$0$2177$65785112@news.neostrada.pl> NNTP-Posting-Host: host-89-231-96-70.warszawa.mm.pl Mime-Version: 1.0 X-Trace: node1.news.atman.pl 1424498909 5843 89.231.96.70 (21 Feb 2015 06:08:29 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sat, 21 Feb 2015 06:08:29 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (X11/20110622) In-Reply-To: <54dfb73e$0$2177$65785112@news.neostrada.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit