Universal Programming,
Inc.
MCNET /
INFREP - INFINITY Database Replication to remote SQL ServerMcnet/Infrep is a package that performs data replication between a Modcomp computer with Logical Data Corporation�s Infinity Database Package and a computer with a database server such as Microsoft Corporation�s SQL Server that uses SQL (Structured Query Language) as the database access language. The Infinity operations that are supported are Insert, Update, and Delete.
The document presents an overview of the information that is required in order to accomplish the replication and an overview of some of the conditional processing that can be cone.
An example based upon the Mnemonic-Based Mcnet/Infrep Configuration Data is available. Also, a sample database design for configuration is available.
Features
The basic replication features that are provided include:
SQL tables.Data can be replicated to multiple database servers.
An Infinity field can be replicated to one or more
Values can be scaled.
Simple constraints such as limit checking can be performed.
Simple translations such as selected engineering unit conversions and simple table lookup can be performed.
Table selection can be based upon an Infinity field value or an Infinity record number
SQL
statements for Insert, Update, and Delete operations are generated by the replication task.The following features are available for more complex replication:
SQL
statements for Insert, Update, and Delete operations can be generated by user-supplied SQL statements. This allows functions such as additional arithmetic, field concatenation, field parsing (splitting), and execution of stored procedures to be performed.User-written functions are supported on systems such as Microsoft Corporation�s Windows NT that support dynamic linking.
The replication task is controlled by configuration information that describes where to get data, how to manipulate the data, and where to put the data. This configuration information can be supplied in data tables in the relational database or in text files containing mnemonic-based configuration data.
Configuration Information Categories
The primary categories of configuration information are:
Modcomp) host definition,Source (
Source (Infinity) database definition,
Source (Infinity) database field definition,
Target database server definition,
Target database definitions (if user does not supply
SQL statements), and,Target database table definitions (if user does not supply
SQL statements).These categories correspond to the primary data tables that would be in a database that describes the parameters for the replication tasks.
The following sections list a summary of the information that is required in each table.
Source (Modcomp) Host Definition
The host computer must be identified to the replication task and requires the following:
Host name,
Host IP address,
Connection socket (port), and,
Description (optional).
Source (Infinity) Database Definition
The source database definition provides information about the database and user-supplied
SQL statements and includes:SQL statements (optional),Host identifier,
Database name,
Optional conditions for specifying target tables,
Permission to delete rows,
Named user-specified
List of named user-specified
SQL statements for Delete, Insert, and Update operations (required if user has supplied any SQL statements), and,Description (optional).
Source (Infinity) Database Field Definition
The source database field definition provides the information that is required in order to convert the data into a form that is suitable for the
SQL database. This information includes:SQL statements),Database identifier,
Field name,
Field sequence number (for generating offset),
Data type,
Primary key indicator (optional if user supplies
Element length (how many bytes in one entry),
Element count (how many entries for the name),
Offset to value (if not automatically generated),
Constraint information (optional),
Scale factor (optional),
User-processing code (optional), and,
Description (optional).
Target Database Server Definition
The target database server definition includes:
MSSQL for Microsoft SQL Server), and,Server name,
Server type (default is
Description (optional).
Target Database Information
The target database information includes:
Server identifier,
Database name,
User name,
User password, and,
Description (optional).
Target Data Table Definition
(Not Required If User Supplies SQL Statements)Server and Database identifiers,
Table name, and,
Description (optional).
Target Data Table Column Definition
(Not Required If User Supplies SQL Statements)Table identifier,
Column identifier,
Column name,
Data type,
Data size (bytes),
Primary key indicator,and,
Description (optional).
User-Supplied
SQL StatementsUser-supplied
SQL statements are the same as normal SQL statements, but where a value would normally be used, a placeholder is used. Also, each user-supplied SQL statement must have a name associated with. (The names must be unique within a single source database.) When the statement is executed, then the placeholder is replaced by the current (converted) value associated with the placeholder. The placeholders are usually source database field names, but can also be a built in name that the replication task recognizes. Any string that is enclosed within curly braces ("{}") is considered a placeholder. When the placeholder represents a field name, then it can also be subscripted and sub strings can be extracted. The subscript notation is enclosed in parenthesis as (index, start, count), where index is element (entry) number, start is the first byte number to access (the default is one), and count is the number of bytes to get (the default is the remainder of the field). Also, built in placeholder names start with an underscore.Example placeholders are:
Placeholder |
Description |
{FON} |
Use entire contents of field name FON |
{I2DATA(3)} |
Use entire contents of third element in field name I2DATA |
{A3DATA(4, 2, 6)} |
Use 6 bytes starting with the 2nd byte from the fourth element in the field named A3DATA |
{_SYSDATE} |
Use current date and time |
Some simple user-supplied statements might be:
Name |
Statement |
|
Master_insert |
INSERT |
INTO RAW_CAS_MASTERELECTRODE (FACTORY_ORDER_NUMBER, BASE_OF_SOCKET, PROCESSID_CODE, CUSTOMER_DATA, SIZE_CODE, SALVAGE_SIZE_CODE) |
VALUES |
({FACTORYORDERNUMBER}, {BASEOFSOCKET}, {PROCESSIDCODE}, {CUSTOMERDATA}, {INTGR2DATA(1)}, {INTGR2DATA(2)}); |
|
Master_delete |
DELETE |
FROM RAW_CAS_MASTERELECTRODE WHERE FACTORY_ORDER_NUMBER = {FACTORYORDERNUMBER}; |
Mmf_insert |
INSERT |
INTO RAW_CAS_MASTERMMF (FACTORY_ORDER_NUMBER, PROCESSID, YEAR, RUN_NUMBER, EXTRUSION_TIME, FORMING_STATUS, LOCATION_IN_RUN) |
VALUES |
({FACTORYORDERNUMBER}, {MMFYEARRUNNUMBER{1,1,2}, {MMFYEARRUNNUMBER{1,3,2}, {MMFYEARRUNNUMBER{1,5}, {INTGR2DATA(1)}, {INTGR2DATA(2), {INTGR2DATA(3)}); |
|
Mmf_delete |
DELETE |
FROM RAW_CAS_MASTERMMF WHERE FACTORY_ORDER_NUMBER = {FACTORYORDERNUMBER}; |
In order for the replication task to execute the preceding statements, the user would need to supply a list of statement names that need to be executed for the database. An example of this list might be:
Operation |
Named SQL Statements To Execute |
Insert new row |
Master_insert, Mmf_insert |
Update existing row |
Master_delete, Master_insert, Mmf_delete, Mmf_insert |
Conditional Statement Execution
Conditional
SQL statements can be executed by the value of a field or an Infinity database record number.The following table shows the information that would be required in order used to split a database into multiple data tables. (All conditions are not shown for this table.)
Field Name |
Value |
Named Statements For Insertion |
Named Statements For Update |
PROCESS |
MF |
Forming_insert |
Forming_delete, Forming_insert |
PROCESS |
B1 |
Bake1_insert |
Bake1_delete, Bake1_insert |
If an Infinity database has different records layouts depending upon the record number, then multiple source database field definitions can be used to define the record contents and required processing. The additional database field definitions can be associated with a dummy source database when the primary database is defined. (The sample configuration file shows an example of this condition.)
For more information,
Contact Universal Programming today:
mailto:info@uniprog.com