"With Datamaker we were able to create a test project for a few tables and generate the masking scripts in around 30 minutes, enabling us to test our masking rules in a very short space of time. The resulting masked data also maintains its relationships and integrity from the original environments."
Senior Software Specialist, Large UK Financial Institution
Should performance be part of your criteria when choosing a data masking technology? It certainly should. Imagine the amount of time your project will save as masking scripts generate usable output in seconds. This is why a high performing data masking solution is important, and why Datamaker continues to outperform the competition.
The statistics below were taken from a large UK financial institution after the implementation of Datamaker as part of a test data management and data security reevaluation. The data demonstrates the time it took to mask or de-identify different sized tables using Datamaker, each with a varying number of columns. Each table was also masked using a variety of masking functions.
The example indicates the impressive performance of the Grid-Tools data masking solution. Contact Grid-Tools for more information on the project.
| Table 1: Number of Rows = 7,308/500k seeds Time to mask = 00:00:09 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | NAME | 'RANDLOV','FULL NAME' | Y |
| Table 2: Number of Rows = 87,235/660k seeds Time to mask = 00:00:42 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | LENDER_ADDR_1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | LENDER_ADDR_2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 3 | LENDER_ADDR_3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | LENDER_ADDR_4 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 5 | LENDER_ADDR_5 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 6 | LENDER_POSTCODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 7 | PROPERTY_ADDR_1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 8 | PROPERTY_ADDR_2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 9 | PROPERTY_ADDR_3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 10 | PROPERTY_ADDR_4 | ||||
| Column 11 | PROPERTY_ADDR_5 | ||||
| Column 12 | PROPERTY_POSTCODE | 'RANDLOV','POSTCODE' | Y |
| Table 3: Number of Rows = 184,975/840k seeds Time to mask = 00:00:31 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | DISTRICT | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | DOB | 'ADDRANDDAYS',0,30 | |||
| Column 3 | FORENAME | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 4 | HOUSE_NAME | Y | |||
| Column 5 | POSTCODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 6 | POST_TOWN | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 7 | STREET_1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 8 | STREET_2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 9 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 4: Number of Rows = 982,312/430k seeds Time to mask = 00:01:28 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | NINO_NUMBER | 'RANDLOV','NI NUMBER' | Y | ||
| Column 2 | PREVIOUS_NAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 5: Number of Rows = 507,573/660k seeds Time to mask = 00:01:22 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | AREA_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 2 | DISTRICT_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 3 | LINE1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | LINE2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 5 | LINE3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 6 | LINE4 | Y | |||
| Column 7 | LINE5 | Y | |||
| Column 8 | SECTOR_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 9 | UNIT_CODE | 'RANDLOV','POSTCODE' | Y |
| Table 6: Number of Rows = 4,232,228/500k seeds Time to mask = 00:01:13 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | BANK_ACCOUNT_NAME | 'RANDLOV','FULL NAME' | Y |
| Table 7: Number of Rows = 345,548/1m seeds Time to mask = 00:00:36(HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | CARDHOLDER_ADDRESS | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | CARDHOLDER_NAME | 'RANDLOV','FULL NAME' | Y |
| Table 8: Number of Rows = 174,193/72k seeds Time to mask = 00:00:23 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | ACCOUNT_SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 9: Number of Rows = 11,942/840k seeds Time to mask = 00:00:05 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | FORENAME | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 2 | FRAUD_ADDR1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 3 | FRAUD_ADDR2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | FRAUD_ADDR3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 5 | FRAUD_ADDR4 | Y | |||
| Column 6 | FRAUD_ADDR5 | Y | |||
| Column 7 | FRAUD_PCODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 8 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 10: Number of Rows = 709 Time to mask = 00:00:01 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | TEL_NUMBER | Y |
| Table 11: Number of Rows = 415,522 Time to mask = 00:00:41 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | DATE_OF_BIRTH | 'DOB',0,30 |
| Table 12: Number of Rows = 3,461,240/240k seeds Time to mask = 00:10:05 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | FORENAME | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 2 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 13: Number of Rows = 3,547,873/1.2m seeds Time to mask = 00:25:52 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | ADDRESS_LINE1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | ADDRESS_LINE2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 3 | ADDRESS_LINE3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | ADDRESS_LINE4 | Y | |||
| Column 5 | ADDRESS_LINE5 | Y | |||
| Column 6 | DATE_OF_BIRTH | 'DOB',0,30 | |||
| Column 7 | EMAIL_ADDRESS | Y | |||
| Column 8 | FORENAMES | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 9 | MOBILE_NUMBER | Y | |||
| Column 10 | NINO | 'RANDLOV','NI NUMBER' | Y | ||
| Column 11 | POSTCODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 12 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 14: Number of Rows = 1,682,021 Time to mask = 00:01:17 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | EMAIL_ADDRESS | Y |
| Table 15: Number of Rows = 3,854,180/240k seeds Time to mask = 00:14:15 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | DOB | 'DOB',0,30 | |||
| Column 2 | FORENAME | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 3 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 16: Number of Rows = 4,711/840k seeds Time to mask = 00:00:03 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | ADDRESS_LINE1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | ADDRESS_LINE2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 3 | ADDRESS_LINE3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | ADDRESS_LINE4 | Y | |||
| Column 5 | ADDRESS_LINE5 | Y | |||
| Column 6 | DOB | 'DOB',0,30 | |||
| Column 7 | EMAIL_ADDRESS | Y | |||
| Column 8 | FORENAMES | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 9 | POSTCODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 10 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Table 17: Number of Rows = 168,042 Time to mask = 00:00:15 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | IRSB_DATE_OF_BIRTH | 'DOB',0,30 |
| Table 18: Number of Rows = 4,628,428/660k seeds Time to mask = 00:10:53 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | LINE1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 2 | LINE2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 3 | LINE3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | LINE4 | Y | |||
| Column 5 | LINE5 | Y | |||
| Column 6 | POST_CODE | 'RANDLOV','POSTCODE' | Y |
| Table 19: Number of Rows = 1,932,908/500k seeds Time to mask = 00:01:56 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | BORR_NAME_1 | 'RANDLOV','FULL NAME' | Y | ||
| Column 2 | BORR_NAME_2 | 'RANDLOV','FULL NAME' | Y | ||
| Column 3 | BORR_NAME_3 | 'RANDLOV','FULL NAME' | Y | ||
| Column 4 | BORR_NAME_4 | Y | |||
| Column 5 | IP_NAME1 | 'RANDLOV','FULL NAME' | Y | ||
| Column 6 | IP_NAME2 | 'RANDLOV','FULL NAME' | Y | ||
| Column 7 | IP_NAME3 | 'RANDLOV','FULL NAME' | Y |
| Table 20: Number of Rows = 6,900,844/1.2m seeds Time to mask = 00:32:06 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | DATE_OF_BIRTH | 'DOB',0,30 | |||
| Column 2 | FORENAMES | 'RANDLOV','FIRSTNAME' | Y | Y | FIRSTNAME |
| Column 3 | NATIONAL_INS_NUM | 'RANDLOV','NI NUMBER' | Y | ||
| Column 4 | PLACE_OF_BIRTH | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 5 | SURNAME | 'RANDLOV','LASTNAME' | Y | Y | LASTNAME |
| Column 6 | TOWN_OF_BIRTH | 'RANDLOV','UK ADDRESS' | Y |
| Table 21: Number of Rows = 8,836,310/660k seeds Time to mask = 00:35:04 (HH:MM:SS) |
|---|
| Column number | Column | Function | Keep Nulls | Cross Ref | Cross Ref Ident |
| Column 1 | AREA_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 2 | DISTRICT_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 3 | LINE1 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 4 | LINE2 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 5 | LINE3 | 'RANDLOV','UK ADDRESS' | Y | ||
| Column 6 | LINE4 | Y | |||
| Column 7 | LINE5 | Y | |||
| Column 8 | SECTOR_CODE | 'RANDLOV','POSTCODE' | Y | ||
| Column 9 | UNIT_CODE | 'RANDLOV','POSTCODE' | Y |