About Non-Mongoose Data Used in Mongoose Applications
You can incorporate data from a non-Mongoose source, for example a legacy application that is being converted to a Mongoose base. However, certain schema elements required by Mongoose often do not exist in the non-Mongoose data source, as described in this topic.
To incorporate these data sources into your Mongoose-based application, you must create views that provide the schema elements required by Mongoose.
See Including Data from an External Database into a Mongoose Application.
Unicode Support
Mongoose application databases are designed to support Unicode, but other data sources might not support Unicode. To avoid improper scanning of indexes in the non-Mongoose data sources, you may need to set the “Non unicode literal” process default in the Mongoose application.
Optimistic Locking
Mongoose databases use the RecordDate property to provide optimistic locking. In many cases, however, the non-Mongoose data source does not have a RecordDate column. So, one of the major problems with using non-Mongoose data sources is the coordination of optimistic locking. Both the IDO Linked Databases form and the IDO Linked Tables form provide options to specify a column to be used for optimistic locking in the non-Mongoose data source.
These options include:
- Allowing Mongoose to identify whether a RecordDate column exists in the non-Mongoose data source
- Designating a default column on the IDO Linked Databases form. This is the name of a column that is normally used for optimistic locking by the non-Mongoose tables, if such a column exists.
- Designating a column for optimistic locking on the IDO Linked Tables form
If none of these options exist, the literal string "NODATE" is designated as the RecordDate value. Because this literal string is applied to any access of the non-Mongoose data source, no optimistic locking occurs.
About the Mongoose View
The created Mongoose view over the non-Mongoose data source includes the columns from the data source plus these additional columns, required by Mongoose for processing:
- RecordDate, used for optimistic locking in Mongoose. The system maps whatever column you have assigned to use for optimistic locking to this column, as described above. During run time, Mongoose checks to see if this value has been modified elsewhere since the data was first queried, before your modifications.
- RowPointer, required to be a value that is unique for the entire table. For Outrigger data sources, this value is derived by concatenating the primary key values from each row in the external table.
After this view is created, you can create IDOs and forms, and perform read and write operations on the linked database table like any other Mongoose database table. One exception is that you cannot use the non-Mongoose database and tables for any event action where the workflow must be suspended.