Integrating heterogeneous data from different sources is a core aspect of the OpenEngSB, which is currently faciliated by an entity-attribute-value data model over a relational database. The RDBMS and the used data model for versioning impose various limitations, especially regarding the volume of data, horizontal scaling, querying but set also additional preconditions for data models to be placed under version control during the software engineering process. Experience has shown that, any single storage system is not capable of satisfying all requirements towards persistence solutions in Automation Systems Engineering environments, especially regarding versioning of integrated data and querying historic data.
The goal is to build a scalable storage for versioning any kind of information / data. Most likely it requires the design and implementation of a polyglot persistence application layer that leverages the strengths of different traditional and non-traditional storage systems.
The resulting outcome is a prototype that is able to
- any kind of information
- in case there is no model available, information is treated as a BLOB limiting change analysis between versions to a very minimum (like user and time)
- model-based versioning is favoured
- a volatile data model (introduce and change concepts at runtime)
- efficient storage of tree based structures
- a history of changes of individuals
- efficient querying on current data and historic information
- OSGi compatible
Benefit for the Student
Gain experience of traditional database systems and dive into the lates emerging non-traditional persistence solutions. Gain extensive hands on experience on how to use their Java APIs.Apply methods of Software Architecture to integrate the different systems.
Benefit for the Project
By now, persistence solutions for integrated and versioned data have been working on a single database system (either a RDBMS, NoSQL or Ontology Store), which individually imposes several limitations. A scalable solution that leverages the strenghts of different storage systems and offers solutions to these limitations would be a huge gain for the project.
Excellent skills in Java based software development are essential knowledge about data storage technologies (RDBMS, NoSQL derivates), as well as their theory is necessary interest in emerging persistence solutions is welcome know-how about OSGi and enterprise software integration is a benefit.