Article View: pl.comp.lang.php
Article #232213Laravel ORM czy SQL?
From: Marek S
Date: Tue, 25 Dec 2018 13:54
Date: Tue, 25 Dec 2018 13:54
42 lines
3052 bytes
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-mailShow 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