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


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

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 (6 earlier) <5cc08eba$0$523$65785112@news.neostrada.pl> <slrnqc1a43.2amm.wojciech.bancer@pl-test.org> <5cc0de68$0$539$65785112@news.neostrada.pl> <slrnqc42f0.2lii.wojciech.bancer@pl-test.org> <5cc24956$0$526$65785112@news.neostrada.pl>
Organization None
Date 2019-04-26 10:17 +0200
Message-ID <slrnqc5fkk.27vm.wojciech.bancer@pl-test.org> (permalink)

Show all headers | View raw


On 2019-04-25, Kviat <Kviat> wrote:

[...]

>> Ciachnąłem, bo dyskutujemy o dwóch różnych światach.
> Myślałem, że dyskutujemy o triggerach/sp.

Tak, dyskutujemy, ale wszystko ma jakiś kontekst.
Tutaj raczej domyślnie należy założyć że nie dyskutujemy o aplikacji
desktopowej (skoro mowa o Symfony i Doctrine).

>> To co pisałem o triggerach odnosiło się do świata serwerowo-webowego,
>> nie do desktopowych aplikacjach klienckich przeznaczonych do działania
>> w intranecie.
>
> Twoją wypowiedź odebrałem tak, że triggery/sp są złe bo są złe, 
> niezależnie od "świata".

Ale ja podałem argumenty dlaczego są złe, a nie "bo są złe".
Natomiast można założyć, że w świecie o którym mówisz, ze względu
na niewielkie rozproszenie i małą skalę są to wady nieistotne.

[...]

> Nazwałeś to legacy, bo akurat siedzisz tam gdzie siedzisz.
> To, że zajmujesz się akurat taką, a nie inną działką, nie czyni działek 
> którymi się nie zajmujesz legacy.

Semantyka. Wady triggerów pozostają ich wadami, ale w warunkach "desktopowych"
nie wymyślono jeszcze zgrabnego rozwiązania, więc się one utrzymują.

>> W systemach webowych (including PHP) zastąpione przez tworzenie aplikacji
>> nadrzędnej/API, a nie przez radosne udostępnianie portu 3306 całemu
>> światu i myślałem że to oczywiste że rozmawiamy współczesnych systemach
>> webowych.
>
> Systemy webowe, to nie tylko html i js w przeglądarce + php.

Tak, wiem. Podałem Ci też przykład aplikacji mobilnych. Nadal.

> W aplikacjach webowych, a ściślej: przeglądarkowych, jesteś właściwie 
> skazany na warstwę pośrednią jaką jest np. php w dostępie do bazy 
> danych.

Ależ wodzu, co wódż? Otwieramy port 3306/5432 i jedziesz.

> Na drodze: przeglądarka->baza danych, to właśnie php pełni 
> niejako naturalną rolę api dla aplikacji "przeglądarkowej".
> Nie ma innego sposobu.

Nie możesz tego zrobić jedynie dlatego że przeglądarki wprowadzają ograniczenia
w komunikacji, a nie dlatego że to niemożliwe w języku (patrz https://github.com/sindresorhus/awesome-nodejs#database ).
Jakby consensus środowiska był taki, że bezpośrednia praca z DB "to jest to",
to przeglądarki nie miałyby takich ograniczeń.

W electronie (taki chrome embedded) tych ograniczeń nie masz i z poziomu
takiej przeglądarki możesz korzystać z ww modułów i słać zapytania do bazy
bezpośrednio [1]).

[...]

> Te wszystkie dywagacje, czy z api czy bez api, czy przez internet czy 
> nie przez internet, czy to php czy tcl (btw. w tcl jeszcze parę lat 
> temu, całkiem niedawno, był robiony portal polska.pl), nie mają nic 
> wspólnego z tym, czy triggery/sp są użyteczne (potrzebne) czy nie są. A 
> już tym bardziej czy są dobre czy złe.

