Temat: CLR Ucieczka od SQL SERVER
No i mamy całe spektrum odpowiedzi :).
A więc do dzieła:
@Szybkość:
Nie wątpię że do przetwarzania logiki biznesowej CLR jest szybszy - w sumie wykonuje się jako kod platformowy nie jako skrypt więc ma do tego prawo. Jednak mi się wydaje że podobny efekt i większą skalowalność osiągniemy korzystając z warstwy serwisowej.
Kod biznesowy IMO w SQL jest i będzie długi - mało kiedy jest czas na pieszczenie się i szukanie bardziej optymalnej metody na dane zapytanie.
@Długie zapytania:
W językach strukturalnych nawet (nie wspominając o obiektowych) kod można sobie podzielić na procedury tak że jest dużo czytelniejszy. Setki procedur i funkcji na serwerze sql wcale nie są czytelne (trudno je ułożyć w jakąś hierarchię zależności) - duża granulacja to duży bałagan prędzej czy później.
@ORM:
Oczywiście tylko nie wszędzie - jeżeli przetwarzanie dużej ilości danych to raczej na serwerze. Sieć też ma swoją wydajność. CLR na SQL-u z resztą nie daje szansy budowania zapytań w EF.
@Architektura
Bartosz napisał, że trzeba korzystać z tego co umieją developerzy. Nie zgodzę się. Nie można dyktować architektury systemu zdolnościami zespołu - to zespół powinien nagiąć się do architektury. W przeciwnym wypadku dostaniemy łaciaty system z obszarami kreatywności nie do ogarnięcia niczyim umysłem poza umysłem autora :)
Z kolei Marcin pisze, należy WSZYSTKO co się da pisać w bazie danych. Znowu się nie zgadzam to spaczenie odwrotne do używania bazy tylko jako śmietnika na dane. Jasne że wiele da się zrobić w bazie danych jednak myśląc w ten sposób to należało by wszystko pisać w assemblerze bo szybciej i wydajniej kod będzie działał. Oczywiście baza powinna być świątynią danych - powinna zapewnić ich spójność i bronić je przed błędami w aplikacji. Ale żaden większy program (system) nie wytrzyma pakowania go na siłę w bazę danych - szczególnie jeżeli ma być skalowalny i zarządzany.
Wzorcowa aplikacja (architektura) jest opisana tutaj:
http://msdn.microsoft.com/en-us/library/Ee817664(pandp...
Warto trochę poczytać.
Co do prowokacji Stanisława:
przypomina mi się jak podczas awarii systemu w jednym z banków pogadałem sobie z Panią przy okienku która mnie przez to nie mogła obsłużyć. Stwierdziła że kiedyś to było lepiej - było wszystko na kartkach i się dało, a te komputery tylko komplikują i mało wnoszą.
Cóż... tylko wtedy miała może 100 klientów teraz ma 10 000.
Kiedyś wszystko rzeba było załatwiać lokalnie w banku i czekać wieki, teraz można w dowolnej placówce. O dostępie przez Internet nie wspomnę.
Obecne bazy danych to już nie pliki tekstowe - to kombajny - serwery aplikacji. Są dużo bezpieczniejsze, elastyczniejsze, również szybkie, ale bardzo łatwo się podstaw nauczyć dlatego każdy może pisać różne gnioty i narzekać że "nie działa" albo wolno działa.
Nie wspomnę tu o klastrach, xml-ach, usługach sieciowych, BI, dzielenie rekordów na różne pliki / dyski, mechanizmach optymalizacyjnych, backupach, CDC..., audytowaniu. Długo by wymieniać.Tylko z dużą ilością możliwości trzeba się wykazać dużą odpowiedzialnością i głębszą wiedzą o tych "bajerach"/
Blah - to na tyle - HAWK :)