Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #16224

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

Newsgroups pl.comp.lang.php
From Wojciech Bancer <wojciech.bancer@gmail.com>
Subject Re: Symfony 4 - jak projektować bazę danych pod Doctrine?
References (7 earlier) <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> <qa018c$7ip$1@node1.news.atman.pl>
Organization None
Date 2019-04-28 14:50 +0200
Message-ID <slrnqcb8c6.a5v.wojciech.bancer@pl-test.org> (permalink)

Show all headers | View raw


On 2019-04-26, Marek S <precz@spamowi.com> wrote:

[...]

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

No nie obraż się, ale pokazujesz że nie masz na tyle ogólnej współczesnej
wiedzy odn. architektury systemów by obiektywnie ocenić gdzie optymalizacja 
mogłaby być najlepsza. Może masz rację, ale może nie. Może niekoniecznie 
optymalizacja powinna skupiać się na triggerach, może lepsze byłoby 
przemodelowanie procesu importu danych.

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

*Zaledwie* po kilku latach? Kilka lat w IT to przepaść.

No sorry, ale to brzmi jakby:
a) zrobili to co trzeba (wszystko działało prawidłowo przez kilka lat)
b) ktoś zarządzający w firmie "zapomniał" napomknąć / zainicjować zmiany
w aplikacji zanim zaczął się problem wydajnościowy. Albo nie przewidział
go.

> ojej... system się nie wyrabia przy 500k. 

A miał się wyrabiać przy pisaniu tej aplikacji?

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

Czyli Ci sami ludzie to programiści robiący za ekspertów DBA, 
administratorzy systemów i baz danych i co jeszcze? :)

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

A ja widzę typowe błędy zarządcze.
No ale idąc dalej, to jak myślisz, jak ktoś oceni Twoją pracę "za kilka
lat", jak firma rozwinie się jeszcze bardziej, dostawi się jeszcze
kilka maszyn i jednak wyjdzie, że optymalizacje które zrobiłeś teraz
już nie działają i mimo dostawienia maszyn system nadal się czka?

Ciekawe czy Twój następca wystawi Ci taką samą laurkę jak Ty swoim :)

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

Pisaliśmy o jednorazowym imporcie (i optymalizacji tego) a Ty płynnie
przeszedłeś do tłumaczenia że cały system był niewydajny "bo coś".

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

Rzecz w tym że "dobrze" ma więcej niż jedną postać.
I to jest przedmiotem dyskusji w tym wątku.

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

Czyli chcesz używać ORM bez zalet ORM i z wadami ORM. 
Fascynyjące :) Poczytaj o Unit of Work, o cache,
o tym jak się pracuje z obiektami:

https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/unitofwork.html
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/caching.html

>> Nie wszystko na bazie sprowadza się do robienia pojedynczych zapytań
>> i działania na pojedynczych obiektach.
> Raw SQL ma JOINy od wieków.

I co z tego?

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

No to znowu, po co Ci ORM?

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

No to znowu, po co Ci ORM jak chcesz pisać SQLe?

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

Ale to *TY* spierniczasz bo nie rozumiesz narzędzia które używasz,
a starasz się go używać tak jakby go nie było i był czysty SQL.

> Jakbym dostał to takim komentarzu dyscyplinarkę, to wcale bym nie był 
> zdziwiony.

Ja też.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

Back to pl.comp.lang.php | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

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