Wykrywanie zmian

0

Cześć,
Mam do wykonania jedno zadanie i nie wiem jak się za to zabrać.
Mam bazę danych Microsoftu do niej muszę podpiąć bazę danych oracle - z tym sobię raczej poradzę. W bazie oracle będę miał wystawiony widok. Tabela 3 kolumny(do ~10000 rekordów).
Przekopiuję sobię tabelę z widoku do swojej, ale ten widok może być edytowany. Zmieni się np. wartość w jakieś komórce, dojdzie jakiś wiersz albo coś zostanie usunięte.
I tu jest moje pytanie w jaki sposób wykryć zmiany w tym widoku?

2

LEFT JOIN po trzech (wszystkich) kolumnach z NULLem.

1

Masz jeszcze takie operatory jak: MINUS/EXCEPT, INTERSECT, UNION.

Możesz zrobić różnice symetryczną i ją jakoś przetworzyć.

A MINUS (A INTERSECT B)  
UNION ALL
B MINUS (A INTERSECT B) 
1

Jeśli chcesz wykrywać zmiany i wprowadzać je do siebie to możesz dane:
a) ciągnać
b) pchać.
:)

Wyciąganie co się zmieniło w całym zbiorze jest kosztowne, chyba że robisz to relatywnie rzadko (np. raz na dzień/tydzień/miesiąc). Lepiej wypychać informacje z bazy źródłowej, o tym co się zmieniło, czyli taki klasyczny mechanizm różnicowego zasilania hurtowni danych czy czegoś w tym rodzaju.
Jeśli masz możliwość utworzenia triggera w bazie źródłowej to skorzystaj z tego. Stwórz tabelę interfejsową w bazie źródłowej, do której trigger będzie zapisywać zmiany (z oznaczeniem czy jest to nowy rekord, zmiana czy usunięcie). Potem pobieraj te dane i aktualizuj swoją tabelę.

Możesz też w bazie docelowej utworzyć widok zmaterializowany pobierający dane ze zdalnej tabeli (zakładając, że baza pozwala na takie rozwiązanie). Wtedy odświeżając go regularnie masz zapewnioną aktualizację... ale raczej nie zmienisz w nim danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1