Oczywiście że mają. Już pisałem, serwery baz, są elementem który się *najtrudniej*
skaluje "wszerz" (i wielokrotnie pisałem o jakiej wydajności piszę - nie o jako tej
rozumianej przez umiejętność obsługi dużych grup użytkowników i stosunkowo łatwy/automatyczny
mechanizm skalowania tego). A zarówno master-slave, czy partycjonowanie wprowadzi takie 
same opóźnienia triggerów (czyli eliminuje ich jedyną, "zaletę" szybkości komunikacji),
bez eliminowania wad triggerów.

>> Jak masz merytoryczne argumenty dlaczego we współczesnym systemie webowym
>> trigger byłby lepszy w użyciu od API, to chętnie posłucham,
>
> Przykład podałem w poprzednim poście. Najprostszy z możliwych z 
> aktualizacją pola stanu magazynowego po dodaniu/zmianie/skasowaniu 
> rekordu z towarem.

I jak myślisz, jak Ci to zadziała na sklepie wielkości Amazona?

> Nie twierdzę że zawsze i wszędzie jest lepszy. Twierdzę, że są takie 
> sytuacje, że jest lepszy. Silnik bazy danych zrobi to szybciej i pewniej 
> niż najbardziej wypasione api.

Piszemy o różnych rodzajach wydajności.

> Szczerze mówiąc, kompletnie nie rozumiem idei implementowania takiej 
> operacji w api, skoro sam silnik bazy danych to może zrobić (o 
> implementowaniu tego w aplikacji klienckiej w ogóle nie wspominam).

Ja też nie wspominam o aplikacjach klieckich, więc bądź łaskaw
nie używać argumentów, których nie stosowałem.

[...]

> W ten sposób można dojść do wniosku, że niepotrzebnie bazie danych zleca 
> się pilnowanie relacji między tabelami i niepotrzebne są pola primary 
> key i foreign key, czy on delete cascade itd, bo przecież to samo może 
> robić api...

O popatrz. I zaraz odkryjesz dlaczego mongodb w ostatnich latach stało
się tak popularne. :) A jak pogrzebiesz trochę dalej, to zobaczysz dlaczego
coś takiego jak elasticsearch ma raację bytu.

I dlaczego ostatnio dodawane do platform cloud zarządzalne przez providera
bazy cloud (Amazon DynamoDB, Google Firebase, Azure CosmosDB) są właśnie
bazami nie-relacyjnymi, na których nie odpalisz wbudowanych triggerów.

Dlaczego google używa baz nierelacyjnych do swoich wyszukiwarek (bigtable)
https://cloud.google.com/bigtable/

We wszystkich przypadkach odpowiedź jest taka sama: tradycyjne serwery sql
"nie wyrabiają" i nie potrafią sprostać potrzebom.

> Tylko po co w takim razie implementują te bajery w kombajnach 
> bazodanowych i bez sensu tymi nikomu niepotrzebnymi, wręcz złymi 
> rzeczami jakimi są triggery/sp, zaśmiecają maszyny, zamiast dać proste 
> składowisko danych, a o resztę niech się martwi maszyna z api...

Tam gdzie naprawdę musisz mieć skalowalne rozwiązanie, to właśnie
tak jest. I nie jedna "maszyna z API". Wrzucę kod na:

https://cloud.google.com/functions/
https://aws.amazon.com/lambda/

i w zależności od zapotrzebowania dostanę od 1 do 1000 instancji,
albo i więcej. Bez robienia czegokolwiek.

Albo (jak potrzebujesz) jesteś w stanie udostępniać dane klientom w czasie 
rzeczywistym bez potrzeby odpytywania przez klienta:

https://firebase.google.com/docs/database/

Tego wszystkiego nie zrealizujesz w tracydyjnym modelu SQL,
nie dlatego że pojedyncze bajtowe operacje są mniej/bardziej
wydajne, tylko dlatego że jest to narzędzie o niewielkiej
skalowalności.

-- 
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