🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232404
From: Kviat
Date: Thu, 25 Apr 2019 23:57
102 lines
6195 bytes
W dniu 25.04.2019 o 21:26, Wojciech Bancer pisze:
> On 2019-04-24, Kviat <Kviat> wrote:
> 
> [...]
> 
>> Błędne założenie, że nie istnieją aplikacje końcowe z dostępem do bazy,
> 
> Ciachnąłem, bo dyskutujemy o dwóch różnych światach.

Myślałem, że dyskutujemy o triggerach/sp.

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

> W końcu jesteśmy na grupie PHP. To co opisałeś to właśnie
> cecha systemów których development "ciągnie" się od lat 90-tych i coś
> co ja nazwałem legacy (bo ten model architektury powstał zanim internet
> stał się tym czym się stał).

I nie dość, że się będzie ciągnął jeszcze długo, to jeszcze przez długi 
czas będą powstawać nowe aplikacje.

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.

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

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

Aplikacja desktopowa też może być jak najbardziej aplikacją webową. Może 
się łączyć z bazą, jak wyżej wspomniałeś np. z MySql, bezpośrednio, 
przez VPN, albo... przez soap czy rest czy jakiekolwiek inne api 
(realizowane przez php czy cokolwiek innego, to rzecz wtórna).

To czy komunikacja leci przez internet czy po kablach w sieci lokalnej, 
to z programistycznego punktu widzenia nie ma kompletnie znaczenia.
To czy button "zapisz", "edytuj", "usuń" wyświetla się na canvasie 
przeglądarki, czy na formatce aplikacji desktopowej też nie ma znaczenia.

I oczywiście masz dużo racji, że w sieci publicznej jakim jest internet 
otwieranie portu bazy danych na świat jest co najmniej dyskusyjne, o 
tyle w sieci wewnętrznej ma dużo mniejsze znaczenie, albo nie ma żadnego.

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.

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

Możliwe, że gdzie indziej stawiamy granicę pomiędzy logiką biznesową 
operacji na danych, a samymi danymi.
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...
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...

Ciekawe, że nikt z producentów silników bazodanowych nie wpadł na to, że 
skoro dla "systemów webowych" możliwość tworzenia triggerów/sp to 
kompletnie niepotrzebny bajer, nie zrobili dla nich jakichś okrojonych 
wersji, skoro to taki gigantyczny rynek i w nowoczesnym świecie i tak 
tego nikt nie używa?

> ale dyskusja
> o "desktopach" to jak dyskusja o rowerach na grupie samochodowej. Nie
> ten świat.

Tak samo jak dyskusja o aplikacji webowej, gdy dyskusja dotyczy 
triggerów w bazie, a nie aplikacji.

Pozdrawiam
Piotr
Technical Details
Message-ID: <5cc24956$0$526$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
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> <slrnqc0o86.drp.wojciech.bancer@pl-test.org> <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>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Symfony 4 - jak projektować bazę danych
 pod Doctrine?
Newsgroups: pl.comp.lang.php
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> <slrnqc0o86.drp.wojciech.bancer@pl-test.org> <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>
From: Kviat
Date: Fri, 26 Apr 2019 01:57:09 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <slrnqc42f0.2lii.wojciech.bancer@pl-test.org>
Lines: 104
Message-ID: <5cc24956$0$526$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 5.173.152.208
X-Trace: 1556236630 unt-rea-b-01.news.neostrada.pl 526 5.173.152.208:11391
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit