MVMirror is a real-time bidirectional gateway between D3 and SQL Server databases. Many clients have this service installed to provide ancillary functionality for Crusader that is supported from SQL Server. In one case it serves as the interface between Crusader and an automated courier labelling and manifest system.
Many legacy systems are implemented using the D3® (Pick®) multidimensional database. Being multidimensional provides many advantages, however since data is stored in a non-relational format it can be quite difficult for these systems to be integrated with Windows technology. For many businesses who rely on a D3® database, sophisticated reporting and interfacing to other systems will be difficult, if not impossible.
MVMirror™ is designed to overcome this difficulty by providing a two-way link between the relational and non-relational world. Using MVMirror™, selected D3® files can be replicated to tables in a relational database. Any time data changes in the D3® file, the changes are automatically transmitted to the relational database. If the relational database is Microsoft® SQL Server®, changes can be reflected in both directions.
With MVMirror™ it is possible to integrate products such as Microsoft® Reporting Services™, Microsoft® CRM™ and Microsoft® Analysis Services (or any other product which expects an ANSI SQL interface) with systems running on D3®. Other systems that are designed to work with SQL Server can share their data with a D3® application, providing seamless operation.
How does it work?
Triggers on the D3® database (and SQL Server, if that is the relational database being used) record changes made to data. A special process running on the D3® database is used to translate those changes into commands - either SQL commands if the changes have been made on the D3® database, or D3® FlashBASIC™ operations if it is the SQL Server database which has changed. The process then executes those commands to ensure that the data in both databases is the same.
When setting up MVMirror™, it is necessary to create a set of “data definitions” which are used when translating between databases. These definitions can also be used to specify what happens when changes occur to both databases at the same time. Rules can be used to ensure one database takes priority over the other, or to combine the changes and apply them to both.