Feasibility Report and Recommendation
Persistence Layer Feasibility
The Persistence Layer enables LexEVS to have a single access point to the underlying database. This has several advantages:
- The DAO is implemented as an Interface, not a concrete class. We can implement this interface with Hibernate, JDBC, Ibatis, or any other Persistence tool or framework.
- All loaders can now share a single entry point to the database, and are not limited by memory constraints as some of the EMF persistence was.
- Connection Pooling and management is abstracted from the code and pluggable. Data source implementations may be switched and Connection Pooling may be configured without recompiling code.
- Transactions may be defined programmatically via AOP interceptors.
As LexEVS moves forward, the Persistence Layer is also flexible enough to play a part in the runtime Query API. With this, the runtime and loader code would be able to share a common Data Access Layer - we would then have a true DAO Layer.
Loader Framework Feasibiity
The Loader Framework has been implemented for two loaders, the UMLS single ontology loader and the NCI Metathesaurus loader. These loaders that implement the Loader Framework simple must define the READ and TRANSFORMATION mechanisms for the load, as well as load order and flow. All common details of Loading to LexEVS will be dealt with by the Loader Framework and will not have to be implemented. Tools exist for:
- Lucene Indexing
- Registering CodingSchemes
- Changing CodingScheme status (to ACTIVE, INACTIVE, etc)
- Building the Transitivity Closure table
- Adding Supported Attributes
- Detecting Database type
- Staging temporary data to the database
- Restarting failed loads
- Integrating with LexEVS logging
- Detecting and handling Root Nodes
- ...and more common LexEVS load related tasks
Also, to aid in Transformation, basic building blocks have been created that users may extend, such as:
- Processors for all of LexEVS Model Objects
- Various List Processors
- Grouping Processors
- Auto-Supported Attribute adding Processors
- Several basic Resolvers to extract LexEVS Specific data from the source
- ... various other Processors for specialized tasks
Several Utilities are also available for Reading and Writing, such as:
- Group Readers
- Group Writers
- Writers configurable to skip certain records
- Partitionable readers to break up large source files
- Error checking Readers and Writers
- A Validating framework for inspecting content before it is inserted into the database.
- etc.