Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #16192

Re: Symfony 4 - jak projektować bazę danych pod Doctrine?

Newsgroups pl.comp.lang.php
From Wojciech Bancer <wojciech.bancer@gmail.com>
Subject Re: Symfony 4 - jak projektować bazę danych pod Doctrine?
References <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <5cbf10a8$0$482$65785112@news.neostrada.pl> <slrnqbuasg.28r5.wojciech.bancer@pl-test.org> <5cc00030$0$476$65785112@news.neostrada.pl>
Organization None
Date 2019-04-24 15:13 +0200
Message-ID <slrnqc0o86.drp.wojciech.bancer@pl-test.org> (permalink)

Show all headers | View raw


On 2019-04-24, ww <ww@o2.pl> wrote:

[...]

>> To jest tak zwana zła praktyka. Potem inny programista siada i "rzeczy dzieją
>> się magicznie". Zresztą jest to jeden z głównych powodów by nie używać triggerów
>> (obok tego że to bazy danych są zazwyczaj najmniej skalowalnym i najwęższym
>> gardłem systemu i nie należy go nadmiernie obciążać).
>
> Znam wiele "dobrych praktyk", które niestety w nieidealnej 
> rzeczywistości nie chcą się sprawdzać. Jeżeli dostajesz tony danych
> to niestety czasem trzeba poświecić przejrzystość na rzecz wydajności.

Problem w tym, że niektórzy uznają pojęcie "wydajność" za bardzo jednotorowe.

>> W świecie w którym możesz mieć "na zawołanie" 1000 funkcji / kontenerów robiących coś
>> równolegle na infrastrukturze cloud, odpalanych w sekundy, ale np. tylko 1-2 serwery baz
>> danych, to jest oczywiste że dużo bardziej skalowalne są te ostatnie i należy je odciążyć
>> maksymalnie, a nie "dokładać" im niepotrzebnej tam roboty.
>
> Niepotrzebnej tam roboty? U mnie triggery i procedury wbudowane robią 
> zwykle rzeczy, które ze względu na optymalność muszą się odbywać jak 
> najbliżej bazy, i tam właśnie są najoptymalniejsze.

Podałem swoje argumenty dlaczego tak uważam i dlaczego uważam triggery
za mniej wydajne. Nie mam ochoty się powtarzać. Bazy danych są najbardziej
obciążonym kawałkiem w typowych aplikacjach i nie należy ich dociążać.

Triggery są też złe pod tym kątem, że operują na przestrzeni globalnej,
i (przy mniej ogarniętych w DBA programistach) jest ciężko nad nimi 
zapanować, nie zapewniają mechanizmów ułatwiających ich kontrolę, 
wersjonowania, nie pozwalają na efektywną pracę w zespole. 
Ogólnie mają bardzo dużo wad i niewiele zalet.

Jakby taka niskopoziomowa wydajność miała tak duże znaczenie,
to nie pisałbyś w PHP, czy node.js tylko w C.

Poza tym teoria że "trigger" jest 10-krotnie wydajniejszy wydaje mi się 
cokolwiek mocno naciągana. Przepraszam wydajniejszy w czym? Zapytania
SQL wytworzone przez trigger zajmują tyle samo czasu co wysłane przez
aplikację, różnica wynika co najwyżej z czasu dostępów do usługi (co 
nie jest chyba specjalnie istotne).

Tak, narzut uruchamiania aplikacji jest czymś co się odbija 
na wydajności, ale tą aplikację i tak uruchamiamy, jak chcemy
uruchomić query.

Narzut obiektowości w aplikacji wprowadza pewną karę wydajności,
ale jest on dołożony z konkretnych powodów, których nie spełnia
wykorzystanie triggera (ani nie spełnia pisanie aplikacji
w asemblerze, czy w czystym C).

A że trigger jakoś istotnie szybciej przeiteruje po tablicy 
w pamięci niż aplikacja, to wybacz nie wierzę. Język interpretowany 
nie ma dostępu do pamięci "gorszego sortu" tylko tej samej,
chyba że serwer DB stoi na innej infrastrukturze.

>>> I doctrine wspiera tworzenie różnych "nieporzenoszalnych"
>>> elementów składni SQL pod dany silnik.
>> 
>> Nie tyle "wspiera" co "umożliwia".
>
> To dokładnie to samo. Jeśli coś da się zrobić za pomocą wbudowanych
> narzędzi to jest to wspierane.

Nie to miałem na myśli. Wspierane = idzie zgodnie z ideą za jaką idzie
doctrine. Jak zaczniesz stosować swoje hacki, to skończysz na tym, że
np. inne biblioteki/pluginy zależne od Doctrine, które może zechcesz 
użyć mogą się wysypać, bo nie zachowałeś zawartego w Doctrine 
kontraktu. No i w razie problemów na linii core <-> Twoja modyfikacja 
jesteś zdany na siebie.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

Back to pl.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-20 20:27 +0200
  Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-21 14:25 +0200
    Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-21 17:34 +0200
      Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-21 19:49 +0200
        Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-22 20:58 +0200
          Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-22 21:14 +0200
    Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-22 23:18 +0200
      Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-23 08:26 +0200
        Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-23 18:37 +0200
          Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-23 19:21 +0200
            Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-23 22:01 +0200
              Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-23 22:31 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Roman Tyczka <noemail@because.no> - 2019-04-24 08:54 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-24 09:20 +0200
    Re: Symfony 4 - jak projektować bazę danych pod Doctrine? ww <ww@o2.pl> - 2019-04-23 15:18 +0200
      Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-23 17:13 +0200
        Re: Symfony 4 - jak projektować bazę danych pod Doctrine? ww <ww@o2.pl> - 2019-04-24 08:20 +0200
          Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-24 15:13 +0200
            Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-24 18:28 +0200
              Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-24 20:18 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-25 00:08 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-25 21:26 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-26 01:57 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 10:17 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-26 12:58 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 17:18 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-26 20:04 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 23:26 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-26 20:09 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 22:26 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-27 10:27 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-27 13:58 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-27 15:39 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-27 16:44 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Roman Tyczka <noemail@because.no> - 2019-04-28 13:16 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-28 14:18 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Kviat - 2019-04-28 15:06 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-28 15:31 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-26 11:21 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 13:16 +0200
      Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-23 19:10 +0200
        Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-23 19:51 +0200
          Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-23 22:10 +0200
            Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-23 22:38 +0200
              Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-24 19:03 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-24 21:19 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-25 22:49 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-26 01:50 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-26 23:58 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Borys Pogoreło <borys@pl.edu.leszno> - 2019-04-30 15:35 +0200
            Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-23 22:47 +0200
              Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-24 19:29 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-24 20:01 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-25 23:14 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-26 09:32 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-27 00:37 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-28 14:50 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-30 01:16 +0200
                Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Wojciech Bancer <wojciech.bancer@gmail.com> - 2019-04-30 10:38 +0200
        Re: Symfony 4 - jak projektować bazę danych pod Doctrine? ww <ww@o2.pl> - 2019-04-24 08:24 +0200
          Re: Symfony 4 - jak projektować bazę danych pod Doctrine? Marek S <precz@spamowi.com> - 2019-04-24 19:41 +0200

csiph-web