NeoEMF is a model persistence solution designed to store models in several kind of NoSQL datastores. It is fully compatible with EMF, making it easy to integrate into your modeling applications.
NeoEMF is based on a lazy-loading mechanism that transparently brings into memory model elements only when they are accessed and remove them when they are no longer needed. With this feature, NeoEMF is able to handle models containing millions of elements even in highly-constrained memory environments.
NeoEMF provides three backend which are able to store your models:
NeoEMF loads model elements only when they are accessed, limiting memory consumption and improving loading execution time.
NeoEMF supports many storage solutions. Current version provides implementations for MapDB, Blueprints, Neo4j, and HBase!
We put a special attention to ensure that calling a NeoEMF method produces the same behavior as standard EMF API calls.
Each database implementation provides an autocommit feature that regularly saves changes in order to free the memory.
NeoEMF embeds a set of caches that can be turned on/off. Want to cache features, size results, isSet results? We have what you need!
Importing models from XMI can be painful and costly. That's why we have developped an efficient and scalable XMI parser for you!
We have made several research publications to present our approach and address specific problems (both conceptual and technical) we faced during the development. You can find here the list of NeoEMF-related publications and the presented slides when they are available.
A. Benelallam, A. Gómez Llana, G. Sunyé, M. Tisi, and D. Launay. In ECMFA 2014, York, United Kingdom, 2014 (article)
G. Daniel, G. Sunyé, A. Benelallam, and M. Tisi. In BigMDE 2014, York, United Kingdom, 2014 (article)