Skip to main content

DBSync

Contributors: Tyler Engelhardt

DBSync Overview

Overview

DBSync is a database comparison and reconciliation recommendation tool. The tool has the ability to compare and contrast databases with similar schemas to determine the differences between the databases in order to recommend the changes required to synchronize them. The purpose of the tool is to shed light on synchronization issues that may be hard to detect through convention methods.

The DBSync tool consists of an API and User Interface that can be deployed through IIS or as independent services and desktop applications. The API and User Interface are used to manage the metadata related to performing reconciliations, validating recommendations, and downloading the accepted recommendation. The package also comes with a console utility to consume the desired databases and to host the reconciliation process.

Recommendations are generated in a format suitable for deployment to the desired database. As an example, reconciling an OSIsoft PI Data Archive will yield PI Builder files organized by the recommended order of execution.

Goals

The goal of DBSync was to allow synchronization on databases with similar schemas. The premise of DBSync was to start with synchronizing SCADA systems against the OSIsoft PI Data Archive with the ambition of integrating other databases to be compatible with DBSync. Managing large databases can be a tricky and time consuming process that can lead to inconsistencies across multiple databasese. DBSync is designed to shed light on the complex process of reconciling of databases and to automate the process up until the execution of synchronization.

Challenges

The challenge of building DBSync was finding a way to normalize the data streams (the different databases) with terminology that could be consistent regardless of the database being worked with. Each database also brings in its own unique set of challenges to determine how it must be worked with in order to generate recommendations to perform a synchronization.