sql >> Databáze >  >> RDS >> Oracle

Detekce přírůstkových změn databáze (Oracle až MongoDB ETL)

Detekci přidání a aktualizací databázových tabulek pro replikaci dat, ETL, maskování PII a další činnosti související s pohybem a manipulací s daty lze automatizovat v pracovních postupech IRI Voracity navržených a spuštěných v IRI Workbench (WB). Tento článek vysvětluje, jak pravidelně kontrolovat změny ve zdrojových tabulkách Oracle, abyste se rozhodli, kdy přesunout data do cíle MongoDB.

Změny lze načíst do různých databází nebo souborů pomocí dávkového souboru naplánovaného na úkol nebo skriptu shellu. To lze provést pomocí časového razítka a konkrétních polí ve zdrojové tabulce. Součástí je kontrola chyb a lze na ni také reagovat.

Tento příklad bude vytvořen a spuštěn na počítači se systémem Windows; lze jej však snadno upravit tak, aby fungoval na platformě podobné Linuxu nebo Unixu.

Vytvoření dávkového souboru je snadné pomocí diagramu Voracity Flow ve WB. V tomto příkladu zdrojová tabulka obsahuje sloupce s názvem CREATION_DATE a UPDATE_DATE které jsou v této práci důležité.

Obrázek níže ukazuje kroky, které jsou obsaženy v dávkovém souboru. Shrnutí:

  • úloha je spuštěna v konkrétním adresáři
  • proměnná prostředí je nastavena pomocí časového razítka posledního spuštění úlohy
  • zaznamená se aktuální časové razítko
  • aktuální změny jsou zachyceny
  • úroveň chyb je zkontrolována a podle toho, zda je úspěšná či nikoli, se podle ní jedná
  • aktuální časové razítko přepíše časové razítko posledního spuštění
  • změněná data se převedou do formátu CSV
  • dojde k zablokování čekání na existenci posledního souboru
  • soubor CSV je importován do MongoDB
  • úroveň chyb je zkontrolována, aktuální soubor je zkrácen
  • soubor změn je smazán


Každý blok úloh v pracovním postupu je vysvětlen níže. Návod na vytváření pracovních postupů Voracity z palety naleznete v tomto článku.

Změnit adresář

Tento blok změní aktuální pracovní adresář na určený.

Nastavit LASTTIME

Tento blok příkazového řádku nastavuje proměnnou prostředí nazvanou LASTTIME . Hodnota nastavená na proměnnou je obsahem souboru LastTime.txt . Časové razítko v tomto souboru je časové razítko, které bylo zaznamenáno během posledního spuštění této úlohy. Pokud se jedná o první spuštění, tento soubor bude nutné vytvořit ručně s libovolným časovým razítkem datovaným před spuštěním této úlohy.

Timestamp.scl

Tento transformační blok používá program CoSort SortCL ve Voracity k dotazu na zdrojovou databázi pro aktuální čas. Toto časové razítko se uloží do souboru s názvem LastTimeTemp.txt . Důvod, proč je uložen v dočasném souboru, je ten, že lze zachovat aktuální i poslední časové razítko, dokud nedojde ke kontrole chyb.

Je důležité, aby časové razítko pocházelo z databáze, nikoli z místního počítače. Vyhnete se tak problémům, kdy databáze a prováděcí prostředí nejsou synchronizovány.

Changes.scl

Tento transformační blok dělá několik věcí. Níže je zobrazen diagram mapování transformace pro tento blok. Vstupem je zdrojová tabulka a výstupem je soubor current.txt .

Ve vstupu Možnosti sekce, dotaz je odeslán do zdrojové tabulky pro všechny záznamy, které mají CREATION_DATE nebo UPDATE_DATE větší než proměnná prostředí LASTTIME .

I když se zdá, že výstup má dva cíle, data se ve skutečnosti připojují ke stejnému souboru pomocí dvou různých podmínek. V první výstupní sekci je Zahrnout příkaz, který najde všechny záznamy, které mají CREATION_DATE větší než LASTTIME . Existuje také další výstupní pole nazvané CDC_TYPE . Do tohoto nového pole se zaznamená řetězec „CREATE“.

