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.
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 [email protected]
-
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