Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wykrywanie przyrostowych zmian w bazie danych (od Oracle do MongoDB ETL)

Wykrywanie dodatków i aktualizacji tabel bazy danych w celu replikacji danych, ETL, maskowania PII i innych czynności związanych z przyrostowym przenoszeniem i manipulacją danymi można zautomatyzować w przepływach pracy IRI Voracity zaprojektowanych i uruchamianych w IRI Workbench (WB). W tym artykule wyjaśniono, jak regularnie sprawdzać zmiany w tabelach źródłowych Oracle, aby zdecydować, kiedy przenieść dane do celu MongoDB.

Zmiany można ładować do różnych baz danych lub plików za pomocą pliku wsadowego zaplanowanego na zadania lub skryptu powłoki. Można to zrobić za pomocą znacznika czasu i określonych pól w tabeli źródłowej. Sprawdzanie błędów jest włączone i można na nie zareagować.

Ten przykład zostanie utworzony i uruchomiony na komputerze z systemem Windows; jednak można go łatwo zmodyfikować, aby działał na platformie podobnej do systemu Linux lub Unix.

Tworzenie pliku wsadowego jest łatwe dzięki diagramowi Voracity Flow w WB. W tym przykładzie tabela źródłowa zawiera kolumny o nazwie CREATION_DATE i UPDATE_DATE które są ważne w tej pracy.

Poniższy obraz przedstawia kroki zawarte w pliku wsadowym. Podsumowując:

  • zadanie jest uruchamiane w określonym katalogu
  • zmienna środowiskowa jest ustawiana przy użyciu sygnatury czasowej ostatniego uruchomienia zadania
  • aktualny znacznik czasu jest rejestrowany
  • bieżące zmiany są rejestrowane
  • poziom błędu jest sprawdzany i podejmowany, jeśli się powiedzie, czy nie
  • bieżący znacznik czasu zastępuje znacznik czasu ostatniego uruchomienia
  • zmienione dane są konwertowane na CSV
  • przerwa w oczekiwaniu na istnienie ostatniego pliku
  • plik CSV jest importowany do MongoDB
  • poziom błędu jest sprawdzany, bieżący plik jest obcinany
  • plik zmian został usunięty


Każdy blok zadań w przepływie pracy jest wyjaśniony poniżej. Więcej informacji na temat tworzenia przepływów pracy Voracity z palety można znaleźć w tym artykule.

Zmień katalog

Ten blok zmienia bieżący katalog roboczy na określony.

Ustaw LASTTIME

Ten blok wiersza poleceń ustawia zmienną środowiskową o nazwie LASTTIME . Wartość ustawiona na zmienną to zawartość pliku LastTime.txt . Znacznik czasu w tym pliku to znacznik czasu, który został zarejestrowany podczas ostatniego uruchomienia tego zadania. Jeśli jest to pierwsze uruchomienie, plik ten będzie musiał zostać utworzony ręcznie z dowolnym znacznikiem czasu datowanym przed uruchomieniem tego zadania.

Znacznik czasu.scl

Ten blok transformacji używa programu CoSort SortCL w Vorality do zapytania źródłowej bazy danych o bieżący czas. Ten znacznik czasu jest zapisywany w pliku o nazwie LastTimeTemp.txt . Powodem, dla którego jest on przechowywany w pliku tymczasowym, jest to, że można zachować zarówno bieżący, jak i ostatni znacznik czasu, dopóki nie nastąpi sprawdzenie błędów.

Ważne jest, aby znacznik czasu pochodził z bazy danych, a nie z komputera lokalnego. Pozwala to uniknąć problemów, w których baza danych i środowisko wykonawcze nie są zsynchronizowane.

Zmiany.scl

Ten blok transformacji robi kilka rzeczy. Poniżej przedstawiono diagram mapowania transformacji dla tego bloku. Wejście to tabela źródłowa, a wyjście to plik bieżący.txt .

We wpisie Opcje sekcji, zapytanie jest przesyłane do tabeli źródłowej dla wszystkich rekordów, które mają CREATION_DATE lub UPDATE_DATE większa niż zmienna środowiskowa LASTTIME .

Chociaż wydaje się, że dane wyjściowe mają dwa cele , dane są w rzeczywistości dołączane do tego samego pliku przy użyciu dwóch różnych warunków. W pierwszej sekcji danych wyjściowych znajduje się Uwzględnij oświadczenie, które znajduje wszystkie rekordy, które mają CREATION_DATE większe niż LASTTIME . Istnieje również dodatkowe pole wyjściowe o nazwie CDC_TYPE . W tym nowym polu zapisywany jest ciąg „CREATE”.

