{"id":15979,"date":"2022-06-28T12:33:49","date_gmt":"2022-06-28T16:33:49","guid":{"rendered":"https:\/\/www.iri.com\/blog\/?p=15979"},"modified":"2024-01-23T13:25:01","modified_gmt":"2024-01-23T18:25:01","slug":"real-time-incremental-data-masking","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/","title":{"rendered":"Real-Time, Incremental Data Masking"},"content":{"rendered":"<p><em><b>Abstract: <\/b><\/em><em><span style=\"font-weight: 400;\">The <a href=\"https:\/\/www.iri.com\/blog\/migration\/data-migration\/real-time-database-data-replication\">previous article<\/a> in this series of 4 demonstrated real-time data replication with IRI Ripcurrent, an IRI-developed command-line Java application that utilizes the <\/span><a href=\"https:\/\/debezium.io\/documentation\/reference\/1.9\/development\/engine.html\"><span style=\"font-weight: 400;\">Debezium embedded engine<\/span><\/a><span style=\"font-weight: 400;\"> and the streaming feature of the <\/span><a href=\"https:\/\/www.iri.com\/products\/cosort\/sortcl\"><span style=\"font-weight: 400;\">IRI (CoSort) SortCL program<\/span><\/a><span style=\"font-weight: 400;\">. Together they react in real-time to database change events.<\/span><\/em><\/p>\n<p><em><span style=\"font-weight: 400;\">The capability demonstrated in the <\/span><a href=\"https:\/\/www.iri.com\/blog\/migration\/data-migration\/real-time-database-data-replication\"><span style=\"font-weight: 400;\">previous article<\/span><\/a><span style=\"font-weight: 400;\"> can be augmented with the classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.<\/span><\/em><\/p>\n<h4><b>Prerequisites<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Assuming the prerequisites detailed in the <\/span><a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/getting-started-with-iri-ripcurrent\"><span style=\"font-weight: 400;\">first article<\/span><\/a><span style=\"font-weight: 400;\"> have been met, for this case an <a href=\"https:\/\/www.iri.com\/blog\/data-protection\/iri-data-classification\/\">IRI Data Class &amp; Rule Library<\/a> are also required.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For Ripcurrent, a default rule is required to be assigned for each data class. The default rule is used by Ripcurrent to apply a chosen <\/span><a href=\"https:\/\/www.iri.com\/solutions\/data-masking\/static-data-masking\"><span style=\"font-weight: 400;\">masking function<\/span><\/a><span style=\"font-weight: 400;\"> to data or a column name matching the specified data class search parameters.<\/span><\/p>\n<h4 style=\"text-align: left;\"><b>Generating a Ripcurrent Properties File<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Before running Ripcurrent, a property file should be created to define configuration options that are required for Ripcurrent to run.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">After installing the Ripcurrent feature in IRI Workbench, the <\/span><i><span style=\"font-weight: 400;\">Ripcurrent Properties Generator <\/span><\/i><span style=\"font-weight: 400;\">wizard is available from the Voracity menu to assist in generating a properties file for Ripcurrent.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">On the first page of the wizard, options can be specified pertaining to the database to be monitored. In this image, an Oracle connection was selected and a filter was specified to narrow down the tables to be monitored to only those in the <\/span><i><span style=\"font-weight: 400;\">SCOTT<\/span><\/i><span style=\"font-weight: 400;\"> schema.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15992 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-122037-300x217.png\" alt=\"\" width=\"614\" height=\"444\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-122037-300x217.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-122037.png 613w\" sizes=\"(max-width: 614px) 100vw, 614px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">In this case, the DB name (required to set up a configuration to monitor an Oracle database) was also entered, <\/span><b><i>XE<\/i><\/b><span style=\"font-weight: 400;\"> in this case.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">On the second page of the wizard, there are options to replicate to database tables, files, or <\/span><b><i>both <\/i><\/b><span style=\"font-weight: 400;\">files and database tables. The image shows the choice of replicating data changes from the source Oracle database to a MySQL database with existing tables of the same name and structure as the source database, as well as to Excel files.\u00a0<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15993\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155508-300x217.png\" alt=\"\" width=\"615\" height=\"445\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155508-300x217.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155508.png 613w\" sizes=\"(max-width: 615px) 100vw, 615px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">On the third page, locations of an IRI data class library and rule library can be specified. The image shows the selection of the library files created earlier in the article:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-15994 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155346-300x217.png\" alt=\"\" width=\"617\" height=\"446\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155346-300x217.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155346.png 613w\" sizes=\"(max-width: 617px) 100vw, 617px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">On the final page, the image shows the selection of a log location for structural change event information from the source database. Names for the connector and server connection used by Debezium are also specified.\u00a0<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15995\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155409-300x217.png\" alt=\"\" width=\"616\" height=\"445\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155409-300x217.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-155409.png 613w\" sizes=\"(max-width: 616px) 100vw, 616px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">After the properties file was successfully generated for my configurations, I began the execution of Ripcurrent by running the <\/span><b><i>ripcurrent.bat<\/i><\/b><span style=\"font-weight: 400;\"> script. After completion of an initial snapshot of the source database (if running for the first time), Ripcurrent will be monitoring for changes from the source database.<\/span><\/p>\n<h4><b>Adding Test Data to Source Tables with IRI RowGen<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">Next, I will run a batch file generated by the <\/span><a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/how-to-generate-db-test-data-2\/\"><i><span style=\"font-weight: 400;\">New Database Test Data<\/span><\/i><\/a><span style=\"font-weight: 400;\"> wizard, accessible from the <\/span><a href=\"https:\/\/www.iri.com\/products\/rowgen\"><span style=\"font-weight: 400;\">IRI RowGen<\/span><\/a><span style=\"font-weight: 400;\"> menu to simulate new data coming into the source tables. The New Database Test Data wizard synthesizes data consistently by classifying database columns and pairing them with generation rules.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The image below shows an entity-relationship mapping diagram of the test data batch operation, produced by IRI Workbench.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15996\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/saved-example-300x172.png\" alt=\"\" width=\"924\" height=\"530\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/saved-example-300x172.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/saved-example-1024x586.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/saved-example-768x440.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/saved-example-1536x879.png 1536w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/saved-example.png 1600w\" sizes=\"(max-width: 924px) 100vw, 924px\" \/><\/p>\n<h4><b>Replication of Data from Source Tables to Multiple Targets, with Consistent Masking Rules Applied to Classified Data<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">After running the batch file to generate data for 5 tables in the source database, Ripcurrent recognized the new data inserted and triggered a replication and masking operation to the targets.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This is a sample of the data that was generated in one of the<\/span><b> source<\/b><span style=\"font-weight: 400;\"> Oracle database tables (named DM_EMPLOYEES):<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16000\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144854-300x103.png\" alt=\"\" width=\"700\" height=\"240\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144854-300x103.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144854.png 824w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Ripcurrent was silently triggered by this insertion event, and automatically masked and moved the new data into its defined targets, per this event log:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16001\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165416-300x82.png\" alt=\"\" width=\"721\" height=\"197\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165416-300x82.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165416-768x209.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165416.png 797w\" sizes=\"(max-width: 721px) 100vw, 721px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">See that a series of Excel files have also been created in the target directory:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16002\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165444-300x69.png\" alt=\"\" width=\"912\" height=\"210\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165444-300x69.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165444-1024x235.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165444-768x176.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-01-165444.png 1197w\" sizes=\"(max-width: 912px) 100vw, 912px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">In the Excel file associated with the DM_EMPLOYEES table in the source database, notice that the email values have been modified from the original value.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16004\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144656-300x121.png\" alt=\"\" width=\"860\" height=\"347\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144656-300x121.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144656-768x311.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144656.png 1282w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Additionally, in the target MySQL database, data was replicated to a table with the same name and structure as the source table, with the email address column encrypted to the same values as in the Excel file.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16005\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144510-300x65.png\" alt=\"\" width=\"862\" height=\"187\" srcset=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144510-300x65.png 300w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144510-1024x223.png 1024w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144510-768x167.png 768w, https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-02-144510.png 1073w\" sizes=\"(max-width: 862px) 100vw, 862px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">This column was classified as containing email addresses based on the regular expression pattern to match emails defined in the data class library. The original email values were encrypted with format-preserving encryption, defined by the default rule that was mapped to the EMAIL data class.<\/span><\/p>\n<h4><b>Conclusion<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">This article demonstrated another use case of Ripcurrent that builds on the more rudimentary use case of data replication demonstrated in the previous article \u2013 that is, consistent classification, masking and replication of data from source tables to targets.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This approach ensures that data can be dynamically replicated to targets, with data classified as sensitive appropriately and consistently masked according to data classes and rules that can be flexibly defined.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"> The <a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-ripcurrent-for-db-structure-change-reporting\/\">next and final article<\/a> in this series deals with real-time notifications of structural changes to the database which can impact the layout of the source or target tables. This would indicate the need to re-run the data class search operations on your tables.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract: The previous article in this series of 4 demonstrated real-time data replication with IRI Ripcurrent, an IRI-developed command-line Java application that utilizes the Debezium embedded engine and the streaming feature of the IRI (CoSort) SortCL program. Together they react in real-time to database change events. The capability demonstrated in the previous article can be<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\" title=\"Real-Time, Incremental Data Masking\">Read More<\/a><\/div>\n","protected":false},"author":119,"featured_media":16027,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[8,34,91,29,3],"tags":[14,1696,1699,1697],"class_list":["post-15979","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-business","category-iri-workbench","category-test-data","category-vldb-operations","tag-data-masking","tag-iri-ripcurrent","tag-real-time-data-masking","tag-ripcurrent"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Real-Time, Incremental Data Masking - IRI<\/title>\n<meta name=\"description\" content=\"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Real-Time, Incremental Data Masking - IRI\" \/>\n<meta property=\"og:description\" content=\"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-28T16:33:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T18:25:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Devon Kozenieski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Devon Kozenieski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\"},\"author\":{\"name\":\"Devon Kozenieski\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\"},\"headline\":\"Real-Time, Incremental Data Masking\",\"datePublished\":\"2022-06-28T16:33:49+00:00\",\"dateModified\":\"2024-01-23T18:25:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\"},\"wordCount\":882,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png\",\"keywords\":[\"data masking\",\"IRI Ripcurrent\",\"real-time data masking\",\"Ripcurrent\"],\"articleSection\":[\"Data Masking\/Protection\",\"IRI Business\",\"IRI Workbench\",\"Test Data\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\",\"name\":\"Real-Time, Incremental Data Masking - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png\",\"datePublished\":\"2022-06-28T16:33:49+00:00\",\"dateModified\":\"2024-01-23T18:25:01+00:00\",\"description\":\"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Real-Time, Incremental Data Masking\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\",\"name\":\"Devon Kozenieski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/19bf36cedac5d586ea168f58f96eb2f1?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/19bf36cedac5d586ea168f58f96eb2f1?s=96&d=blank&r=g\",\"caption\":\"Devon Kozenieski\"},\"url\":\"https:\/\/beta.iri.com\/blog\/author\/devonk\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Real-Time, Incremental Data Masking - IRI","description":"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/","og_locale":"en_US","og_type":"article","og_title":"Real-Time, Incremental Data Masking - IRI","og_description":"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.","og_url":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/","og_site_name":"IRI","article_published_time":"2022-06-28T16:33:49+00:00","article_modified_time":"2024-01-23T18:25:01+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","type":"image\/png"}],"author":"Devon Kozenieski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Devon Kozenieski","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/"},"author":{"name":"Devon Kozenieski","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1"},"headline":"Real-Time, Incremental Data Masking","datePublished":"2022-06-28T16:33:49+00:00","dateModified":"2024-01-23T18:25:01+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/"},"wordCount":882,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","keywords":["data masking","IRI Ripcurrent","real-time data masking","Ripcurrent"],"articleSection":["Data Masking\/Protection","IRI Business","IRI Workbench","Test Data","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/","url":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/","name":"Real-Time, Incremental Data Masking - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","datePublished":"2022-06-28T16:33:49+00:00","dateModified":"2024-01-23T18:25:01+00:00","description":"The capability demonstrated in the previous article can be augmented with classification and masking of sensitive data in transit to file or database targets. When data in the source table is inserted or updated, it is moved and masked in real-time to the designated target table. When data in the source table is deleted, the same row(s) will be deleted in the (different) target table.","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Real-Time, Incremental Data Masking"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1","name":"Devon Kozenieski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/19bf36cedac5d586ea168f58f96eb2f1?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/19bf36cedac5d586ea168f58f96eb2f1?s=96&d=blank&r=g","caption":"Devon Kozenieski"},"url":"https:\/\/beta.iri.com\/blog\/author\/devonk\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Blog-3-Image-Feature.png","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15979"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/119"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=15979"}],"version-history":[{"count":13,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15979\/revisions"}],"predecessor-version":[{"id":17220,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/15979\/revisions\/17220"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/16027"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=15979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=15979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=15979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}