Skip to content

atlanmod/NeoEMF

Repository files navigation

NeoEMF

Tweet

Licence Maven Central Plugin

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.

Resource Loading in NeoEMF
URI uri = new BlueprintsUriFactory().createLocalUri("models/myGraph.graphdb");

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet .createResource(uri);

Read more at the Documentation Site

Main Features

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

Integrate NeoEMF to your Maven build

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 (requires blueprints-core)

  • MapDB : mapdb

  • BerkeleyDB: berkeleydb

  • HBase: hbase

  • MongoDB: mongodb

Eclipse Installation

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.

Benchmarks

NeoEMF Benchmarks comparing the performance of the different backends and with Eclipse [CDO] is available as a separate project:

Issues

If you experience issues installing or using NeoEMF, you can submit an issue on github or contact us at [email protected]

Known issues:

  • 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.

Credits

Performance problems and memory leaks are diagnosed with Java Profiler

Latest release Build Status Javadocs CodeCov Codacy code quality Javadoc