10. ledna 2017

Nástroje pro vyrobení realistických dat


Často se potýkáme s problémem nedostatku dat v našich testovacích prostředí. Kde data vzít, aby dávala smysl?
Data je možné generovat nová od začátku, což je náročné na přípravu, nebo vytvořit kopií reálných produkčních dat.
Při využití dat z produkčního prostředí je velkou překážkou citlivost dat. V mnoha případech nesmí s vybranými daty přijít do styku neoprávněná osoba. Proto musí být součástí přenosu dat transformace, která data pozmění (zamaskuje).
Je potřeba vždy jasně definovat, k jakému zamaskování (anonymizaci) má dojít. Změnit každý výskyt příjmení Novák na např. Bláha, nebo na náhodně zvolené příjmení, aby nemohlo být ze statistického výskytu hodnoty s vysokou pravděpodobností odvozena původní hodnota, což ale zase může způsobit změnu původního rozložení dat, což může být nežádoucí. Nebo nahradit příjmení náhodně vygenerovaným řetězcem znaků?

Pokud má docházet k transformacím dat, je dost nepravděpodobné, že bude existovat natolik inteligentní nástroj, který by datům porozuměl a transformace sám navrhnul a provedl. S největší pravděpodobností se nelze vyhnout vytvoření definic, které popíší, k jaké změně dat má dojít nebo jakých hodnot má sloupec nabývat. V nejlepším případě by měl být zdrojem těchto údajů datový model, který má obsahovat definice domén, datových typů, integritních omezení. Dostupné nástroje (viz dále) obvykle obsahují svoje úložiště, které pro tabulky a jejich sloupce obsahují definice pravidel, jak vygenerovat nebo odkud získat hodnotu.
Z uvedeného vyplývá, že vyrobení realistických dat není levná záležitost.
Bohužel se ukázalo, že nástroje označované jako generátory dat nedokážou vzít jako hromadný zdroj dat tabulky a aplikovat na ně transformace. Vždy jde o vytváření definic jednotlivých sloupců tabulek. Pokud jsou schopné využít stávající data tabulek, jedná se o možnost plnit izolovaně jedním selectem jeden sloupec.
Kategorie, do níž patří Oracle Data Masking and Subsetting, se označuje jako (persistent) data masking nástroj, tj. jako zdroj se použijí existující data tabulek, aplikují se na ně transformace a uloží se do jiné instance stejných tabulek.
Další kategorií, která trochu vybočuje, jsou mapovací nástroje, pomocí nichž se definují přesuny dat mezi datovými strukturami, kde zdrojové a cílové datové struktury jsou odlišné. Jejich součástí jsou samozřejmě transformace včetně anonymizace. Tyto nástroje by při mapování 1:1 šly použít jako data masking nástroje.
Levnější nástroje mohou mít zásadní nedostatky. Nemusí umět uspokojivě řešit vztahy dat mezi sloupci, vztahy dat jednoho sloupce přes všechny řádky tabulky nebo dokonce sloupci v různých tabulkách (cizí klíče) apod. Existují webové online generátory, vhodné pro velice malé projekty s několika tabulkami, např. http://www.generatedata.com/, https://www.mockaroo.com/.
Žádný z popsaných nástrojů nedělá zázraky. Nástroje mohou zkusit tipnout, že v datech jde např. o číslo kreditní karty, na základě toho že data vyhovují určitým formátovacím maskám. Do procesu definic transformací vždy vstupuje osoba, která pro požadovanou tabulku a její sloupce přiřazuje existující pravidlo nebo pravidlo vytvoří.
V situaci, kdy data existují v jiné databázi, a nejde o důvěrná data, může být použita metoda export/import dat z produkční databáze do cílové, při níž nedojde ke změně dat.
V situaci, kdy data existují v jiné databázi, a jde o důvěrná data, lze použít data masking nástroj, který v extrémním případě dokáže zajistit pozměnění dat již při exportu.
V situaci, kdy data víceméně neexistují (až na data domén, číselníků), je na místě použít generátor dat.
Generátory dat jsou v porovnání s data masking nástroji jednodušší a levnější produkty. Funkce těchto nástrojů je odlišná.
Alternativou k obecnému data masking nástroji je vlastní postup, vzory pro typické případy, seznamy hodnot domén (příjmení osob, názvy firem apod.), možná framework a sada příkazů vytvořená pro konkrétní případ:

  • Domluva se zákazníkem o poskytnutí dat se závazkem, že data dostatečně změníme a dále budeme pracovat pouze se změněnými
  • Export zákazníkových dat
  • Vytipování údajů, které je potřeba anonymizovat
  • Definovat změnu pro každý z těchto údajů
  • Vytvořit SQL skript(y), které tyto změny provedou (pravděpodobně půjde o updaty, dočasné vypnutí constraintů a triggerů)
  • Data masking nástroje mají připravené definice masek a transormačních funkcí pro údaje typu číslo kreditní karty apod.
  • Je možné, že data masking nástroje nedokážou dostatečně řešit vztahy hodnot mezi sloupci jednoho záznamu, natož mezi různými záznamy různých tabulek. Museli bychom generování vhodných dat, která dodržují tyto vztahy, řešit sami.

