sql >> Database teknologi >  >> RDS >> Database

Inkrementel datamaskering og kortlægning:Registrering af ændringer og opdatering...

Inkrementel datareplikering, maskering, integration (ETL) og andre dataopdateringsoperationer er almindelige i hyppigt opdaterede databasemiljøer. Disse job kræver registrering af tilføjelser og opdateringer til tabeller. Sådanne dynamiske operationer er nemme at automatisere i IRI Voracity-arbejdsgange designet og kørt i IRI Workbench (WB).

Denne artikel indeholder et workflow-eksempel, som Voracity-, FieldShield-, CoSort- eller NextForm DBMS-udgavebrugere kan implementere for regelmæssigt at tjekke for ændringer i en kildetabel (Oracle i dette tilfælde) for at beslutte, hvornår data skal flyttes til et nyt mål (MySQL). Det viser også, hvordan data kan maskeres betinget som en del af denne proces. Bemærk, at IRI også arbejder på en logbaseret tilgang til inkrementering af data i realtid uden behov for deltakolonneværdier.

Ændringer kan indlæses i forskellige databaser eller filer ved hjælp af en opgaveplanlagt batchfil eller shell-script. Dette kan gøres ved hjælp af et tidsstempel og specifikke felter i kildetabellen. Fejlkontrol er også inkluderet og kan også reageres på.

Dette eksempel blev oprettet og kørt på en Windows-maskine. Det kan nemt ændres til at fungere på en Linux- eller Unix-platform.

Det er nemt at oprette batchfilen ved at bruge et Voracity Flow-diagram i WB. I dette eksempel indeholder kildetabellen kolonner med navnet CREATED_DATE og UPDATED_DATE som er vigtige i dette job.

Billedet nedenfor viser de trin, der er indeholdt i batchfilen. For at opsummere:

  • jobbet køres i en bestemt mappe
  • en miljøvariabel indstilles ved hjælp af tidsstemplet for den sidste jobkørsel
  • det aktuelle tidsstempel registreres
  • aktuelle ændringer registreres
  • fejlniveauet kontrolleres og reageres på, hvis det lykkes eller ej
  • det aktuelle tidsstempel overskriver det seneste tidsstempel
  • en regel til at redigere e-mails, der ender på "edu", bruges i målet
  • en regel til delvist at redigere SSN-feltet bruges i målet
  • de ændrede data indlæses i MySQL
  • fejlniveauet er kontrolleret, den midlertidige tidsstempelfil omdøbes

Hver opgaveblok i arbejdsgangen er forklaret nedenfor. De to lilla blokke er transformerede mapping-blokke og repræsenterer CoSort SortCL-jobscripts. Kortlægningsdiagrammerne og jobscripts repræsenteret af hver af blokkene er vist nedenfor for overskuelighed. Se denne artikel for at få en vejledning i at opbygge Voracity-arbejdsgange fra paletten.

Skift bibliotek

Denne blok ændrer den aktuelle arbejdsmappe til den specificerede.

Indstil LASTTIME

Denne kommandolinjeblok indstiller en miljøvariabel kaldet LASTTIME . Værdien indstillet til variablen er indholdet af filen LastTime.txt . Tidsstemplet i denne fil er det tidsstempel, der blev registreret under den sidste kørsel af dette job. Hvis dette er den første kørsel, skal denne fil laves manuelt med et vilkårligt tidsstempel dateret, før dette job køres.

Denne fil indeholder én linje:"2008-09-10 09:39:23.5"

Timestamp.scl

Denne opgave bruger SortCL-programmet til at forespørge kildedatabasen for det aktuelle tidspunkt. Dette tidsstempel gemmes i en fil kaldet LastTimeTemp.txt . Grunden til, at det er gemt i en midlertidig fil, er, at både de nuværende og sidste tidsstempler kan bevares, indtil fejlkontrol sker.

Det er vigtigt, at tidsstemplet kommer fra databasen, og ikke den lokale maskine. Dette undgår problemer, hvor databasen og udførelsesmiljøet ikke er synkroniseret.

Kortlægningsdiagrammet og det serialiserede script for dette job er som følger:

Changes.scl

Dette job udfører hovedudtræk, transformation, belastning. Input er kildetabellen i Oracle og output er en tilsvarende formateret tabel i MySQL:

I inputsektionen, en forespørgsel sendes til kildetabellen for alle poster, der har en CREATED_DATE eller UPDATED_DATE større end miljøvariablen LASTTIME . Forespørgslen er "SELECT * FROM SCOTT.CLIENT WHERE CREATED> TO_TIMESTAMP(\'$SIDSTEGANG\', \'ÅÅÅÅ-MM-DD HH24:MI:SS.FF1\') ELLER (OPDATERET> TO_TIMESTAMP(\'$SIDSTEGANG\') ', \'ÅÅÅÅ-MM-DD HH24:MI:SS.FF1\'))".

Derudover tilføjes en betingelse for at kontrollere EMAIL kolonne for data, der ender på "edu". Dette vil blive brugt i en betinget datamaskeringsfunktion i output. I outputtet er en If-Then-Else erklæring er tilføjet til EMAIL kolonne. Den bruger den tidligere oprettede betingelse til at teste dataene. Hvis dataene ender på "edu", bliver e-mailadressen redigeret. Hvis ikke, kopieres e-mailadressen fra input.

En anden redigeringsfunktion bruges i SSN kolonne. Den redigerer de første tre tegn, forlader bindestregen, redigerer de næste to tegn, forlader bindestregen og forlader de sidste fire tegn. For eksempel ***-**-6789.

Nedenfor er det serialiserede SortCL-jobscript beskrevet ovenfor, så du kan undersøge forespørgslen og den betingede syntaks involveret i de inkrementelle deltaer:

Fejl CoSort

Beslutningsblokken kontrollerer variablen ERRORLEVEL for at sikre, at den returnerede 0 (for succes) efter at have kørt SortCL-jobbet ovenfor. Hvis det ikke gjorde det, fortsætter jobbet til END blok, hvor jobbet afsluttes. Hvis det returnerer sandt, fortsætter jobbet til næste blok.

Omdøb LastTimeTemp

Denne kommandoblok kopierer indholdet af LastTimeTemp.txt til LastTime.txt . Dette registrerer det tidligere registrerede aktuelle tidsstempel i filen, der skal bruges til næste jobkørsel.

Batchfil

Batchfilen og transformationsscripts oprettes, når flowdiagrammet (vist ovenfor) eksporteres. En kopi af batchfilen er nedenfor. Hver blok tilføjer eksekverbare linjer til batchfilen.

Opgaveplanlægning

Ved at bruge Windows Task Scheduler kan denne batchfil udføres gentagne gange for at fange ændringerne i kildedatabasen.

Konklusion

Med lidt planlægning og brug af kommandoblokke kan ændringer i en databasetabel registreres automatisk ved hjælp af en batch-fil, og derefter planlægges til at køre med udvalgte intervaller, så du kan flytte, kortlægge, maskere og på anden måde manipulere ændrede data på en trinvis grundlag.

Kontakt [email protected] eller din IRI-repræsentant for at få flere oplysninger eller hjælp til din brugssag.


  1. Sådan angives sorteringen i en forespørgsel i SQL Server (T-SQL)

  2. Trigger med dynamisk feltnavn

  3. Vælg N. række fra en tabel i Oracle

  4. Hvad er en Bitmap-heap-scanning i en forespørgselsplan?