Ve druhé výstupní sekci Zahrnout příkaz najde všechny záznamy, které mají UPDATE_DATE větší než LASTTIME a kde CREATION_DATE se nerovná UPDATE_DATE. To zajistí, že nově vytvořené soubory nebudou zahrnuty do tohoto průchodu. Řetězec „UPDATE“ je zaznamenán v CDC_TYPE.

Chyba CoSort

Tento rozhodovací blok kontroluje proměnnou ERRORLEVEL abyste se ujistili, že po spuštění úlohy CoSort výše vrátil 0 (nebo úspěch). Pokud se tak nestalo, úloha pokračuje do EXIT blok, kde je úloha ukončena. Pokud vrátí hodnotu true, úloha pokračuje do dalšího bloku.

Přejmenovat LastTimeTemp

Tento příkazový blok zkopíruje obsah LastTimeTemp.txt do LastTime.txt. Tím se do souboru zaznamená dříve zachycené aktuální časové razítko, které se použije pro další spuštění úlohy.

Convert.scl

Tento transformační blok trvá current.txt a převede jej na changes.csv . Převod je z výchozího typu souboru s oddělovači na CSV. Použití typu procesu CSV v CoSort přidá řádek záhlaví k výstupnímu souboru pomocí názvů polí. Toto je blok úloh, kde mohu použít další manipulace (jako je maskování dat), pokud se tak rozhodnu.

Počkejte na soubory

Tento blok čekání zastaví dávkový soubor na 3 sekundy a poté zkontroluje existenci souboru changes.csv soubor před pokračováním.

MongoImport

Tento příkazový blok spustí příkaz mongoimport pomocí parametrů zadaných v zobrazení vlastností, jak je uvedeno níže.

Parametry ukazují, že databáze MongoDB se jmenuje fnx se má načíst obsah souboru changes.csv který je typu csv a obsahuje nadpis který definuje pole.

Pamatujte, že Voracity podporuje další metody přesunu a manipulace s daty MongoDB. Podívejte se na tento příklad použití ovladačů Progress ODBC pro maskování dat pomocí vestavěných funkcí „FieldShield“. Voracity může také zpracovávat data BSON přímo přes API prostřednictvím podpory /PROCESS=MongoDB v CoSort v10, nyní také.

Chyba při načítání

Tento rozhodovací blok kontroluje proměnnou ERRORLEVEL abyste se ujistili, že po importu do MongoDB vrátil 0 (nebo úspěch). Pokud se tak nestalo, úloha pokračuje Odstranit změny a KONEC bloky, kde je úloha ukončena. Pokud vrátí hodnotu true, úloha pokračuje do dalšího bloku.

Zkrátit aktuální

Tento příkazový blok zkrátí soubor current.txt . Toto slouží k vymazání záznamů, které byly načteny do MongoDB. Pokud import selhal a výše uvedený blok opustil úlohu, pak jsou tyto změněné záznamy připojeny k dalšímu průchodu. Poté, jak se úloha opakovala, byly načteny do MongoDB s další skupinou změněných záznamů.

Odstranit změny

Tento příkazový blok odstraní changes.csv takže další průchod je zahájen s nově vytvořeným souborem pro průchod.

Dávkový soubor

Dávkový soubor a transformační skripty se vytvoří při exportu vývojového diagramu. Kopie dávkového souboru je níže. Každý blok přidá spustitelné řádky do dávkového souboru.

Plánovač úloh

Pomocí Plánovače úloh systému Windows lze tento dávkový soubor spouštět opakovaně, aby se zachytily změny ve zdrojové databázi.

Závěr

S trochou plánování a použitím příkazových bloků lze změny v databázové tabulce detekovat automaticky pomocí dávkového souboru a poté naplánovat spouštění ve vybraných intervalech.

Kontaktujte [email protected] nebo svého zástupce IRI pro další informace nebo pomoc s případem použití

  1. Tento přístup se liší od řešení pro sběr dat o změnách založených na protokolech, která mají obvykle problémová místa ve výkonu a jsou omezena na konkrétní databáze a neumožňují současnou transformaci dat, maskování údajů umožňujících zjištění totožnosti, čištění a přehledy.

  1. Snadný způsob výběru pravého sloupce jako primárního klíče pro danou tabulku

  2. Jak vytisknout 1 až 10 bez použití smyčky v PL/SQL?

  3. Udržování agnostické databáze aplikace (ADO.NET vs zapouzdřující logika DB)

  4. databáze přejmenování postgres nefunguje