{"id":16007,"date":"2022-06-28T12:34:12","date_gmt":"2022-06-28T16:34:12","guid":{"rendered":"https:\/\/www.iri.com\/blog\/?p=16007"},"modified":"2022-06-28T12:34:12","modified_gmt":"2022-06-28T16:34:12","slug":"using-ripcurrent-for-db-structure-change-reporting","status":"publish","type":"post","link":"https:\/\/www.iri.com\/blog\/vldb-operations\/using-ripcurrent-for-db-structure-change-reporting\/","title":{"rendered":"Using Ripcurrent for DB Structure Change Reporting"},"content":{"rendered":"<p><em><b>Abstract:\u00a0<\/b><\/em><em><span style=\"font-weight: 400;\">This is the final in a series of 4 articles pertaining to <\/span><a href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/getting-started-with-iri-ripcurrent\"><span style=\"font-weight: 400;\">IRI Ripcurrent<\/span><\/a><span style=\"font-weight: 400;\">, 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;\"> to react in real-time to database (DB) change events. Typically this involves <\/span><a href=\"https:\/\/www.iri.com\/blog\/migration\/data-migration\/real-time-database-data-replication\"><span style=\"font-weight: 400;\">replicating data<\/span><\/a><span style=\"font-weight: 400;\"> to downstream target(s), optionally with transformation (e.g., PII masking) rules <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/real-time-incremental-data-masking\/\"><span style=\"font-weight: 400;\">consistently applied<\/span><\/a><span style=\"font-weight: 400;\"> based on the <\/span><span style=\"font-weight: 400;\">classification of the data.<\/span><\/em><\/p>\n<p><em><span style=\"font-weight: 400;\">While Ripcurrent is mainly designed to take action on DB change events that involve the modification of <\/span><b>data<\/b><span style=\"font-weight: 400;\"> in tables, it also monitors change events involving <\/span><b>structural <\/b><span style=\"font-weight: 400;\">changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0<\/span><\/em><\/p>\n<h4><b>Sample Log Monitoring Program<\/b><\/h4>\n<p><a href=\"https:\/\/github.com\/TeamIRI\/ripcurrent-log-alert\"><span style=\"font-weight: 400;\">This publicly available Python program<\/span><\/a><span style=\"font-weight: 400;\"> is an example of monitoring a log file and triggering alerts; note that <\/span><a href=\"https:\/\/www.python.org\/downloads\/\"><span style=\"font-weight: 400;\">Python <\/span><\/a><span style=\"font-weight: 400;\">must be installed to use it. After Python is installed, dependencies for the program can be installed with the command<\/span><b><i> pip install -r requirements.txt<\/i><\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Targeted for Windows, the program triggers <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/apps\/design\/shell\/tiles-and-notifications\/adaptive-interactive-toasts?tabs=builder-syntax\"><span style=\"font-weight: 400;\">toast<\/span><\/a><span style=\"font-weight: 400;\"> notifications when a new structure change event is recorded by Ripcurrent to the log. An alternative notification possibility (which would be cross-platform) could be to send alerts via email.<\/span><\/p>\n<h4><b>Demonstration<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">The following example shows how a database structure change alert set up in Ripcurrent would be used to help reconfigure an existing FieldShield database masking operation so it can be modified to accommodate a new column.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here is the original FieldShield job script defining the source, and masked target, table before a new column was added:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-16010 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-114014-300x156.png\" alt=\"\" width=\"885\" height=\"460\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-114014-300x156.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-114014-1024x531.png 1024w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-114014-768x398.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-114014.png 1041w\" sizes=\"(max-width: 885px) 100vw, 885px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">I am going to run <\/span><a href=\"https:\/\/docs.google.com\/document\/d\/1UkFY5pQ8UkveREeKZOcpO-bec1kA6ID6EGj21Lk_kgQ\/edit?usp=sharing\"><span style=\"font-weight: 400;\">Ripcurrent<\/span><\/a><span style=\"font-weight: 400;\">, configured to monitor this (local) MySQL database. I will also have the aforementioned Python program running in the background to monitor new structure change events and record them in the Ripcurrent log file (located at the path I specified as an argument to the program).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When I ran that Python program, I received a notification that a new column (EMAIL) has been added to a table named \u2018sensitive\u2019, which contains personally identifiable information:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-16013 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-10-164233-300x147.png\" alt=\"\" width=\"457\" height=\"224\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-10-164233-300x147.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-10-164233.png 403w\" sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">My existing <\/span><a href=\"https:\/\/www.iri.com\/products\/fieldshield\"><span style=\"font-weight: 400;\">FieldShield<\/span><\/a><span style=\"font-weight: 400;\"> job (above) to mask the data in this table did not include this column (it did not exist at the time). The job is not automatically updated when a new column is inserted.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Therefore, In order to keep existing FieldShield masking job scripts in sync with structural changes in a database, I have to re-run the<\/span> <a href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/schema-data-class-search\/\"><i><span style=\"font-weight: 400;\">Schema Data Class Search<\/span><\/i><\/a><span style=\"font-weight: 400;\"> wizard (available by right-clicking on the schema in the Data Source Explorer of IRI Workbench):<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-16014 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120506-253x300.png\" alt=\"\" width=\"574\" height=\"681\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120506-253x300.png 253w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120506.png 534w\" sizes=\"(max-width: 574px) 100vw, 574px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">A page in the wizard will open like the one above. Options available within the wizard include the selection of schemas to include in the search and selection of data classes to use in the search:<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16015\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120519-300x136.png\" alt=\"\" width=\"575\" height=\"261\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120519-300x136.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120519.png 529w\" sizes=\"(max-width: 575px) 100vw, 575px\" \/><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16016\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120548-253x300.png\" alt=\"\" width=\"593\" height=\"704\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120548-253x300.png 253w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120548.png 534w\" sizes=\"(max-width: 593px) 100vw, 593px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">After I finish the schema data class search, the data class library is updated with the new column:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-16019 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-103328-300x117.png\" alt=\"\" width=\"820\" height=\"320\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-103328-300x117.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-103328-768x300.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-103328.png 806w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">After reviewing the data classifications, from the FieldShield menu, the new <\/span><a href=\"https:\/\/www.iri.com\/blog\/data-protection\/db-data-class-masking\/\"><i><span style=\"font-weight: 400;\">Data Class Database Masking Job<\/span><\/i><\/a> <span style=\"font-weight: 400;\">wizard can be run again to update FieldShield job scripts needed to mask tables with a new structure.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-16020 aligncenter\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-112731-300x178.png\" alt=\"\" width=\"754\" height=\"447\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-112731-300x178.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-112731-768x456.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-112731.png 799w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Completion of this wizard results in a new, updated job being produced that includes the newly added email column, along with a masking rule applied to the email column based on the default rule paired with the email data class.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16022\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-0957391-300x150.png\" alt=\"\" width=\"923\" height=\"462\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-0957391-300x150.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-0957391-768x384.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-14-0957391.png 1019w\" sizes=\"(max-width: 923px) 100vw, 923px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">While this example shows just one structural change to one table being made for clarity of demonstration, re-running the aforementioned process will synchronize the FieldShield masking job with any number of changes in any number of tables that may have been made since it was originally created.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To give a basis for comparison, the image below displays the original data in the table.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16023\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-115701-300x84.png\" alt=\"\" width=\"921\" height=\"258\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-115701-300x84.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-115701-768x215.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-115701.png 918w\" sizes=\"(max-width: 921px) 100vw, 921px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">After executing the FieldShield script, the SSN column is partially redacted, the first name is pseudonymized, the credit card is redacted except for the last four digits, and email addresses are encrypted with format-preserving AES-256 encryption.<\/span><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-16024\" src=\"\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120045-300x81.png\" alt=\"\" width=\"1169\" height=\"316\" srcset=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120045-300x81.png 300w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120045-768x208.png 768w, https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Screenshot-2022-06-13-120045.png 864w\" sizes=\"(max-width: 1169px) 100vw, 1169px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">All masking rules are consistently applied across tables based on column data classification.<\/span><\/p>\n<h4><b>Summary<\/b><\/h4>\n<p><span style=\"font-weight: 400;\">In addition to reacting in real-time to changes of <\/span><i><span style=\"font-weight: 400;\">data<\/span><\/i><span style=\"font-weight: 400;\"> in a database, Ripcurrent can record changes to the <\/span><i><span style=\"font-weight: 400;\">structure <\/span><\/i><span style=\"font-weight: 400;\">of a database in a log. This log can be monitored to trigger alerts for any manual actions that may need to be taken due to the modified structure of the database.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abstract:\u00a0This is the final in a series of 4 articles pertaining to 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 to react in real-time to database (DB) change events. Typically this involves replicating data to downstream target(s), optionally with transformation<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/www.iri.com\/blog\/vldb-operations\/using-ripcurrent-for-db-structure-change-reporting\/\" title=\"Using Ripcurrent for DB Structure Change Reporting\">Read More<\/a><\/div>\n","protected":false},"author":119,"featured_media":16011,"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,91,29,3],"tags":[1700,1701,1702,1696,1697],"class_list":["post-16007","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-protection","category-iri-workbench","category-test-data","category-vldb-operations","tag-database-structure","tag-db-structure","tag-db-structure-change","tag-iri-ripcurrent","tag-ripcurrent"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.4 (Yoast SEO v23.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Ripcurrent for DB Structure Change Reporting - IRI<\/title>\n<meta name=\"description\" content=\"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Ripcurrent for DB Structure Change Reporting\" \/>\n<meta property=\"og:description\" content=\"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-28T16:34:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1110\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\"},\"author\":{\"name\":\"Devon Kozenieski\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\"},\"headline\":\"Using Ripcurrent for DB Structure Change Reporting\",\"datePublished\":\"2022-06-28T16:34:12+00:00\",\"dateModified\":\"2022-06-28T16:34:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\"},\"wordCount\":738,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png\",\"keywords\":[\"database structure\",\"db structure\",\"DB structure change\",\"IRI Ripcurrent\",\"Ripcurrent\"],\"articleSection\":[\"Data Masking\/Protection\",\"IRI Workbench\",\"Test Data\",\"VLDB\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\",\"url\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\",\"name\":\"Using Ripcurrent for DB Structure Change Reporting - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png\",\"datePublished\":\"2022-06-28T16:34:12+00:00\",\"dateModified\":\"2022-06-28T16:34:12+00:00\",\"description\":\"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png\",\"contentUrl\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png\",\"width\":1110,\"height\":600},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Ripcurrent for DB Structure Change Reporting\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.iri.com\/blog\/#website\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/www.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/www.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:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1\",\"name\":\"Devon Kozenieski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g\",\"caption\":\"Devon Kozenieski\"},\"url\":\"https:\/\/www.iri.com\/blog\/author\/devonk\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Ripcurrent for DB Structure Change Reporting - IRI","description":"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0","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:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/","og_locale":"en_US","og_type":"article","og_title":"Using Ripcurrent for DB Structure Change Reporting","og_description":"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0","og_url":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/","og_site_name":"IRI","article_published_time":"2022-06-28T16:34:12+00:00","og_image":[{"width":1110,"height":600,"url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","type":"image\/png"}],"author":"Devon Kozenieski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Devon Kozenieski","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#article","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/"},"author":{"name":"Devon Kozenieski","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1"},"headline":"Using Ripcurrent for DB Structure Change Reporting","datePublished":"2022-06-28T16:34:12+00:00","dateModified":"2022-06-28T16:34:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/"},"wordCount":738,"commentCount":0,"publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","keywords":["database structure","db structure","DB structure change","IRI Ripcurrent","Ripcurrent"],"articleSection":["Data Masking\/Protection","IRI Workbench","Test Data","VLDB"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/","url":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/","name":"Using Ripcurrent for DB Structure Change Reporting - IRI","isPartOf":{"@id":"https:\/\/www.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage"},"image":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage"},"thumbnailUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","datePublished":"2022-06-28T16:34:12+00:00","dateModified":"2022-06-28T16:34:12+00:00","description":"While Ripcurrent is mainly designed to take action on DB change events that involve the modification of data in tables, it also monitors change events involving structural changes in a DB schema (such as adding a new column to a table) and records them to a log file. A separate program can then monitor this log for new events, and then issue an alert or otherwise take a specified action.\u00a0","breadcrumb":{"@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#primaryimage","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","contentUrl":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","width":1110,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/www.iri.com\/blog\/data-transformation2\/using-ripcurrent-for-db-structure-change-reporting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Ripcurrent for DB Structure Change Reporting"}]},{"@type":"WebSite","@id":"https:\/\/www.iri.com\/blog\/#website","url":"https:\/\/www.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/www.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.iri.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/www.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/www.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:\/\/www.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/de972c035aaeecfc40a3ae2ea5ff7ba1","name":"Devon Kozenieski","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e4c421588c1a85dd9a76146fe15528f7?s=96&d=blank&r=g","caption":"Devon Kozenieski"},"url":"https:\/\/www.iri.com\/blog\/author\/devonk\/"}]}},"jetpack_featured_media_url":"https:\/\/www.iri.com\/blog\/wp-content\/uploads\/2022\/06\/Using-Ripcurrent-Image-Feature.png","_links":{"self":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16007"}],"collection":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/users\/119"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=16007"}],"version-history":[{"count":8,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16007\/revisions"}],"predecessor-version":[{"id":16009,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/posts\/16007\/revisions\/16009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media\/16011"}],"wp:attachment":[{"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=16007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=16007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=16007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}