🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #230911

Re: dane binarne w bazie?

#230911
From: PawelS cbrbob(at)wbcd(dot)pl
Date: Sat, 21 Feb 2015 06:08
93 lines
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-mail
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>

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