[doctrine] czy doctrine jest niewydajny w pracy z dużymi bazami? |
[doctrine] czy doctrine jest niewydajny w pracy z dużymi bazami? |
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?
|
|
|
9.03.2018, 08:48:40
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 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. |
|
|
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". |
|
|
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 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ć. |
|
|
Wersja Lo-Fi | Aktualny czas: 28.03.2024 - 17:15 |