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.
URI uri = new BlueprintsUriFactory().createLocalUri("models/myGraph.graphdb");
ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = 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-core -
Neo4j:
blueprints-neo4j(requiresblueprints-core)
-
-
MapDB :
mapdb -
BerkeleyDB:
berkeleydb -
HBase:
hbase -
MongoDB:
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.
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
