~dejwCiekawy temat poruszyłeś. Tak naprawdę nie ma złotego środka. Ja jestem zwolennikiem procedur w bazie danych. Jak wiadomo każde rozwiązanie ma swoje wady i zalety. Do wad można zaliczyć konieczność przepisywania dużej ilośći kodu w przypadku częstych modyfikacji bazy danych. Taka sytuacja ma miejsce, jeśli projekt, nad którym się pracuje, dopiero rodzi się w głowie klienta.
Główną zaletą tego rozwiązania jest przeniesienie ciężaru kosztownych operacji na serwer bazodanowy, czyli na maszynę, która do tego została kupiona. Jakoś nie wyobrażam sobie pisania kodu do obsługi drzew nested set w php/c#. O orzydatności triggerów chyba pisać nie muszę.
Cytat
Wiąże się to głównie z tym że poprawa czy zmiana jakiejś logiki zawartej w procedurze jest bardzo kosztowna.
Jakoś nie mogę znaleźć różnicy w kosztach. W obu przypadkach trzeba ten kod przepisać. Różnią się tylko narzędzia.
Cytat
Różni się właściwie tym, że zamiast mieć całość logiki w jednym miejscu, ma się ją rozrzuconą po dwóch aplikacjach.
W dużych systemach logikę masz rozrzuconą nie w dwa, a w dwadzieścia miejsc.
Cytat
Teoretycznie odstęp w czasie jest minimalny, ale przy obciążonej jest duże prawdopodobieństwo, że pojawią się odwołania do procedury której właśnie nie ma.
Po pierwsze:
Cytat
Dobrym nawykiem jest wyłączenie aplikacji na czas aktualizacji - szczególnie jeśli aktualizujemy strukturę bazy
A po drugie. Jeśli podmieniasz pliki na serwerze, czy to przez ftp/sftp, czy przy użyciu systemu kontroli wersji, to jest taki moment, gdy pliku nie ma (lub jest częściowo nadpisany). Przy dużym obciążeniu maszyny, ta chwila może trwać długo, a co za tym idzie, pokaże się biała strona.