NeoEMF is a persistence layer for the Eclipse Modeling Framework (EMF), which supports different NoSQL databases: Neo4j, Berkeley DB, MongoDB, etc. Thanks to NeoEMF, developers can handle large EMF resources in an efficient and scalable way.
NeoEMF provides the sames interfaces as EMF: EMF-based programs can benefit from the NeoEMF main features wth few or no changes.
URIuri = newBlueprintsUriFactory().createLocalUri("models/myGraph.graphdb");
ResourceSetresourceSet = newResourceSetImpl();
Resourceresource = resourceSet .createResource(uri);Read more at the Documentation Site
- Lazy-loading
Resource objets are loaded on demand to reduce memory footprint.
- Caching
In most cases, NeoEMF relies on database caches to retrieve resource objects. When the performance is critical, NeoEMF provides a build-in, application-level cache to accelerate database access.
- Auto-commit
For backends limited on transaction size, it is possible to use the auto-commit feature to split large transaction into several small ones
- Dirty saving
Handle large models that haven’t been persisted to avoid memory overhead
To add a dependency on NeoEMF using Maven, use the following:
<dependencies>
<dependency>
<groupId>org.atlanmod.neoemf</groupId>
<artifactId>neoemf-core</artifactId>
<version>2.1.0</version>
</dependency>Backend implementations are located under the artifactID neoemf-data-XXX.
<dependency>
<groupId>org.atlanmod.neoemf</groupId>
<artifactId>neoemf-data-XXX</artifactId>
<version>2.1.0</version>
</dependency>Where XXX is any of:
Blueprints:
TinkerGraph :
blueprints-coreNeo4j:
blueprints-neo4j(requiresblueprints-core)
MapDB :
mapdbBerkeleyDB:
berkeleydbHBase:
hbaseMongoDB:
mongodb
The simplest way to install the NeoEMF plugins in Eclipse is to use the update-site that is available here. Install the NeoEMF Persistence Framework plugin, which provides NeoEMF core classes and utils. Select the backend specific implementation(s) you want to plug in NeoEMF.
Important | For further information, see the dedicated page in the NeoEMF Documentation. |
NeoEMF Benchmarks comparing the performance of the different backends and with Eclipse [CDO] is available as a separate project:
If you experience issues installing or using NeoEMF, you can submit an issue on github or contact us at neoemf@googlegroups.com
Only Oxygen plugins are fetched (the compatibility is not ensured for previous Eclipse versions)
The Eclipse plugins cannot be built if Maven can not access internet (it is needed to fetch Oxygen p2 repositories)
Sometimes the plugin build crashes and/or freezes during p2 index fetching from Oxygen repositories. It is generally sufficient to cancel the build (
ctrl-c) and to relaunch it.
Performance problems and memory leaks are diagnosed with Java Profiler