Příklady nástrojů

Oracle Data Masking and Subsetting


  • informace pouze z dokumentace
  • persistent data masking nástroj
  • nákladný nástroj řeší situaci, kdy je potřeba existující citlivá data, která nesmí opustit databázi, dostat ven v zamaskované podobě.
  • vytváří datový model z datového slovníku, měl by pomáhat vyhledat citlivá data, zřejmě podle předefinovaných formátovacích masek
  • má předefinované formátovací masky pro data typu kreditní čísla, čísla sociálního zabezpečení apod.
  • má připravenou sadu maskovacích pravidel, transformačních funkcí
  • vlastnost subsetting je možnost definovat podmnožiny dat včetně vyřešení závislostí záznamů
  • připravená pravidla umí uplatnit na klon databáze nebo pravidla uplatnit při exportu dat ze zdrojové databáze

PL/SQL Developer (Data Generator)


  • prakticky vyzkoušeno
  • generátor dat
  • PL/SQL Developer umožňuje pro jednotlivé tabulky vytvářet definice (uložené v souboru), které obsahují pro jednotlivé sloupce předpisy (nebo jejich zřetězení), jakými daty se sloupec má plnit. Předpisem se rozumí:
  • maska (něco jako regulární výraz), která definuje skupinu znaků z předdefinovaných množin (malá/velká písmena abecedy, číslice, oddělovače)
  • náhodná čísla z daného rozsahu
  • číslo ze sekvence (nedatabázová sekvence)
  • seznam hodnot s jejich váhami
  • seznam hodnot vrácený selectem
  • text s předepsaným maximálním počtem znaků, slov na řádku, řádků v odstavci
  • SQL výraz, tzn. nejenom celá škála dostupných SQL funkcí ale i volání vlastních db funkcí
  • předefinované množiny osobních jmen, příjmení, názvů společností, adres apod., je možné definovat vlastní množiny, jsou uložené v souborech
  • nepovedlo se ověřit plnění hodnot cizího klíče z master tabulky
  • Generátor generuje sady příkazů insert. Klausule values obsahuje buď literály nebo SQL výrazy odvozené z předpisů.

MS Visual Studio


  • Generátory k dispozici pouze v Ultimate a Premium.
  • Vytvářejí se v něm tzv. Data Generation Plan na generování nových dat. Lze využít už existující data v rámci tzv. Data Transform Plan.
  • Pravděpodobně jen pro MS SQL databázi

redgate SQL Data Generator


  • zaměřený na MS SQL
  • funkčně zřejmě podobný generátorům v MS Visual Studio včetně čerpání již existujících dat, tj. jde o generátor dat, možná i data masking nástroj
  • 369$/user

Datanamic Data Generator MultiDB


  • generátor dat
  • vyzkoušena trial verze, hlavně kvůli ověření, co znamená, že umí generovat data z existujících dat (bohužel pouze plnění jednotlivého sloupce)
  • bohatší možnosti ve srovnání s PL/SQL Developerem
  • pracuje s projekty, ve kterých je množina tabulek (PL/SQL Developer s každou tabulkou izolovaně)
  • funguje plnění hodnot cizího klíče z master tabulky
  • 799$/user

SQLdog

·         http://www.sqldog.com

  • generátor dat
  • obdoba PL/SQL Developeru

Net2000 DataMasker

·         http://www.datamasker.com

  • data masking nástroj
  • neuvádí cenu, dokumentaci, pouze FAQ
 Autor článku: Pavel Turek, CCA Group a.s.
 

Žádné komentáře:

Okomentovat