All Projects → atlanmod → Neoemf

atlanmod / Neoemf

Licence: other
Multi-backend EMF persistence framework.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Neoemf

Saint
👁 (s)AINT is a Spyware Generator for Windows systems written in Java. [Discontinued]
Stars: ✭ 522 (+1273.68%)
Mutual labels:  persistence
Docker Postgres
A docker container running PostgreSQL
Stars: ✭ 22 (-42.11%)
Mutual labels:  persistence
Watermelondb
🍉 Reactive & asynchronous database for powerful React and React Native apps ⚡️
Stars: ✭ 7,996 (+20942.11%)
Mutual labels:  persistence
Multi Os Engine
Multi-OS Engine: Create iOS Apps in Java (or Kotlin ... etc.)
Stars: ✭ 529 (+1292.11%)
Mutual labels:  eclipse-plugin
Nano Sql
Universal database layer for the client, server & mobile devices. It's like Lego for databases.
Stars: ✭ 717 (+1786.84%)
Mutual labels:  persistence
Orcc
Open RVC-CAL Compiler
Stars: ✭ 26 (-31.58%)
Mutual labels:  eclipse-plugin
Only
💐 An easy way to persist and run code block only as many times as necessary on Android.
Stars: ✭ 466 (+1126.32%)
Mutual labels:  persistence
Archuseriso
Build Arch Linux iso images, create live usb drives, install on usb drives.
Stars: ✭ 36 (-5.26%)
Mutual labels:  persistence
Base Mvvm
App built to showcase basic Android View components like ViewPager, RecyclerView(homogeneous and heterogeneous items), NavigationDrawer, Animated Vector Drawables, Collapsing Toolbar Layout etc. housed in a MVVM architecture
Stars: ✭ 18 (-52.63%)
Mutual labels:  persistence
Pulsarcast
A pub-sub system for the distributed web - my master thesis @ IST
Stars: ✭ 33 (-13.16%)
Mutual labels:  persistence
Entityauditbundle
Audit for Doctrine Entities
Stars: ✭ 546 (+1336.84%)
Mutual labels:  persistence
Hibernate Springboot
Collection of best practices for Java persistence performance in Spring Boot applications
Stars: ✭ 589 (+1450%)
Mutual labels:  persistence
Use Persisted State
A custom React Hook that provides a multi-instance, multi-tab/browser shared and persistent state.
Stars: ✭ 943 (+2381.58%)
Mutual labels:  persistence
Mobx Persist
persist mobx stores
Stars: ✭ 525 (+1281.58%)
Mutual labels:  persistence
Amateras Html Editor
Eclipse plugin for HTML/JSP/XML/JavaScript Editing
Stars: ✭ 34 (-10.53%)
Mutual labels:  eclipse-plugin
Sled
the champagne of beta embedded databases
Stars: ✭ 5,423 (+14171.05%)
Mutual labels:  persistence
Appserver
A multithreaded application server for PHP, written in PHP.
Stars: ✭ 930 (+2347.37%)
Mutual labels:  persistence
Python Diskcache
Python disk-backed cache (Django-compatible). Faster than Redis and Memcached. Pure-Python.
Stars: ✭ 992 (+2510.53%)
Mutual labels:  persistence
Coredatakit
CoreDataKit makes common operations on objects and importing into CoreData a breeze.
Stars: ✭ 35 (-7.89%)
Mutual labels:  persistence
Cockburst
一个高性能,可靠,异步的本地持久化队列实现;重启JVM、重启服务器、或者强制KILL进程时,队列里的数据不丢失;
Stars: ✭ 33 (-13.16%)
Mutual labels:  persistence

NeoEMF

Build Status CodeCov Codacy Maven Central Javadoc Plugin Licence Javadocs

Check out our wiki for further information on the installation, usages, supported backends, code examples, developer resources, etc.

What Is NeoEMF?

NeoEMF is an AtlanMod research team project that aims at handling large EMF models in an efficient and scalable way.

It is based on our work on Neo4EMF, a scalable and graph-based backend for persisting EMF models.

NeoEMF is a multi-backend framework developped to allow an easy integration of custom backends depending on user needs.

What Are the Features?

NeoEMF comes with some features depending on the backend used:

  • Lazy-loading mechanism: A model is loaded part by part while needed
  • Caching: NeoEMF relies on database caches to retrieve EObjects But in some situation where time performance is important this is not enough and it is possible to use application-level caches to speed up information loading
  • Auto-commit: For the backend having restrictions on transaction sizes 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

Why Should I Use NeoEMF?

NeoEMF is fully EMF compliant, that means there is no modification to do to use it with existing EMF based applications.

Additionally NeoEMF can be plugged with several persistence solutions and is configurable to fit the best your needs (custom caches, in-memory resources, auto-commit,...).

In addition, NeoEMF provides a query API to perform optimized OCL queries over models and reify the results as navigable models.

Usage

Latest Release

The most recent release is NeoEMF 2.0.0, released March 21, 2019.

To add a dependency on NeoEMF using Maven, use the following:

<dependencies>
  <dependency>
    <groupId>fr.inria.atlanmod.neoemf</groupId>
    <artifactId>neoemf-core</artifactId>
    <version>2.0.0</version>
  </dependency>

  <dependency>
    <groupId>fr.inria.atlanmod.neoemf</groupId>
    <artifactId>neoemf-io</artifactId>
    <version>2.0.0</version>
  </dependency>
</dependencies>

Supported Implementations

All native implementations are located under the neoemf-data artifact. To add the dependency of the specific implementation you want to use, simply use:

<dependency>
  <groupId>fr.inria.atlanmod.neoemf</groupId>
  <artifactId>neoemf-data-{name}</artifactId>
  <version>2.0.0</version>
</dependency>

Where {name} is any of:

  • Blueprints:
    • TinkerGraph : blueprints-core
    • Neo4j: blueprints-neo4j (requires blueprints-core)
  • MapDB : mapdb
  • BerkeleyDB: berkeleydb
  • HBase: hbase
  • MongoDB: mongodb (beta)

Snapshots

Snapshots are automatically build from the master and are available throught Maven using 2.0.1-SNAPSHOT.

Installation

Dedicated pages are available in our wiki for the installation and the build.

Update Site

The simplest way to install NeoEMF is to use the update-site that is available here. Install the NeoEMF Persistence Framework component, which provides NeoEMF core classes and utils. Select the backend specific implementation(s) you want to plug in NeoEMF.

Local Build

You can build locally NeoEMF by following the instructions in the Build section. It is then possible to install NeoEMF from the local built update-site, or by importing the generated plugins.

Benchmarks

A full benchmarks description is available at here.

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 can not 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].