🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Laravel ORM czy SQL?

#232213
From: Marek S
Date: Tue, 25 Dec 2018 13:54
42 lines
3052 bytes
Witam,

Próbuję przekonać się do ORM. Ponoć jest to szybsze i wygodniejsze. Być 
może gdy robimy jakiegoś prostego inserta do jednej tabeli i czy 
selecta. Jednakże tu też mam wątpliwości czy jest to faktycznie szybsze 
niż pisanie w SQL. Nie bardzo potrafię zainfekować się tą ideą. Oto moje 
wątpliwości:

1. Pracując w ORM musimy nauczyć się SQL raz jeszcze - od nowa. Jest on 
zapisany w języku PHP za pomocą funkcji. Pytanie: po co? Jest z tego 
jakaś korzyść? W dodatku łapię się na tym, że staram się przekładać w 
myślach to co piszę w ORM na język zapytania SQL jakie z tego może 
powstać by uzyskać efektywność wykonania złożonego zapytania. Tymczasem 
szybciej byłoby zwyczajnie w SQL skrobnąć to samo zapytanie zamiast 
kombinować.

2. W ORM tracimy w pewnym zakresie kontrolę nad tym jaki SQL z tego się 
wytworzy. Nie wiem czy jest inny sposób monitorowania wygenerowana SQL 
przez ORM jak grzebanie w logach bazy danych - co mocno komplikuje 
development. Nie wiem czy da się zmusić ORM do generowania optymalnych 
struktur SQL charakterystycznych dla konkretnej bazy danych. Np. z tego 
co pamiętam, w MySQL JOINny mogły mieć tylko 1 argument a w niektórych 
przypadkach w PostgreSQL JOINy z wieloma argumentami potrafiły 
dramatycznie zwiększyć wydajność zapytania. Oczywiście to tylko jest 
przykład ad hoc. Zapewne jeśli się zastanowić, to wiele sytuacji można 
wymyślić.

3. Przy tworzeniu większych systemów rzadko zdarza się, że pracujemy z 
jedną tabelą w sensie aktualizacji zawartości. Np. aby móc zrobić 
inserta z kompletem potrzebnych danych, to nierzadko zachodzi potrzeba 
wydobycia informacji z innych tabel, przeliczenie czegoś tam i w 
zależności od wyników zmodyfikowanie rekordów w tej i innych tabelach. 
Tak więc traktowanie ORM jako "rekordu w pojedynczej tabeli" jest mocnym 
ograniczeniem. Model i tak musi grzebać w całym ekosystemie bazy danych.

Jedyna korzyść jaką dostrzegam, to możliwość przenoszenia projektów 
między jedną z 4 baz danych jaką Laravel obsługuje. Ale czy to jest 
faktycznie takie istotne? Zazwyczaj nie ma potrzeby zmiany bazy.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <pvtcr2$dl3$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

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: Laravel ORM czy SQL?
Date: Tue, 25 Dec 2018 14:54:39 +0100
Organization: ATMAN - ATM S.A.
Lines: 42
Message-ID: <pvtcr2$dl3$1@node2.news.atman.pl>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1545746082 13987 89.70.94.204 (25 Dec 2018 13:54:42 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Tue, 25 Dec 2018 13:54:42 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.3
X-Mozilla-News-Host: news://news.atman.pl:119
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit