Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #16217
| From | Marek S <precz@spamowi.com> |
|---|---|
| Newsgroups | pl.comp.lang.php |
| Subject | Re: Symfony 4 - jak projektować bazę danych pod Doctrine? |
| Date | 2019-04-27 00:37 +0200 |
| Organization | ATMAN - ATM S.A. |
| Message-ID | <qa018c$7ip$1@node1.news.atman.pl> (permalink) |
| References | (6 earlier) <slrnqbuueh.2ui0.wojciech.bancer@pl-test.org> <q9q6ee$a2s$1@node2.news.atman.pl> <slrnqc194m.2amm.wojciech.bancer@pl-test.org> <q9t7vj$4ol$1@node2.news.atman.pl> <slrnqc5d19.27vm.wojciech.bancer@pl-test.org> |
W dniu 2019-04-26 o 09:32, Wojciech Bancer pisze: >> BTW >> Jak tworzysz podkreślenia? Próbowałem _ przed i za, próbowałem __ i >> kiszka. Być może więcej wyrazowych wyrażeniach próbowałem. Nie pamiętam już. > > Przez dodanie _ na początku i na końcu wyrazu (bez spacji). Sprawdzam: _test_ _dwa wyrazy_ _dwa_wyrazy_ _dwa-wyrazy_ > Wygląda jak klasyczna niepotrzebna optymalizacja. > Zamieniasz też " na ', żeby zyskać 2 sekundy czasu serwera w rok? Nie, wcale nie 2 sekundy. Pisałem wcześniej, że przy ok pół miliona operacji (w ciągu nocy) udało mi się zaoszczędzić 2h pracy serwera (50%). Może nawet więcej. Nie pamiętam konkretnych liczb. A cała sprawa wzięła się stąd, że gdy parę lat temu, gdy system był tworzony, nie przewidywano takiego sukcesu firmy. Informatycy wychodzili dokładnie z tego samego założenia co Ty, że dla tych 10k operacji nie będą "nadmiernie" optymalizować. A potem, zaledwie po kilku latach obudzili się z ręką w nocniku: ojej... system się nie wyrabia przy 500k. Mało tego... zaczęły zdarzać się upadki bazy bo Ci sami informatycy założyli, że im więcej RAMu przydzielą w Postgresie na proces, tym, lepiej. Rano ludzie przychodzą do pracy a tu nic nie działa bo na bazie trwają niesłychane prace lub w ogóle leży. Gdyby Ci informatycy wzięli się za uczciwą robotę i nawet dla niewielkiego początkowo przedsięwzięcia postąpili zgodnie z kunsztem programowania zwracając uwagę na detale, to problem wystąpiłby dopiero po dojściu do możliwości serwera a nie możliwości kiepskich algorytmów. > Wszysktie? Nie. Nadmiarowe, stworzone "na wszelki wypadek"? Tak. > To co robisz nosi wszelkie znamiona premature optimization i unnecessary > optimization. Niby jest wydajnej, ale różnicy nikt tak realnie nie zobaczy, > a Ty tracisz na tym czas. Czytaj powyżej. Za moją "stratę czasu" dostałem niezłą kasę bo skończyły się w/w problemy. Argument kasy mnie przekonuje dodatkowo do słuszności podejścia. Co do w/w optymalizacji, to faktycznie praca była mrówcza. Np. zamiast indeksować całe pole typu array() należało rozbić indeks na dwa: przeindeksować tylko część tablicy - bo okazało się, że zdecydowana większość zapytań właśnie o te części pytała. Podobnie było z zapytaniami SQL. Zamiast jakiejś tam konstrukcji zastosowano inną i znów progress wydajnościowy. Tymczasem od początku można było zrobić to dobrze... Zarobiłem na partactwie innych... Gdyby mieli tam ORMa, to po zdobyciu jego podstaw... zacząłem mieć wątpliwości czy w ogóle dałoby się cokolwiek uratować w w/w projekcie. > Query builder *nie* jest żadnym łataniem, ani też żadnym SQLem. > Jest narzędziem do budowania zapytań. > Jak chciałbyś odpytywać bazę inaczej? Raw SQL? Doctrine ma implementację czegoś takiego. > Nie wszystko na bazie sprowadza się do robienia pojedynczych zapytań > i działania na pojedynczych obiektach. > Raw SQL ma JOINy od wieków. > No nie. Query builder zbuduje zapytanie DQL: > https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/dql-doctrine-query-language.html ...i baza to zrozumie? Nie sądzę. Zawsze na końcu będzie SQL. Resztę wypowiedzi dopiszę poniżej. > > Uwalnie Ciebie od znajomości struktury (nazw kolumn kluczy, nazw tabeli), > bo sam to ogarnia na podstawie otworzonej przez Ciebie relacji z obiektami > Entities. > > A potem ten DQL zostanie przetworzony na coś w stylu: > DELETE FROM services s WHERE s.project_id = " . $project->getId(); // jeśli $project to obiekt > DELETE FROM services s WHERE s.project_id = " . $project; // jeśli $project to prymityw (liczba lub string) Czy to nie ja zadałem pytanie czy na wyjściu dostaniemy: "DELETE FROM services s WHERE s.project=$project" ? :-D Jakoś dostrzegam w tym podobieństwo :-D > ale już bez Twojego udziału. > Ale tak g gdzieś ostatecznie pod spodem jest wynik w postaci SQL. > Przecież musi być, bazy danych inaczej nie gadają. Właśnie! Kłopot jest jednak w tym, że zapytanie SQL jakie z tego się urodzi może (nie musi) wołać o pomstę do nieba. Tak jak to było przy UPDATE/DELETE. Nie twierdzę, bo jeszcze nie mam praktyki, ale flamastrem na tablicy napisałbym sobie tą rzecz jako wymagającą detalicznych obserwacji przy tworzeniu projektów by uniknąć wpadek. > Zauważ, że: > - nie znasz tej nazwy tabeli (doctrine sam ją "ogarnia" > na podstawie tego jak zdefiniowałeś entity) > - do $project wstawiasz obiekt entity lub id, a doctrine > sam sobie poradzi z tym by to miało dla niego sens > sam też zna nazwę kolumny, na podstawie relacji jaka > była utworzona w entity Tego nie musisz pisać. Ja to wiem i doceniam usprawnienie lecz w nielicznych / licznych / bardzo licznych przypadkach może stać się kamieniem u szyi. Ja nie mogę powiedzieć klientowi: to nie ja spierniczyłem, to Querybuilder dodał gratisa od siebie w postaci mega-nieoptymalnej struktury. A indeksy w bazie? Po co to komu! Niech ORM sobie je ogarnia. Jakbym dostał to takim komentarzu dyscyplinarkę, to wcale bym nie był zdziwiony. -- Pozdrawiam, Marek
Back to pl.comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
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