Mapowanie baz danych z obsługą wyjątków

Kluczowe procesy biznesowe zależą od wiarygodnych danych, a administratorzy baz danych oraz inni analitycy danych muszą mieć pewność co do integralności informacji przechowywanych w tabelach baz danych. Podczas automatycznych operacji ETL (ekstrakcja, transformacja, ładowanie) lub innych zadań importu danych, mogą wystąpić nieprawidłowe dane, które zagrażają powodzeniu procesu. Altova MapForce oferuje mechanizmy obsługi wyjątków w bazach danych, które pozwalają na cofnięcie zmienionych danych w przypadku wystąpienia błędu oraz, opcjonalnie, kontynuowanie przetwarzania pozostałych danych w bazie.

Na przykład, błąd w pojedynczym rekordzie nie musi uniemożliwiać dalszego działania procesu mapowania. Może się to zdarzyć, gdy pewne ograniczenia bazy danych uniemożliwiają zapisywanie lub aktualizowanie nieprawidłowych danych.

Włączenie obsługi wyjątków w bazie danych obejmuje wszystkie zmiany w komponentach bazy danych w transakcjach, które można wycofać w przypadku wystąpienia błędu. Użytkownicy mogą zdecydować, czy kontynuować proces mapowania, czy też przerwać dalsze wykonywanie. Transakcje można włączyć na poziomie komponentu bazy danych, na poziomie tabeli lub dla procedur składowanych.

Obsługa wyjątków może być nawet połączona z rejestrowaniem (śledzeniem) danych wyjściowych z bazy danych, co pozwala na stworzenie rejestru błędów występujących podczas automatycznego przetwarzania.

Sprawdźmy, jak to działa.

Folder z przykładami MapForce zawiera mapowanie bazy danych oraz bazę danych SQLite, które ilustrują obsługę transakcji i możliwość ich wycofywania. Oczywiście, te funkcje są obsługiwane dla wszystkich popularnych relacyjnych baz danych, a służą do realizacji typowych zadań, takich jak konwersja z PostgreSQL do SQLite, mapowanie XML na SQL Server, konwersja JSON na Access i tak dalej.

To mapowanie kopiuje dane z dwóch tabel baz danych do nowych tabel o podobnej strukturze, z wyjątkiem jednej istotnej różnicy. W tabeli "new_addresses" w docelowej bazie danych, pola "is_shipping" i "is_billing" nie mogą zawierać wartości null, podczas gdy w tabeli "addresses" w źródłowej bazie danych dopuszczalne były wartości null. Oznacza to, że podczas wykonywania mapowania mogą wystąpić błędy, jeśli napotkane zostaną brakujące wartości.

Przyjrzymy się trzem sytuacjom, w których wykorzystamy różne opcje obsługi wyjątków w bazie danych, aby radzić sobie z błędami na różne sposoby

  • W przypadku wystąpienia pierwszego błędu, przywróć wszystkie zmiany i zatrzymaj proces mapowania

  • Wycofaj tylko transakcję, która spowodowała błąd, i kontynuuj

  • Cofnij ostatnią transakcję i kontynuuj

Przywróć wszystkie zmiany

W pierwszej sytuacji, chcemy zastosować mechanizm obsługi wyjątków w bazie danych, aby w przypadku wystąpienia jakiegokolwiek błędu podczas procesu mapowania, baza danych docelowa pozostała całkowicie niezmieniona. Aby zaimplementować tę opcję, możemy otworzyć okno dialogowe "Właściwości" dla komponentu bazy danych docelowej i włączyć obsługę transakcji:

Teraz możemy wykonać mapowanie, klikając przycisk "Wyjście" znajdujący się na dole panelu mapowania, aby wygenerować skrypt SQL. Następnie, z menu "Wyjście" znajdującego się nad oknem skryptu, wybierz opcję "Uruchom skrypt SQL"

Podczas wykonywania, jeśli wystąpi pierwszy błąd, wyświetlany jest komunikat, który pozwala nam potwierdzić lub zmienić ustawienia transakcji, które wybraliśmy wcześniej

Po prostu klikniemy przycisk OK, aby potwierdzić nasze początkowe ustawienia. Proces mapowania zostanie zatrzymany, a okno "Wiadomości" wyświetli opis błędu:

Możemy użyć wbudowanego okna MapForce DB Query, aby przeglądać tabele "new_users" i "new_addresses". Oczekujemy, że obie te tabele będą puste:

To potwierdza, że wszelkie dane wprowadzone przed wystąpieniem błędu zostały cofnięte, czyli usunięte z bazy danych.

Podczas automatycznego działania, kontrolowanego przez serwer MapForce, ustawienia transakcji komponentu będą wykorzystywane bez żadnych przerw.

Wycofaj ostatnią transakcję i kontynuuj

Wyobraźmy sobie sytuację, w której konieczne jest zaimportowanie do bazy danych duży plik zawierający dane zewnętrzne, powiedzmy dziesięć tysięcy rekordów lub więcej. Zakładamy, że plik zewnętrzny jest poprawny, ale jeśli kilka rekordów zawiera błędne dane, chcemy zaimportować wszystkie poprawne rekordy i jednocześnie udokumentować błędy. Jest to sytuacja związana z obsługą wyjątków w bazie danych, opisana jako sytuacja numer 2 w powyższej liście, w połączeniu z mechanizmem śledzenia działania bazy danych, opisanym we wcześniejszym wpisie.

Aby włączyć tę opcję obsługi wyjątków dla tabeli "new_addresses", klikamy przycisk akcji dla tej tabeli i wybieramy następujące właściwości:

Teraz możemy wygenerować nowy skrypt SQL i uruchomić go, korzystając z tego samego polecenia "Uruchom skrypt SQL", o którym wspomniano wcześniej. Okno "Wiadomości" wyświetli kilka błędów. Możemy ponownie uruchomić zapytanie SQL w oknie "Zapytanie do bazy danych", aby zobaczyć dane, które zostały poprawnie zmapowane:

Dodatkowo, wygenerowaliśmy plik śledzenia w formacie XML. Poniższy obrazek przedstawia fragment widoku w oknie edytora XML XMLSpy do edycji plików XML dla jednego błędu, wyróżnionego na linii 54:

Taki plik śledzenia ułatwia znalezienie i naprawienie nawet kilku błędnych rekordów spośród dziesięciu tysięcy!

Wycofaj ostatnią transakcję i kontynuuj

Sytuacja 3 związana z obsługą wyjątków w bazie danych spełnia to wymaganie biznesowe: jeśli nie można dodać adresu, to również rekord użytkownika nadrzędnego nie powinien zostać dodany, ale pozostała część procesu mapowania powinna zostać kontynuowana.

Ten przykład jest szczegółowo opisany w instrukcji MapForce Online, która jest automatycznie instalowana wraz z programem MapForce, oraz we wszystkich plikach demonstracyjnych prezentowanych tutaj. Zachęcamy do pobrania bezpłatnej wersji próbnej i zapoznania się z tym przykładem, lub od razu przystąpić do implementacji obsługi wyjątków w bazach danych w swoich własnych mapowaniach!