Article View: pl.comp.lang.php
Article #230910Re: dane binarne w bazie?
From: Lemat
Date: Sat, 14 Feb 2015 20:59
Date: Sat, 14 Feb 2015 20:59
90 lines
4866 bytes
4866 bytes
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 znak nie będzie zawsze tysięcznym bajtem). > 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: 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? -- Pozdrawiam Lemat
Technical Details
Message-ID:
<54dfb73e$0$2177$65785112@news.neostrada.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin2!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.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>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin2!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail From: Lemat <#@lemat.priv.pl> Organization: lemat.priv.pl Date: Sat, 14 Feb 2015 21:59:59 +0100 User-Agent: KNode/4.14.1 Subject: Re: dane binarne w bazie? Newsgroups: pl.comp.lang.php References: <36897656-eb47-48fd-8bc1-410b96a612ce@googlegroups.com> <54dda047$0$12961$65785112@news.neostrada.pl> <mbnk10$9bd$1@node1.news.atman.pl> MIME-Version: 1.0 Lines: 90 Message-ID: <54dfb73e$0$2177$65785112@news.neostrada.pl> NNTP-Posting-Host: 79.189.200.118 X-Trace: 1423947582 unt-rea-b-01.news.neostrada.pl 2177 79.189.200.118:51915 X-Complaints-To: abuse@news.neostrada.pl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit