sql >> Database teknologi >  >> NoSQL >> MongoDB

Native MongoDB-maskering (3. metode)

Bemærk:Denne artikel dækker den tredje tilgængelige IRI-kundemetode til statisk maskering eller kryptering af PII i strukturerede MongoDB-samlinger gennem IRI FieldShield-produktet eller IRI Voracity-platformen (begge drevet af IRI CoSort v10 og dens understøttelse af den oprindelige MongoDB-driver). En fjerde metode er nu tilgængelig til at finde og maskere PII flydende i ustrukturerede MongoDB-samlinger gennem IRI DarkShield.

Denne artikel forklarer, hvordan ny, indbygget MongoDB-indsamlingsunderstøttelse i IRIs datamanipulationsprodukter muliggør hurtig ydeevne og konsolidering af flere datacentrerede funktioner, herunder:

  • dataprofilering og -rensning
  • datamaskering og re-ID risikoscoring
  • dataintegration (ETL) &CDC
  • datamigrering og replikering
  • generering af brugerdefinerede rapporter og testdata

API-niveau-understøttelse af MongoDB-data tilbydes i SortCL-kerneprogrammet, som er standardbehandlingsmotoren for IRI Voracity-dataadministrationsplatformen, såvel som dens undergruppeprodukter:CoSort, NextForm, FieldShield og RowGen. Denne forbindelsesmetode er den tredje og hurtigste måde, hvorpå IRI-kunder kan erhverve og manipulere data i MongoDB-samlinger. Den første er via flade filer som beskrevet i 2014 her. Den anden er med ODBC- og JDBC-drivere beskrevet i 2016 her.

Om MongoDB

MongoDB er en "NoSQL", dokumentorienteret database, som arbejder på konceptet samlinger og JSON-lignende dokumenter med skemaer. En samling, ligesom en relationsdatabasetabel, indeholder et eller flere dokumenter.

Et dokument er et sæt nøgleværdi-par. Dokumenter har et dynamisk skema, hvilket betyder, at dokumenter i samme samling ikke behøver at have samme sæt felter eller struktur. Fælles felter i en samlings dokumenter kan indeholde forskellige typer data.

Følgende diagram sammenligner terminologien for en RDBMS og MongoDB:

Oracle MongoDB
Database Database
Tabel Samling
Række Dokument
Kolonne Felt
Primær nøgle Objekt-id leveret af MongoDB

Demonstration

Mit eksempel nedenfor udfører en simpel sortering, maske og flytning af en MongoDB-samling kaldet "chefer" til en anden samling og også ud til en selvstændig JSON-fil. JSON-filer er en anden ny IRI-datakilde, der understøttes i udgivelsen af ​​CoSort v10.

Databaseforbindelse

Det første trin er at etablere forbindelse med din MongoDB-instans i IRI Workbench. IRI Workbench er bygget på Eclipse og er den fælles jobdesign- og implementerings-IDE for al den IRI-software, der er anført ovenfor. Det er også her, du kan oprette forbindelse til andre DB'er, HDFS og yderligere datakilder i lokale eller eksterne filsystemer.

Fra IRI-menuen (virvelikon) på Workbench-værktøjslinjen skal du vælge IRI-præferencer> IRI> URL-forbindelsesregister> Tilføj . Angiv en eksisterende MongoDB fra skemaet og serverens værtsnavn. Min DB's navn er cmitra, oprettet på 'mongodbu' værten:

For nemheds skyld installerede jeg det gratis MonjaDB plug-in til Eclipse for at interagere med databasen i mit Workbench-perspektiv. Min samling indeholder amerikanske præsidenter efter navn, parti, stat og deres valgdatoer. MongoDB tildelte et unikt ID for hvert dokument:

Metadatadefinition

Før jeg kan behandle MongoDB-data i denne tilstand, skal jeg oprette en DDF-fil (Data Definition Format), der opstiller mine samlingsdokumenter i /FIELD-sætninger til brug i SortCL-kompatible job som FieldShield. Som med andre datakilder, der understøttes i Workbench, gør en guide dette automatisk for mig.

Opret (eller vælg en eksisterende) projektmappe i Workbench for at gemme jobaktiver som kildemetadata, SortCL-script/diagram, gemte maskeringsregler, dataklasser osv. Med den mappe aktiv (fremhævet) og kendskab til min MongoDB-samlings placering, Jeg kan nu køre Opdag metadata guiden fra IRI-menuen i den øverste værktøjslinje.

I dette datakildeidentifikationstrin kan jeg vælge en ODBC-forbindelse, fil-gennemse eller URL. I dette tilfælde når jeg MongoDB via URL, så jeg vælger det og MongoDB til mit format. Efter at have søgt efter databaseregistreringsposten, jeg tidligere tilføjede, indtaster jeg samlingens navn. Guiden forudsætter dette til standard MongoDB-forbindelsesstrengen.

Siden Data Viewer og Field Editor forbinder til samlingen og viser dens kolonneindhold og kolonner som SortCL-feltnavne:

Når jeg klikker på Udfør , min DDF-fil oprettes og vises som følger:

/FIELD=(PRESIDENT, TYPE=UTF8, POSITION=1, SEPARATOR="|", MDEF="president")
/FIELD=(PARTY, TYPE=UTF8, POSITION=2, SEPARATOR="|", MDEF="party")
/FIELD=(STATE, TYPE=UTF8, POSITION=3, SEPARATOR="|", MDEF="state")
/FIELD=(START, TYPE=NUMERIC, POSITION=4, SEPARATOR="|", MDEF="term.start")
/FIELD=(END, TYPE=NUMERIC, POSITION=5, SEPARATOR="|", MDEF="term.end")

Disse DDF-metadata kan bruges i ethvert job (eller job), der påvirker denne samling, inklusive det i dette eksempel som vist nedenfor. Kolonnen _id er unødvendig til mit formål blev udeladt.

Bemærk brugen af ​​punktnotation i "MDEF"-attributten, som er en nødvendig stidefinition for at behandle diskrete, flade elementer SortCL-job. Multiværdi- og underdokumentarrayelementer genereres i rækkefølge, der starter med 0 i deres rækkefølge.

Kør Job Design Wizard

Workbench indeholder mange forskellige egnet til formålet guider til generering af metadata til at køre diskrete opgaver (.*cl scripts) eller batch-drevne job (.flow og .bat/.sh filer) på kommandolinjen gennem Workbench, dine programmer osv.

Jeg valgte en grundlæggende sorteringstransformationsguide, fordi jeg i den kan tilføje flere mål, maske outputfelter osv. Denne guide kører fra CoSort-menugruppen (stopur)-ikonet fra værktøjslinjen. Jeg vælger Nyt sorteringsjob og specificerede chiefsout.scl som navnet på mit job:

I næste trin identificerer jeg navnet på min MongoDB-kildesamling, og hvor den er, ved at bruge den samme lokaliserings-URL, der blev brugt under metadatadefinitionen for "chefer":

Det næste trin er at specificere genereringen eller brugen af ​​eksisterende metadata til indsamlingen i det datadefinitionsformat (DDF), der kræves i alle SortCL-kompatible programmer. I dette tilfælde vil jeg bruge DDF-filen, jeg oprettede i trin 2 ovenfor. Jeg vælger Tilføj eksisterende metadata at sætte disse layouts direkte ind i mit jobscript som inputspecifikationer, og de bliver derefter afspejlet i dialogen nedenfor:

På den næste side angiver jeg et sorteringsnøglefelt for at definere rækkefølgen af ​​data i mine mål. I dette tilfælde vil jeg gå fra den kronologiske standardrækkefølge af præsidenter og sortere dem efter navn:

Efter at have klikket på Næste , vises siden Datamål. Som med mine kildemuligheder, er der flere forskellige slags mål, jeg kan oprette og formatere gennem denne guide og også senere i en anden jobdesigntilstand (f.eks. script-editor).

Denne og andre Workbench-guider giver mig mulighed for at blive ved med at tilføje mål og detaljeret definere indholdet af hver enkelt. Målspecifikke attributter omfatter:format (f.eks. CSV, MongoDB, MFVL), formatering (f.eks. sidehoveder og sidefødder, rækker, der skal springes over osv.), filterbetingelser, layout på feltniveau og anvendte funktioner/regler (f.eks. nye datatyper, masker, udtrykslogik, aggregering).

På siden Datamål ved jeg, at jeg vil have to mål:en selvstændig JSON-fil og en ekstern MongoDB-samling. Derfor klikker jeg på Tilføj datamål og begynd at specificere den første. Medmindre jeg redigerer målindstillingerne eller målfeltlayoutet, vil mit output kun indeholde den sorterede version af inputdataene, som de er. Det er, hvad min JSON-målfil vil indeholde ved blot at jeg navngiver den..

Når jeg igen klikker på Tilføj datamål Jeg definerer den anden som en MongoDB-samling via URL. Min nye chefmaske samling vil automatisk bygge og udfylde, når jeg kører jobbet. Det er inden for det mål, at jeg vil have et af felterne maskeret for privatlivets fred, præsidentens navne i dette tilfælde. Jeg klikker på Target Field Layout for at åbne en top-til-bund kortlægningsside for min kilde og mine mål:

Denne side viser også min maskeringsregel, der allerede er defineret. Jeg havde defineret det ved at højreklikke på PRESIDENT i målet og klikke på Opret regel (i stedet for at browse til en eksisterende). Det åbnede en liste over beskyttelsesguider på feltniveau, vist nedenfor. Bemærk, at flere statiske datamaskeringsfunktioner er tilgængelige.

Jeg valgte Maskering (tegnredaktion). På den side tog jeg standardindstillingen i fuld felt for at maskere hele præsidentens navn i målsamlingen:

Efter at have afsluttet disse valg, vender jeg tilbage til kortlægningsdialogen. Jeg klikker på OK og vende tilbage til siden Datamål. I slutningen af ​​mine ændringer vil jeg afslutte med detaljerne nedenfor:

Jeg klikker på OK at afslutte guiden og bygge jobbet.

Gennemgå jobbet

Med chiefsout.scl job nu indbygget i mit aktive projekt og åbnes for mig i redigeringsvinduet automatisk, jeg kan se og ændre det derfra eller gennem tilgængelige dialogsider i konteksten. Lær om scriptredigeringsmuligheder her.

Jeg kan også højreklikke inde i scriptet eller dets filnavn i projektvinduet, og fra en IRI-menu med muligheder bygge et flowdiagram for at visualisere opgaven i et projekt. Inde fra flowdiagrammet dobbeltklikker jeg på den brune opgaveblok for at åbne et transformationskortdiagram, der viser kilde-til-mål-feltbevægelsen, jeg har defineret, denne gang fra venstre mod højre:

chiefsout.scl script og chiefsout.flow fil er begge åbne, team-delelige metadataaktiver, der deler en fælles datamodel.

Kør jobbet

Der er også flere måder at udføre det job, jeg byggede på, både fra og uden for Workbench.

Nedenfor er vist kildesamlingen og mit samme job repræsenteret i script og dispositionsform. Efter at have kørt jobbet åbnede jeg en MonjaDB-visning af det sorterede og maskerede samlingsmål, og mit sorterede JSON-filmål til højre:

Som nævnt er mange andre permutationer af og hurtigere datastyringsjob ved hjælp af MongoDB-data nu mulige i dette miljø. IRI Voracity-brugere kan nu vælge mellem tre forbindelsesmetoder til MongoDB og snesevis af funktionelle muligheder.

Hvis du har spørgsmål eller brug for hjælp, så kontakt din IRI-repræsentant her.


  1. Hvad er den nemmeste måde at finde de største objekter i Redis?

  2. MongoDB \uXXXX problem

  3. Hvordan opdaterer jeg delvist et objekt i MongoDB, så det nye objekt vil overlejre / flette med det eksisterende

  4. Hvordan gendannes redis-data fra snapshot (rdb-fil) kopieret fra en anden maskine?