Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [doctrine] czy doctrine jest niewydajny w pracy z dużymi bazami?
Forum PHP.pl > Forum > Bazy danych
porzeczki
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?
Pyton_000
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.
Crozin
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".
Pilsener
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ć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.