konto usunięte
Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?
Przemysław R.:
Kiepski koder SQL-a robił ten raport
dobry koder zrobił by to krokowo i asynchronicznie, wykorzystując mechanizmy wbudowanye w SQL-a? np. alerty, joby itp, itd
Alert czy job nie do tego zostaly stworzone. Procedura(y) beda zagmatwane i niemozliwe do przejecia przez innego programiste. Nie bedzie ani szybsze, ani lepsze pod zadnym wzgledem, ale tak - da sie.
Oceniasz kodera na podstawie informacji, ktore ci przekazalem? Mocne slowa!
Wracając do tematu raportów
* wielokrotnie zagnieżdżone subselecy - jak wygląda ten temat w nhibernate?
Z automatu, wygodnie i szybko, mozliwosc konfiguracji czy NHib powinien uzyc subselecta czy joina, strategii prefetch itp.itd. Jak masz ochote mozesz uzyc projekcji i zrobic dokladnie to, co robi stored procedure, albo nawet ja wywolac.
* odwołania do Linked Serwers za pomocą np. openquery?
Z automatu, banalne, to open query jest obejsciem problemu, ktore NHibernate rozwiazuje naturalnie.
* polecenia niestandardowe np. BULK INSERT
Mylisz pojecia, NHibernate to zrodlo dostepu do danych, bulk insert to operacja administracyjna bazy danych. Uzywamy bulk insertow do wiekszych importow (>miliona rekordow), ale nijak to sie ma do ORMow.
Staram sie powiedziec, ze dobry, przejrzysty algorytm dziala w praktyce lepiej, a nie ma lepszego miejsca dla logiki niz Class Library. A im bardziej zaawansowane Stored Procedures tym wiecej logiki musza "pozyczyc", to bardzo niebezpieczne.
Chciałeś powiedzieć że algorytm się zmienił przez co całość działa wydajniej.
wprowadzenie ORM-a nie ma tu absolutnie nic do rzeczy, to tylko narzędzie do osiągnięcia konkretnego celu tak samo jak wywołanie JOBa
Nie to chcialem powiedziec, ale to, ze im wiecej uzywasz sp tym wiecej logiki lezy w bazie. Stad niedaleko do katastrofy, szczegolnie o nia latwo przy zmianie wymagan np. uprawnien.
Ja nie jestem wrogiem procedur, wspolpisalem dwa bardzo duze systemy na sp w Sql Server. Jeden z nich ma od jakiegos czasu problemy wydajnosciowe, na ktore pierwszym krokiem jest sprawdzenie procedury, a jak optymalizacja nie daje porzadanych rezultatow - przepisanie fragmentu w NHibernate. Roznica w wydajnosci ok. 4-5x na korzysc ORMa. Takze nie demonizowalbym i nie teoretyzowal, tylko sprawdzil w praktyce, bo wyniki okazuja sie zaskakujace :)
jeżeli nie wiązało się to ze zmianą algorytmu działania to jestem pod głębokim wrażeniem, ale coś mi się wydaje że tan sam kiepski koder T-SQL-a pisał te procedury :)
Kod o ktorym mowa nie byl napisany kiepsko, a koderzy bynajmniej amatorami nie sa, ale nie bede chwalil sie kto ma wieksze grabki, bo nie o to chodzi.
nie ma fizycznej możliwości żeby wygenerowany SQL z poziomu ORM-a był szybszy od tego z procedury
Rozpatrujac sam kod SQL - nie ma. Rozpatrujac kontekst decyzyjny wykonywania kodu - jak najbardziej. I o to sie rozchodzi.
czymś się różni od zwykłego profilera?
Masz na mysli SQL Server Profilera? Jezeli tak to wszystkim, przede wszystkim umozliwia dopasowanie definicji i zapytan pod katem kontekstu (o ktorym caly czas pisze) w jakim sa one wykonywane. Sql profiler to takie podstawowe narzedzie od ktorego przygode z optymalizacja i monitoringiem sie zaczyna.
Korzystales kiedys z NHibernate?