Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [doctrine] czy doctrine jest niewydajny w pracy z dużymi bazami?
porzeczki
post 9.03.2018, 08:28:49
Post #1





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 15.09.2016
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Spotkałem się z opinią "nie używamy doctrine, bo jest niewydajny w bazach z dużą ilością danych, gdzie zapytania potrafią trwać 15 minut", "traci się czas na chodzenie po klasach vs czyste zapytania sql". Czy to prawda?
Go to the top of the page
+Quote Post
Pyton_000
post 9.03.2018, 08:48:40
Post #2





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Każda warstwa abstrakcji będzie powodowała spowolnienie. Im więcej danych tym gorzej.

Uproszczając tak, Pure SQL będzie szybsze od wszystkiego innego.
Go to the top of the page
+Quote Post
Crozin
post 9.03.2018, 13:14:34
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Nie każda warstwa abstrakcji będzie powodowała spowolnienie, jeżeli np. sama w sobie potrafi coś optymalizować, co normalnie by optymalizowane nie było - np. Second-Level Cache z Doctrine'a.
2. Ilość danych w bazie nie ma dla samego Doctrine'a specjalnego znaczenia.
3. Znaczenie będzie miała natomiast liczba wyciąganych przez dane zapytanie danych. Przetworzenie przykładowo 100 000 rekordów z bazy danych przy pomocy "czystego PHP-a" może być znacząco szybsze niż zrobienie tego z wykorzystaniem Doctrine'a ze względu na powolność PHP-a w tworzeniu obiektów jako takich.
4. Musisz sprawdzać jakie zapytania SQL finalnie generuje Doctrine. A że pracując z ORM-em często łatwo się zapomnieć w tym aspekcie stąd opinia n/t "powolnych ORM-ów".
Go to the top of the page
+Quote Post
Pilsener
post 10.03.2018, 18:37:00
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Problemem wydajności przy pracach z bazami danych najczęściej nie są narzędzia, lecz programiści, którzy tworzą implementacje nieprzemyślane na żadnym etapie. Pracowałem przy wielu aplikacjach i przy wielu był problem z wydajnością niezależnie od stosowanych narzędzi.
Oczywiście każde narzędzie daje pewien narzut, ale najczęściej na akceptowalnym poziomie - co więcej, bardzo często okazuje się, że kiedy robimy własne rozwiązanie (np. hydrowanie bazy w czystym PHP) to wychodzi wolniej niż we frameworkach. Jeszcze nie spotkałem się z sytuacją, że wynajdywanie koła od nowa się firmie opłaciło a jak znowu słyszę coś w stylu "nie użyjemy doctrine, napiszemy własny ORM, będzie szybciej i lepiej" to facepalmxd.gif
I jest tak, bo dużo łatwiej powiedzieć "aplikacja musi być wolna bo użyliśmy symfony i doctrine" niż to, że po prostu spieprzyliśmy bo potrzebujemy 15 requestów i 100 zapytań by coś zmienić na stronie, albo nie umiemy skonfigurować ORMa, żeby na produkcji włączyć cache meta danych bazy, kompilacji DQLi do raw SQLi czy adnotacji.
I jeśli faktycznie potrzebujemy tej wydajności to nie łączymy bezpośrednio aplikacji z bazą danych tylko tworzymy warstwę pośrednią (np. Lucene).

Doctrine to potężne narzędzie, które znakomicie przyśpiesza programowanie aplikacji i nie widzę żadnych sensownych powodów, żeby z niego rezygnować.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.08.2019 - 08:33