W drugiej sekcji danych wyjściowych Uwzględnij instrukcja znajduje wszystkie rekordy, które mają UPDATE_DATE większe niż LASTTIME i gdzie CREATION_DATE nie jest równa UPDATE_DATE. Gwarantuje to, że nowo utworzone pliki nie zostaną uwzględnione w tym przejściu. Ciąg „UPDATE” jest zapisywany w CDC_TYPE.

Błąd CoSort

Ten blok decyzyjny sprawdza zmienną ERRORLEVEL aby upewnić się, że zwrócił 0 (lub sukces) po uruchomieniu powyższego zadania CoSort. Jeśli tak się nie stało, zadanie jest kontynuowane do WYJŚCIA blok, w którym zadanie jest zakończone. Jeśli zwróci true, zadanie przechodzi do następnego bloku.

Zmień nazwę LastTimeTemp

Ten blok poleceń kopiuje zawartość LastTimeTemp.txt do LastTime.txt. To zapisuje poprzednio przechwycony bieżący znacznik czasu w pliku, który zostanie użyty do następnego uruchomienia zadania.

Konwertuj.scl

Ten blok transformacji zajmuje bieżący.txt i konwertuje go na changes.csv . Konwersja odbywa się z domyślnego rozdzielanego typu pliku na CSV. Użycie typu procesu CSV w CoSort dodaje wiersz nagłówka do pliku wyjściowego, używając nazw pól. To jest blok zadań, w którym mogę zastosować inne manipulacje (takie jak maskowanie danych) na danych, jeśli tak zechcę.

Pliki oczekiwania

Ten blok oczekiwania zatrzymuje plik wsadowy na 3 sekundy, a następnie sprawdza istnienie pliku changes.csv plik przed kontynuowaniem.

MongoImport

Ten blok poleceń wykonuje polecenie mongoimport przy użyciu parametrów określonych w widoku właściwości, jak pokazano poniżej.

Parametry wskazują, że baza danych MongoDB o nazwie fnx ma być załadowana zawartością pliku changes.csv który jest typu csv i zawiera nagłówek który definiuje pola.

Zauważ, że Vorcity obsługuje inne metody przenoszenia i manipulowania danymi MongoDB. Zobacz przykład użycia sterowników Progress ODBC do maskowania danych za pomocą wbudowanych funkcji „FieldShield”. Voracity może również przetwarzać dane BSON bezpośrednio przez API dzięki obsłudze /PROCESS=MongoDB w CoSort v10.

Błąd ładowania

Ten blok decyzyjny sprawdza zmienną ERRORLEVEL aby upewnić się, że zwrócił 0 (lub sukces) po zaimportowaniu do MongoDB. Jeśli tak się nie stało, zadanie jest kontynuowane do Usuń-Zmiany i WYJŚCIE bloki, w których zadanie jest zakończone. Jeśli zwróci true, zadanie przechodzi do następnego bloku.

Obetnij prąd

Ten blok poleceń obcina plik bieżący.txt . Ma to na celu wyczyszczenie rekordów załadowanych do MongoDB. Jeśli import się nie powiódł, a powyższy blok opuścił zadanie, te zmienione rekordy są dołączane do następnego przebiegu. Następnie, w miarę powtarzania zadania, byłyby one ładowane do MongoDB z następną grupą zmienionych rekordów.

Usuń zmiany

Ten blok poleceń usuwa changes.csv aby kolejny przebieg był uruchamiany z nowo utworzonym plikiem dla przebiegu.

Plik wsadowy

Plik wsadowy i skrypty transformacji są tworzone podczas eksportowania diagramu przepływu. Kopia pliku wsadowego znajduje się poniżej. Każdy blok dodaje linie wykonywalne do pliku wsadowego.

Harmonogram zadań

Używając Harmonogramu Zadań Windows, ten plik wsadowy może być wykonywany wielokrotnie w celu przechwycenia zmian w źródłowej bazie danych.

Wniosek

Przy odrobinie planowania i użyciu bloków poleceń zmiany w tabeli bazy danych można wykryć automatycznie za pomocą pliku wsadowego, a następnie zaplanować uruchamianie w wybranych odstępach czasu.

Skontaktuj się z [email protected] lub z przedstawicielem IRI, aby uzyskać więcej informacji lub pomoc w przypadku użycia

  1. To podejście różni się od opartych na logach rozwiązań do przechwytywania danych o zmianach, które zazwyczaj mają wąskie gardła wydajności i są ograniczone do określonych baz danych i nie umożliwiają jednoczesnej transformacji danych, maskowania danych osobowych, czyszczenia i raportowanie.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj według aliasów (Oracle)

  2. PARTITION BY z i bez KEEP w Oracle

  3. Uruchom Oracle Forms jako samodzielny bez przeglądarki

  4. Jak obliczany jest współczynnik klastrowania Oracle Index

  5. Klucze podstawowe i indeksy w języku zapytań Hive są poosible czy nie?