Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.lang.php > #16211
| Newsgroups | pl.comp.lang.php |
|---|---|
| From | Wojciech Bancer <wojciech.bancer@gmail.com> |
| Subject | Re: Symfony 4 - jak projektować bazę danych pod Doctrine? |
| References | (8 earlier) <5cc0de68$0$539$65785112@news.neostrada.pl> <slrnqc42f0.2lii.wojciech.bancer@pl-test.org> <5cc24956$0$526$65785112@news.neostrada.pl> <slrnqc5fkk.27vm.wojciech.bancer@pl-test.org> <5cc2e453$0$522$65785112@news.neostrada.pl> |
| Organization | None |
| Date | 2019-04-26 17:18 +0200 |
| Message-ID | <slrnqc689s.2i2i.wojciech.bancer@pl-test.org> (permalink) |
On 2019-04-26, Kviat <Kviat> wrote: [...] >> Ale ja podałem argumenty dlaczego są złe, a nie "bo są złe". >> Natomiast można założyć, że w świecie o którym mówisz, ze względu >> na niewielkie rozproszenie i małą skalę są to wady nieistotne. > > Ok. Moim zdaniem w pewnych przypadkach w Twoim świecie są to wady. > A nie, że wady ogólnie. Ja napisałem, że w dzisiejszym świecie "w którym zapotrzebowanie na dane", przetwarzane coraz szybciej oraz ich ilość rośnie w zastraszającym tempie z roku na rok, to już jest wada. A Ty jako kontr-przykład podajesz mi architekturę rodem z lat 90-tych, intranetu i mówisz "u mnie działa". Jasne. Działa. Co nie znaczy że owa architektura nie ma wad o których pisałem. Po prostu te wady są akceptowalne w konkternych rozwiązaniach (jeszcze). >>> Na drodze: przeglądarka->baza danych, to właśnie php pełni >>> niejako naturalną rolę api dla aplikacji "przeglądarkowej". >>> Nie ma innego sposobu. >> >> Nie możesz tego zrobić jedynie dlatego że przeglądarki wprowadzają ograniczenia >> w komunikacji, a nie dlatego że to niemożliwe w języku > > Tak. To miałem na myśli. I dlaczego tak jest, jak myślisz? >> (patrz https://github.com/sindresorhus/awesome-nodejs#database ). >> Jakby consensus środowiska był taki, że bezpośrednia praca z DB "to jest to", >> to przeglądarki nie miałyby takich ograniczeń. > > Ale mają i nie chciałem drążyć tego tematu, dlatego posłużyłem się > skrótem myślowym. A zastanowiłeś się dlaczego nie mają? Dlaczego model "otwarci do świata" się nie sprawdził? >>> Przykład podałem w poprzednim poście. Najprostszy z możliwych z >>> aktualizacją pola stanu magazynowego po dodaniu/zmianie/skasowaniu >>> rekordu z towarem. >> I jak myślisz, jak Ci to zadziała na sklepie wielkości Amazona? > A ile jest sklepów wielkości Amazona? Dobrze. Czy myślisz, że wystarczy w sklepie pokroju żabki, jak ten będzie zautomatyzowany i będzie *musiał* wiedzieć że klient wychodzący przez kasę automatyczną nosi to i to, zabrane z półki tamtej i siamtej, dokonać rozliczenia tego klienta i ewentualnie dokonać korekty jak klient postanowi się rozmyślić? Pierwsze sklepy już gdzieś tam się pojawiają. Co będzie za 5-10 lat? A może chciałbyś mieć dane o pozycji klienta z telefonem w czasie rzeczywistym poprzez urządzenia IoT, by serwować mu dopasowany content w sklepie? Albo sterować urządzeniami domowymi/firmowymi w reakcji na zdarzenia rzeczywiste? Do tego wszystkiego model "centralny serwer + triggery" klęknie. Po prostu. >> Dlaczego google używa baz nierelacyjnych do swoich wyszukiwarek (bigtable) >> https://cloud.google.com/bigtable/ > > Bo takich potrzebuje. Ale dlaczego potrzebuje? Czyż nie jest wydajniej mieć monolityczny serwer z triggerami i wszystko "w jednej maszynie"? Takie można odnieść wrażenie po tym jak zachwalałeś triggery oraz ich optymalność. >> We wszystkich przypadkach odpowiedź jest taka sama: tradycyjne serwery sql >> "nie wyrabiają" i nie potrafią sprostać potrzebom. > > Nie we wszystkich przypadkach. > W większości przypadków tradycyjne serwery sql bez problemu wyrabiają. Jeszcze. Ale odpowiedzialne projektowanie *aplikacji webowej* musi przewidywać pewien rozwój sytuacji. Inaczej będziesz jak nasza klasa i pan gąbka z błędem typu error 500. Architektura oparta o monolityczne serwery i triggery jest zwyczajnie zamknięta do małej skali. _Zmiana_ wymaga przepisania logiki. Architektura oparta o ORM (i zdarzenia), może i jest jednostkowo wolniejsza, ale w razie potrzeby w łatwy sposób zostać rozbudowana "w bok", by spełnić nagłe wymagania obciążeniowe. I równie szybko może być ściągnięta w dół (bo się zapotrzebowanie skończyło). Weź takie obciążenie np. na black friday. Ja dostawię 3-4, 10, 15 maszyn i się wyrobię. Jak przestanąć być potrzebne, to zejdą w dół. A storage mam stosunkowo tani i niezwykle szybki (bo nie pilnuje wszystkiego czego nie musi sam robić). A jaką Ty masz wizję? Dostawimy 10 serwerów, zrobimy migrację, a jak przestanie być potrzebne, to migrujemy ponownie? Wszystko ręcznie, z olbrzymim wysiłkiem czasowym Bez żadnej automatyki? O ile *koszt* projektowania aplikacji w jeden i drugi sposób jest podobny, to poprzez ograniczanie logiki siedzącej na bazie masz potem dużo istotnych korzyści - mniejszy jest koszt przepisania aplikacji z ORM do ODM niż koszt przeniesienia logiki z bazy do aplikacji. Mniejszy jest też koszt optymalizacji konkretnych bottlenecków "na aplikacji" niż na bazie (bo masz mnóstwo alternatyw od zapewnienia cache w pamięci, rozładowania ruchu poprzez load balancery, kontroli że np. pojedynczy użytkownik nie może wykonać > 10 żądań na sekundę (throttling pattern), tworzenia kolejek i priorytetów (a nie wyłącznie obsługi fifo). a to wszystko możesz stosować na różnych poziomach infrastruktury, połączonej w logiczną strukturę z aplikacją (podejście IaaC) i zebrane w jednym logicznym miejscu. >> Tam gdzie naprawdę musisz mieć skalowalne rozwiązanie, to właśnie >> tak jest. I nie jedna "maszyna z API". Wrzucę kod na: > Zgada. Tam gdzie naprawdę musisz. Właśnie odwrotnie. Tam *gdzie nie musisz* żyłować wydajności pojedynczej maszyny, nie stosujesz niepotrzebnej optymalizacji (takiej która potem blokuje ewentualne drogi do przodu), ale projektujesz system tak by był na potencjalne potrzeby otwarty. *Nie oznacza to*, że musisz od razu zakładać że będziesz miał ruch 100k userów godzinę. Ale w miarę możliwości powinieneś projektować system tak, żeby niewielkim kosztem zmian móc to zrobić. >> Tego wszystkiego nie zrealizujesz w tracydyjnym modelu SQL, >> nie dlatego że pojedyncze bajtowe operacje są mniej/bardziej >> wydajne, tylko dlatego że jest to narzędzie o niewielkiej >> skalowalności. >> > Ale przecież to nie jest tak, że teraz wszyscy nagle powinni porzucić > triggery/sp, bo stały się złe, bo Amazon i google z nich nie korzysta. Ale (poza desktopami), to wszyscy chyba się przerzucili z triggerów/sp, na inplementacje w aplikacjach. Nie tylko Amazon i Google. > Borys Pogoreło już o tym wspomniał. Wdrażanie na siłę takich rozwiązań, > tam gdzie nie są konieczne, to jest rozwiązywanie problemów, których > większość nie ma i nigdy mieć nie będzie. Oczywiście że ma i będzie (bo apetyt na dane rośnie). Zobacz sobei IoT, ML, segmenty Big Data. A tak swoją drogą, to zauważ, że te wszystkie klasyczne aplikacje księgowe o których mówisz "ostały się" głównie w większych przedsiębiorstwach, bo tam koszty zmian są znaczące, a ludzie do tych systemów są już przyzwyczajeni i przeszkoleni. Ale w takim sektorze mikro-przedsiębiorstw, jedno-osobowych DG, zamiast instalowanej wypaśnie aplikacji z serwerem bazy masz coraz bardziej popularne serwisy typu infakt, wfirma, itp. I już teraz te serwisy mają więcej możliwości niż desktopowe aplikacje będą miały kiedykolwiek (dla tej grupy). Masz więc i odczytywanie/procesowanie faktur z PDF (rozpoznawanie obrazów), masz automatyczne wysyłanie przypomnień na maila, integracje z allegro/ceneo/magazynami *różnych* sklepów po API, systemami płatności, bankami, wysyłaniem maili do klientów, zarządzaniem windykacją, automatycznym przeliczaniem kursów walut, CRM, aplikacje/wersje mobilne, automatyzacją wystawiania i wysyłka faktur seryjnych (Rachmistrz to już potrafi?) i bardzo szybkie wprowadzanie nowinek dostępnych *u wszystkich na raz* (np. weryfikacja numerów VAT kontrahentów). A i masz możliwość integracji z własnymi systemami, np. by sklep XYZ wystawiał sam fakturę, nawet jeśli ten XYZ jest Twoim własnym i autorskim rozwiązaniem (bo jest dostępne proste API i nie trzeba się zagłębiać w rozwiązywanie zależności na > 100 tabelach w bazie). I to wszystko dużo szybciej i taniej niż desktopowe wersje oferowały kiedykolwiek. -- Wojciech Bańcer wojciech.bancer@gmail.com
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