🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232433
From: Marek S
Date: Wed, 24 Apr 2019 17:29
75 lines
4576 bytes
W dniu 2019-04-23 o 22:47, Wojciech Bancer pisze:

> Ale po co Ci ORM w takim razie?
> Może chcesz mieć coś w tym stylu:
> http://www.pomm-project.org/

Bardzo ciekawe rozwiązanie. Zainteresuję się nim.
Ale jest jeszcze jedna rzecz. Moją intencją jest biegłe opanowanie 
Doctrine z uwagi na to, że w pracy będzie mi to potrzebne. Realizacja 
jakiegoś własnego przedsięwzięcia w Doctrine + PostgreSQL + 
optymalizacja korzystania z bazy przez Doctrine, byłaby dla mnie cenną 
lekcją.

Tak, pamiętam Twoje słowa. Zamiast przyspieszyć 10x procesy w bazie, np. 
poprzez dołożenie triggerów odciążających ORM, czy przebudowanie/dodanie 
indeksów, wolisz postawić 10 serwerów. Ja preferuję inne podejście: 
zoptymalizować bazę, a gdy już więcej się nie da - wtedy zająć się 
infrastrukturą sprzętową. Tego nie zmienię w sobie.

>> Nie rozumiem? Co to jest "coś" do Postgresa? Masz na myśli dedykowany
>> ORM? Nie da się Doctrine tak oprogramować, by korzystała z ficzerów
>> Postgresa?
> 
> Dać to się wszystko da, kwestia czasu i środków.
> Ale jak dotychczas chyba nie było zapotrzebowania, bo nic tego typu
> opensource nie powstało (albo nie zostało wystarczająco rozreklamowane).

Zostało rozreklamowane nie jeden raz. Ostatnio rowery trójmiejskie 
stanęły - to dobra reklama beztroskiego korzystania z wszelkich 
udogodnień przez programistów, bez wnikania, co de facto będzie działo 
się w tle. ORM ma to załatwić i już. A jak się coś sypnie, skończy się 
jakaś sekwencja bo za krótka była (ORM taką sobie wygenerował) etc... 
wtedy powstaje problem. Zanika rozumienie nawet prostych SQLi. Jak dla 
mnie to czarny scenariusz dla rozwoju. Nie działa - wyrzucamy i robimy 
kolejnego bubla.

> Doctrine ma kompatybilność jako cel nadrzędny, więc może jednak ten
> ORM nie jest dla Ciebie?

Tak jak napisałem powyżej - raczej muszę się go trzymać z uwagi na 
pojawiające się zadanie w najbliższej przyszłości. Im więcej będę 
potrafił wycisnąć z tego ORM, tym lepiej dla mnie. Opanowanie CRUD nie 
jest moim celem. Opanowanie Doctrine - już tak.

>> A mimo wszystko tenże ORM pozwala na użycie SQL'a w ramach własnych
>> struktur... Tyle tylko, że samemu trzeba te parę linijek kodu
>> niepotrzebnie dopisywać.
> 
> No to po co Ci ORM jak chcesz używać SQLa?

Ponieważ przyspiesza znacząco rozwój oprogramowania. Jeśli utworzę SQL, 
to nie oznacza to, że ORM nie będzie potrafił go wykorzystać w sposób 
zautomatyzowany. Przykład: obsługa zdarzeń ORMowych, którą mi sam 
zapodałeś.

> 
>>> Laravel ma dodatkową metodę statyczną Model::destroy($id).
>> No ale my o Doctrine... Z Laravelem już się pożegnałem.
> 
> Da się i w doctrine, z użyciem query buildera.
> https://stackoverflow.com/questions/15555042/doctrine-2-delete-with-query-builder (pierwsza odpowiedź)

To ja wiem. To jest korzystanie z SQLa, do którego z awersją podchodzisz 
r=traktując go jako raka w ORMie.

> Można też użyć PartialObject / PartialReference:
> https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/partial-objects.html
(...)
 > Działa przy różnego rodzaju joinach, czy update, może zadziałać i tu.

Ok, to może mieć sens. Muszę to w głowie przekompilować.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <q9q6ee$a2s$1@node2.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: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <5cbf10a8$0$482$65785112@news.neostrada.pl> <q9ngu2$rla$1@node2.news.atman.pl> <szccfmi95el5$.xlp4ie6tp398.dlg@40tude.net> <q9nrgf$d0c$1@node1.news.atman.pl> <slrnqbuueh.2ui0.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!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Re: Symfony 4 - jak projektować bazę danych
 pod Doctrine?
Date: Wed, 24 Apr 2019 19:29:42 +0200
Organization: ATMAN - ATM S.A.
Lines: 75
Message-ID: <q9q6ee$a2s$1@node2.news.atman.pl>
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <5cbf10a8$0$482$65785112@news.neostrada.pl> <q9ngu2$rla$1@node2.news.atman.pl> <szccfmi95el5$.xlp4ie6tp398.dlg@40tude.net> <q9nrgf$d0c$1@node1.news.atman.pl> <slrnqbuueh.2ui0.wojciech.bancer@pl-test.org>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1556126990 10332 89.70.94.204 (24 Apr 2019 17:29:50 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Wed, 24 Apr 2019 17:29:50 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
In-Reply-To: <slrnqbuueh.2ui0.wojciech.bancer@pl-test.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit