sql >> Database >  >> NoSQL >> MongoDB

Native MongoDB-maskering (3e methode)

Opmerking:dit artikel behandelt de derde beschikbare IRI-klantmethode voor statisch maskeren of versleutelen van PII in gestructureerde MongoDB-verzamelingen via het IRI FieldShield-product of IRI Voracity-platform (beide mogelijk gemaakt door IRI CoSort v10 en de ondersteuning van de native MongoDB-driver). Er is nu een vierde methode beschikbaar voor het vinden en maskeren van PII die in ongestructureerde MongoDB-verzamelingen zweeft via IRI DarkShield.

In dit artikel wordt uitgelegd hoe de nieuwe, native MongoDB-verzamelingsondersteuning in IRI's producten voor gegevensmanipulatie de snelle prestaties en consolidatie van meerdere gegevensgerichte functies mogelijk maakt, waaronder:

  • gegevensprofilering en -opschoning
  • data masking &re-ID risicoscores
  • gegevensintegratie (ETL) &CDC
  • gegevensmigratie en -replicatie
  • aangepast rapport en genereren van testgegevens

De ondersteuning op API-niveau voor MongoDB-gegevens wordt aangeboden in het kernprogramma SortCL, de standaardverwerkingsengine van het IRI Voracity-gegevensbeheerplatform, evenals de subsetproducten ervan:CoSort, NextForm, FieldShield en RowGen. Deze verbindingsmethode is de derde en snelste manier waarop IRI-klanten gegevens in MongoDB-verzamelingen kunnen verkrijgen en manipuleren. De eerste is via platte bestanden zoals hier in 2014 beschreven. De tweede is met ODBC- en JDBC-stuurprogramma's die hier in 2016 zijn beschreven.

Over MongoDB

MongoDB is een "NoSQL", documentgeoriënteerde database die werkt op het concept van collecties en JSON-achtige documenten met schema's. Een verzameling, zoals een relationele databasetabel, bevat een of meer documenten.

Een document is een set sleutel-waardeparen. Documenten hebben een dynamisch schema, wat betekent dat documenten in dezelfde verzameling niet dezelfde set velden of dezelfde structuur hoeven te hebben. Gemeenschappelijke velden in de documenten van een collectie kunnen verschillende soorten gegevens bevatten.

De volgende tabel vergelijkt de terminologie van een RDBMS en MongoDB:

Oracle MongoDB
Database Database
Tabel Verzameling
Rij Document
Kolom Veld
Primaire sleutel Object-ID geleverd door MongoDB

Demonstratie

Mijn voorbeeld hieronder doet een eenvoudige sortering, maskering en verplaatsing van een MongoDB-verzameling genaamd "chiefs" naar een andere verzameling, en ook naar een op zichzelf staand JSON-bestand. JSON-bestanden zijn een andere nieuwe IRI-gegevensbron die wordt ondersteund in de release van CoSort v10.

Databaseverbinding

De eerste stap is om verbinding te maken met uw MongoDB-instantie in IRI Workbench. IRI Workbench is gebouwd op Eclipse en is de algemene taakontwerp- en implementatie-IDE voor alle hierboven genoemde IRI-software. Hier kunt u ook verbinding maken met andere DB's, HDFS en aanvullende gegevensbronnen in lokale of externe bestandssystemen.

Selecteer in het IRI-menu (wervelpictogram) in de werkbalk van de Workbench IRI-voorkeuren> IRI> URL-verbindingsregister> Toevoegen . Geef een bestaande MongoDB op uit het schema en de hostnaam van de server. De naam van mijn database is cmitra, gemaakt op de 'mongodbu'-host:

Voor het gemak heb ik de gratis MonjaDB-plug-in voor Eclipse geïnstalleerd om te communiceren met de database vanuit mijn Workbench-perspectief. Mijn verzameling bevat Amerikaanse presidenten op naam, partij, staat en hun termijndata. MongoDB heeft voor elk document een unieke ID toegewezen:

Metadatadefinitie

Voordat ik MongoDB-gegevens in deze modus kan verwerken, moet ik een DDF-bestand (Data Definition Format) maken waarin mijn incassodocumenten worden weergegeven in /FIELD-instructies voor gebruik in SortCL-compatibele taken zoals FieldShield. Net als bij andere gegevensbronnen die in Workbench worden ondersteund, doet een wizard dit automatisch voor mij.

Maak (of selecteer een bestaande) projectmap in Workbench om de taakactiva op te slaan, zoals de bronmetadata, SortCL-script/diagram, opgeslagen maskeerregels, gegevensklassen, enz. Met die map actief (gemarkeerd) en kennis van de locatie van mijn MongoDB-verzameling, Ik kan nu de Discover Metadata . uitvoeren wizard uit het IRI-menu in de bovenste werkbalk.

In deze stap Gegevensbronidentificatie kan ik een ODBC-verbinding, bestandsbrowser of URL selecteren. In dit geval bereik ik MongoDB via URL, dus ik kies dat en MongoDB voor mijn formaat. Nadat ik naar de database-registervermelding heb gebladerd die ik eerder heb toegevoegd, voer ik de collectienaam in. De wizard voegt dit toe aan de standaard MongoDB-verbindingsreeks.

De pagina Data Viewer en Field Editor maakt verbinding met de collectie en geeft een voorbeeld weer van de kolominhoud en kolommen als SortCL-veldnamen:

Als ik op Voltooien . klik , mijn DDF-bestand is gemaakt en wordt als volgt weergegeven:

/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")

Deze DDF-metadata kan worden gebruikt in elke taak (of taken) die van invloed zijn op deze verzameling, inclusief die in dit voorbeeld zoals hieronder weergegeven. De _id-kolom is niet nodig voor mijn doeleinden is weggelaten.

Let op het gebruik van puntnotatie in het "MDEF"-attribuut, wat een vereiste paddefinitie is voor het verwerken van discrete, platte elementen SortCL-taken. Array-elementen met meerdere waarden en subdocumentarrays worden in volgorde gegenereerd, beginnend met 0 in de volgorde waarin ze verschijnen.

Voer de Job Design Wizard uit

Workbench bevat veel verschillende geschikte wizards voor het genereren van de metadata voor het uitvoeren van discrete taken (.*cl-scripts) of batchgestuurde taken (.flow- en .bat/.sh-bestanden) op de opdrachtregel, via Workbench, uw programma's , enz.

Ik heb gekozen voor een eenvoudige sorteer-transformatie-wizard omdat ik daarin meerdere doelen kan toevoegen, uitvoervelden kan maskeren, enz. Deze wizard wordt uitgevoerd vanuit het CoSort-menugroep (stopwatch)-pictogram van de werkbalk. Ik selecteer Nieuwe sorteertaak en specificeerde chiefsout.scl als de naam van mijn baan:

In de volgende stap identificeer ik de naam van mijn MongoDB-bronverzameling en waar deze zich bevindt, met behulp van dezelfde locator-URL die werd gebruikt tijdens de metadatadefinitie voor "chiefs":

De volgende stap is het specificeren van het genereren of gebruiken van bestaande metadata voor de verzameling in het datadefinitieformaat (DDF) dat vereist is in alle SortCL-compatibele programma's. In dit geval gebruik ik het DDF-bestand dat ik in stap 2 hierboven heb gemaakt. Ik selecteer Bestaande metagegevens toevoegen om deze lay-outs rechtstreeks in mijn jobscript te plaatsen als invoerspecificaties, en ze worden dan weergegeven in het onderstaande dialoogvenster:

Op de volgende pagina specificeer ik een sorteersleutelveld om de volgorde van gegevens in mijn doel(en) te definiëren. In dit geval ga ik van de standaard chronologische volgorde van presidenten en sorteer ik ze op naam:

Nadat u op Volgende . heeft geklikt , wordt de pagina Gegevensdoelen weergegeven. Net als bij mijn bronopties, zijn er verschillende soorten doelen die ik kan maken en formatteren via deze wizard en ook later in een andere taakontwerpmodus (bijv. scripteditor).

Met deze en andere Workbench-wizards kan ik doelen blijven toevoegen en de inhoud van elke taak nauwkeurig definiëren. Doelspecifieke kenmerken zijn onder meer:​​indeling (bijv. CSV, MongoDB, MFVL), opmaak (bijv. kop- en voetteksten, rijen die moeten worden overgeslagen, enz.), filtervoorwaarden, lay-outs op veldniveau en toegepaste functies/regels (bijv. nieuwe datatypes, maskers, uitdrukkingslogica, aggregatie).

Op de pagina Gegevensdoelen weet ik dat ik twee doelen wil:een zelfstandig JSON-bestand en een externe MongoDB-verzameling. Dus klik ik op Gegevensdoel toevoegen en begin met het specificeren van de eerste. Tenzij ik de doelopties of de lay-out van het doelveld bewerk, zal mijn uitvoer alleen de gesorteerde versie van de invoergegevens bevatten zoals ze zijn. Dat is wat mijn JSON-doelbestand zal bevatten door het simpelweg een naam te geven..

Wanneer ik opnieuw klik op Gegevensdoel toevoegen Ik definieer de tweede als een MongoDB-verzameling via URL. Mijn nieuwe chiefsmask verzameling wordt automatisch opgebouwd en gevuld wanneer ik de taak uitvoer. Binnen dat doel wil ik dat een van de velden wordt afgeschermd voor privacy, in dit geval de namen van de president. Ik klik op Indeling doelveld om een ​​kaartpagina van boven naar beneden te openen voor mijn bron en doelen:

Deze pagina toont ook mijn reeds gedefinieerde maskeerregel. Ik had dat gedefinieerd door met de rechtermuisknop op PRESIDENT in het doel te klikken en op Regel maken te klikken. (in plaats van naar een bestaande te bladeren). Dat opende een lijst met wizards voor beveiliging op veldniveau, zoals hieronder weergegeven. Merk op dat er meer functies voor het maskeren van statische gegevens beschikbaar zijn.

Ik heb Masking (karakterredactie) gekozen. Op die pagina nam ik de full-field standaard om de volledige naam van de president in de doelverzameling te maskeren:

Nadat ik deze selecties heb voltooid, keer ik terug naar het toewijzingsdialoogvenster. Ik klik op OK en keer terug naar de pagina Gegevensdoelen. Aan het einde van mijn wijzigingen zal ik eindigen met de onderstaande details:

Ik klik op OK om de wizard te beëindigen en de taak op te bouwen.

Bekijk de taak

Met de chiefsout.scl job nu ingebouwd in mijn actieve project en automatisch voor mij wordt geopend in het bewerkingsvenster, kan ik het vanaf daar zien en wijzigen, of via beschikbare in-context dialoogpagina's. Lees hier meer over scriptbewerkingsopties.

Ik kan ook met de rechtermuisknop in het script of de bestandsnaam in het projectvenster klikken en vanuit een IRI-menu met opties een stroomdiagram maken om de taak binnen een project te visualiseren. Vanuit het stroomdiagram dubbelklik ik op het bruine taakblok om een ​​transformatietoewijzingsdiagram te openen met de veldbeweging van bron naar doel die ik heb gedefinieerd, deze keer van links naar rechts:

De chiefsout.scl script en chiefsout.flow bestand zijn beide open, door teams te delen metadata-items die een gemeenschappelijk datamodel delen.

Voer de taak uit

Er zijn ook meerdere manieren om de baan die ik heb gebouwd uit te voeren, zowel van als buiten Workbench.

Hieronder wordt de bronverzameling weergegeven en mijn taak weergegeven in script- en overzichtsvorm. Nadat ik de taak had uitgevoerd, opende ik een MonjaDB-weergave van het gesorteerde en gemaskeerde verzameldoel en mijn gesorteerde JSON-bestandsdoel aan de rechterkant:

Zoals vermeld, zijn veel andere permutaties van en snellere gegevensbeheertaken die MongoDB-gegevens gebruiken nu mogelijk in deze omgeving. IRI Voracity-gebruikers kunnen nu kiezen uit drie verbindingsmethoden met MongoDB en tientallen functionele mogelijkheden.

Als je vragen hebt of hulp nodig hebt, neem dan hier contact op met je IRI-vertegenwoordiger.


  1. Hoe de verbinding met mongodb te controleren

  2. MongoDB dubbele documenten, zelfs na het toevoegen van een unieke sleutel

  3. Mongoose verwijdert (pull) een document binnen een array, werkt niet met ObjectID

  4. MongoDB $toUpper