| Termin | Definicja |
|---|---|
| Wyzwalacze | Wyzwalacze to obiekty bazy automatyzujące reakcję na zdarzenia bez ingerencji aplikacji klienckiej. Miejsce wyzwalaczy w architekturze bazy danychWyzwalacz jest procedurą przypisaną do określonego zdarzenia w bazie danych. Zdarzeniem może być między innymi dodanie rekordu, jego zmiana albo usunięcie. Kod wyzwalacza uruchamia się automatycznie, gdy zajdzie wskazana operacja, dlatego aplikacja nie musi pamiętać o wykonywaniu dodatkowych instrukcji kontrolnych. Reguła zostaje umieszczona blisko danych i działa niezależnie od tego, który program, użytkownik lub proces wykonał modyfikację. Najczęściej wyzwalacze służą do pilnowania spójności informacji, zapisywania historii zmian, uzupełniania pól zależnych oraz blokowania operacji niespełniających określonych warunków. Przykładowo zmiana statusu dokumentu może automatycznie zapisać datę modyfikacji i identyfikator użytkownika w tabeli historii. Usunięcie rekordu może zostać zablokowane, jeśli inne dane nadal się do niego odwołują. Takie działanie różni się od walidacji wykonywanej w interfejsie, ponieważ wyzwalacz działa również wtedy, gdy dane są modyfikowane poza główną aplikacją. Wyzwalacz zwykle wykonuje się w ramach tej samej transakcji co operacja, która go uruchomiła. Jeżeli jego kod zakończy się błędem, cała operacja może zostać odrzucona, zależnie od zasad obsługi transakcji w konkretnym silniku. Ma to istotne znaczenie: pojedyncze kliknięcie w programie może powodować kilka dodatkowych odczytów i zapisów, których nie widać w kodzie aplikacji. W efekcie rzeczywisty przepływ danych obejmuje zarówno instrukcję klienta, jak i automatyczne działania zapisane w bazie. Rodzaje działania i praktyczne zastosowaniaW relacyjnych bazach danych spotyka się wyzwalacze reagujące przed operacją, po jej wykonaniu albo zamiast operacji, jeśli dany silnik udostępnia taki wariant. Wyzwalacz wykonywany przed zapisem może sprawdzić warunki i przygotować wartości. Mechanizm uruchamiany po zapisie nadaje się do utworzenia wpisu audytowego lub aktualizacji danych zależnych. Wariant zastępujący operację bywa używany do kontrolowania dostępu do złożonych widoków, lecz jego dostępność i szczegóły różnią się między produktami. Ważne jest także rozróżnienie wyzwalacza uruchamianego dla pojedynczego wiersza od mechanizmu reagującego na całe polecenie. Nie każdy silnik oferuje oba modele, a kod napisany z założeniem jednego sposobu działania może błędnie obsłużyć operację modyfikującą wiele rekordów naraz. Bezpieczna implementacja powinna zakładać, że jedno polecenie może dotyczyć zbioru wierszy, a nie tylko jednego elementu. Pominięcie tego założenia prowadzi do niepełnej historii zmian, błędnych podsumowań albo utraty części informacji. Wyzwalacze mogą pełnić funkcję dziennika audytowego, kontroli wartości, automatycznego wyliczania pól oraz synchronizacji powiązanych tabel. Nie są jednak uniwersalnym zamiennikiem ograniczeń integralności, procedur czy logiki aplikacyjnej. Prosta reguła, taka jak zakaz wartości pustej albo wymóg unikalności, jest zwykle czytelniejsza jako ograniczenie dostępne bezpośrednio w definicji danych. Wyzwalacz ma sens wtedy, gdy reakcja zależy od kilku wartości, wymaga zapisania dodatkowego śladu albo musi obowiązywać przy wielu sposobach dostępu. W starszych, lokalnych programach bazodanowych wyzwalacze mogły być używane do utrzymywania automatycznych kopii wybranych informacji lub prostych rejestrów zmian. Takie rozwiązania są dziś rzadziej spotykane w typowych zgłoszeniach sprzętowych, ale ich pozostałości mogą nadal znajdować się na używanych komputerach i na starych dyskach. Przy przenoszeniu danych do innego produktu trzeba sprawdzić, czy wyzwalacze zostały odtworzone, ponieważ sama zawartość tabel nie zachowuje ich definicji. Skąd biorą się trudne do wykrycia skutkiNajczęstszy problem polega na tym, że użytkownik widzi błąd aplikacji, chociaż przyczyną jest automatyczna reguła uruchamiana dopiero podczas zapisu. Komunikat może mówić o odrzuceniu formularza, konflikcie danych albo przerwaniu transakcji, bez wskazania konkretnego wyzwalacza. Diagnoza wymaga wtedy porównania operacji wykonanej przez program z definicjami aktywnych mechanizmów bazy i z pełnym komunikatem błędu. Źródłem opóźnień bywa wyzwalacz wykonujący dodatkowe zapytania dla każdego zmienianego rekordu. Problem narasta przy imporcie, masowej aktualizacji lub usuwaniu większego zbioru danych. Niewłaściwie zaprojektowana reakcja może także powodować blokowanie tabel, wzajemne oczekiwanie transakcji albo uruchamianie kolejnych wyzwalaczy w łańcuchu. Szczególnie trudne jest wykrywanie zapętleń, gdy zapis w jednej tabeli modyfikuje drugą, a ta z kolei wywołuje logikę wracającą do pierwszej. Ryzyko pojawia się również przy zmianie struktury tabel. Wyzwalacz może odwoływać się do kolumny usuniętej, przemianowanej albo zmienionej na typ niezgodny z dotychczasową logiką. Aplikacja może wtedy działać poprawnie podczas odczytu, lecz przestawać zapisywać dane. Podobny skutek daje przywrócenie samej bazy bez powiązanych definicji, migracja do innej wersji produktu albo skopiowanie plików danych bez właściwego mechanizmu transakcyjnego. Przed wyłączeniem wyzwalacza trzeba ustalić, jakie zabezpieczenie przestanie działać. Usunięcie go może pozornie przywrócić zapis, ale jednocześnie wyłączyć historię zmian, kontrolę wartości lub aktualizację zależnych danych. Zmiany należy wykonywać po wykonaniu kopii, z zachowaniem definicji oraz z testem operacji obejmujących zarówno jeden rekord, jak i większy zbiór. Gdzie zaczyna się diagnostyka sprzętowaJeżeli baza działa na komputerze, który nagle przestał się uruchamiać, nie zapisuje danych albo zgłasza błędy odczytu, przyczyną może być uszkodzony dysk, niestabilna pamięć, problem z zasilaniem lub awaria płyty głównej. W takiej sytuacji nie należy wielokrotnie uruchamiać programu i zapisywać kolejnych kopii w tym samym miejscu, ponieważ może to nadpisać fragmenty potrzebnych danych. Najpierw warto zabezpieczyć nośnik i ustalić, czy problem dotyczy sprzętu, systemu plików, samej bazy, czy jej reguł automatycznych. Warszawskie Pogotowie Komputerowe świadczy usługi fizycznej naprawy laptopów i komputerów stacjonarnych wraz z podzespołami. Do zgłoszenia warto dołączyć dokładny komunikat, informację o tym, jaka operacja go wywołuje, oraz opis ostatnich zmian w komputerze lub programie. Jeżeli dane są ważne, nie należy samodzielnie formatować nośnika, uruchamiać narzędzi naprawczych bez kopii ani modyfikować plików bazy. Po ustabilizowaniu sprzętu można dopiero analizować definicje wyzwalaczy, historię transakcji i zgodność struktury danych z aplikacją. |