sql >> Databáze >  >> RDS >> Database

Přírůstkové maskování a mapování dat:Detekce změn a aktualizace…

Operace přírůstkové replikace dat, maskování, integrace (ETL) a další operace obnovy dat jsou běžné v často aktualizovaných databázových prostředích. Tyto úlohy vyžadují detekci přidání a aktualizací tabulek. Takové dynamické operace lze snadno automatizovat v pracovních postupech IRI Voracity navržených a spuštěných v IRI Workbench (WB).

Tento článek obsahuje příklad pracovního postupu, který mohou uživatelé edice Voracity, FieldShield, CoSort nebo NextForm DBMS implementovat k pravidelné kontrole změn ve zdrojové tabulce (v tomto případě Oracle), aby se rozhodli, kdy přesunout data do nového cíle (MySQL). Také ukazuje, jak mohou být data v rámci tohoto procesu podmíněně maskována. Všimněte si, že IRI také pracuje na přístupu založeném na protokolech ke zvyšování dat v reálném čase bez potřeby hodnot delta sloupců.

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. Zahrnuta je také kontrola chyb a lze na ni také reagovat.

Tento příklad byl vytvořen a spuštěn na počítači se systémem Windows. Lze jej snadno upravit tak, aby fungoval na platformě Linux nebo Unix.

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 CREATED_DATE a UPDATED_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. Abych to shrnul:

  • ú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í
  • V cíli je použito pravidlo pro redigování e-mailů končících na „edu“
  • v cíli je použito pravidlo pro částečnou úpravu pole SSN
  • změněná data se načtou do MySQL
  • je zkontrolována úroveň chyb, soubor dočasného časového razítka je přejmenován

Každý blok úloh v pracovním postupu je vysvětlen níže. Dva fialové bloky jsou bloky transformačního mapování a představují skripty úloh CoSort SortCL. Diagramy mapování a skripty úloh reprezentované každým z bloků jsou pro přehlednost uvedeny 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.

Tento soubor obsahuje jeden řádek:“2008-09-10 09:39:23.5”

Timestamp.scl

Tato úloha používá program SortCL 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 uchovat aktuální i poslední časové razítko, dokud neproběhne kontrola 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.

Mapovací diagram a serializovaný skript pro tuto úlohu jsou následující:

Changes.scl

Tato práce dělá hlavní extrakt, transformaci, zatížení. Vstupem je zdrojová tabulka v Oracle a výstupem je podobně formátovaná tabulka v MySQL:

Ve vstupní sekci, dotaz je odeslán do zdrojové tabulky pro všechny záznamy, které mají CREATED_DATE nebo UPDATED_DATE větší než proměnná prostředí LASTTIME . Dotaz je „VYBRAT * OD SCOTT.CLIENT WHERE CREATED> TO_TIMESTAMP(\'$LASTTIME\', \'YYYY-MM-DD HH24:MI:SS.FF1\') OR (AKTUALIZOVÁNO> DO_TIMESTAMP(\'$LASTTIME\' ', \'YYYY-MM-DD HH24:MI:SS.FF1\'))“.

Navíc je přidána podmínka pro kontrolu EMAIL sloupec pro data končící na „edu“. To bude použito ve funkci podmíněného maskování dat ve výstupu. Na výstupu je If-Then-Else výpis je přidán do EMAIL sloupec. K testování dat používá dříve vytvořenou podmínku. Pokud data končí „edu“, bude e-mailová adresa redigována. Pokud ne, e-mailová adresa se zkopíruje ze vstupu.

Druhá redakční funkce se používá v SSN sloupec. Rediguje první tři znaky, ponechá pomlčku, rediguje další dva znaky, ponechá pomlčku a ponechá poslední čtyři znaky. Například ***-**-6789.

Níže je uveden serializovaný skript úlohy SortCL popsaný výše, abyste mohli prozkoumat dotaz a podmíněnou syntaxi zahrnuté v přírůstkových rozdílech:

Chyba CoSort

Rozhodovací blok kontroluje proměnnou ERRORLEVEL abyste se ujistili, že po spuštění úlohy SortCL výše vrátil 0 (pro úspěch). Pokud se tak nestalo, úloha pokračuje do END 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.

Dávkový soubor

Dávkový soubor a transformační skripty se vytvoří při exportu vývojového diagramu (viz výše). 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, abyste mohli přesouvat, mapovat, maskovat a jinak manipulovat se změněnými daty na přírůstkový základ.

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


  1. Jaký typ dat použít pro pole hashovaného hesla a jakou délku?

  2. Jak najít umístění databáze MySQL na pevném disku?

  3. Jak číst všechny řádky z velké tabulky?

  4. Existuje v Oracle funkce, která vypočítá rozdíl mezi dvěma daty?