About non-Mongoose data used in Mongoose-based 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.
For the procedure, 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 might need to set the Non unicode literal process default in the Mongoose-based 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 property. 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.
This specification can include these options:
- 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 is used for optimistic locking in Mongoose. The system maps whatever column you have assigned in the non-Mongoose table to use for optimistic locking to this column, as described previously. During run-time, Mongoose checks to see if this value has been modified elsewhere since the data was first queried, before your modifications.
- RowPointer is 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. You can also 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.