Persistence Layer

In this section:

A typical nme-config.xml file appears as follows:

<config>
	<persistenceLayer
		class="com.ataccama.nme.persistence.vldb.VldbPersistenceFactory">
		<dataSource>ora</dataSource>
	<prefix>a_</prefix> <!-- used as table prefix for all NME engine tables -->
	</persistenceLayer>
	<modelDefinitionFile>nme-model.gen.xml</modelDefinitionFile>
	<serviceDefinitionFile>nme-services.gen.xml</serviceDefinitionFile>
	<batchLayerDefinitionFile>nme-batch.gen.xml</batchLayerDefinitionFile>
	<taskExecutorConfigFile>nme-executor.xml</taskExecutorConfigFile>
</config>

The following is a list of main components (most of them configured in separate files):


Top of page

x
VLDB Persistence/Logical Transaction Persistence

Database persistence supports large change sets (no extra requirement for UNDO space in Oracle), but does not rely on transaction support. All changes are realized as INSERT commands, with obsolete records being deleted over time (expunger job).

This persistence is also used for Extended Unification repository when it is used in transition plans. For example, Unification repository is also covered by the Logical Transaction.

<persistenceLayer class="com.ataccama.nme.persistence.vldb.
VldbPersistenceFactory">
	<dataSource>ora</dataSource>
	<prefix>a_</prefix>
</persistenceLayer>

Top of page

x
VersionedPersistenceFactory Extension

Database persistence wrapper which allows you to keep changes made for specified table in the history suffixed table (_h).

Note: This setting is not useful for larger data volumes and may cause some performance issues.

<persistenceLayer class="com.ataccama.nme.persistence.history.VersionedPersistenceFactory">
	<!-- either VLDB or DB persistence can be used here -->
	<!-- VLDB persistence -->
	<persistence class="com.ataccama.nme.persistence.vldb.VldbPersistenceFactory">
		<dataSource>ora</dataSource>
		<prefix>a_</prefix>
	</persistence>
	<!-- DB persistence
	<persistence class="com.ataccama.nme.persistence.database.DbPersistenceFactory">
		<dataSource>ora</dataSource>
		<prefix>a_</prefix>
	</persistence>
	-->
	<historizedTables>
		<tablPattern>.*party.*</tablPattern> --- optionally .* for all tables
	</historizedTables>
</persistenceLayer>

When this feature is enabled, the following changes occur:

The last version in each history table is equal to the current version. The end date is missing in the history table has to be computed, as shown in the following syntax:

select curr.*, foll.eng_version_date as eng_version_end_date from X_PARTY_I_H curr left join X_PARTY_I_H foll on curr.id = foll.id and curr.eng_version + 1 = foll.eng_version order by curr.eng_version

Note: The missing end date is the only difference to the SCD 4 approach.


Top of page

x
DB Persistence

Standard database persistence relies on database transactions. The DB Persistence is usable for medium and large-sized implementations where only a reasonable amount of data is changed in each load.

<persistenceLayer class="com.ataccama.nme.persistence.database.DbPersistenceFactory">
	<dataSource>ora</dataSource>
	<prefix>a_</prefix>
</persistenceLayer>

Top of page

x
XML Persistence

The XML persistence is deprecated and only used for testing purposes. The XML persistence has only one parameter: the folder where XML files (one per table) are kept.

<persistenceLayer class="com.ataccama.nme.persistence.legacy.XmlPersistenceFactory">
	<folder>../masterdb</folder>
</persistenceLayer>

XML persistence has following limitations:


iWay Software