Neo4EMF eclipsecon 2013

Post on 11-May-2015

881 views 0 download

Tags:

description

NEO4EMF, a Neo4j-based model repository and persistence framework allowing on-demand loading, storage, and unloading of large-scale EMF models. Check us at : https://neo4emf.com Fork us at : https://github.com/neo4emf/Neo4EMF

Transcript of Neo4EMF eclipsecon 2013

Neo4EMF : Big Models

made possibleAmine BENELALLAM

AtlanMod Research TeamEclipseCon Europe 2013, Ludwigsburgh,

GermanyOctober 31

1

2© AtlanMod - atlanmod-contact@mines-nantes.fr

Context

Model Management

Model Transformation Model Versionning ….

3

Challenges + solutions

Lazy loadingOn demand loadingSave if dirtyEffective Backend

4© AtlanMod - atlanmod-contact@mines-nantes.fr

Database Market

Relational DBsNoSQL DBs

ColumnDocument Key/value Graph

5© AtlanMod - atlanmod-contact@mines-nantes.fr

Graphs & MDD

Natural Representation

Models as attributed directed graphs

High performanceAdvanced graph traversal algorithms

Model Management

Tech

Graphs

6© AtlanMod - atlanmod-contact@mines-nantes.fr

Towards Graph DBs to Persist Models

7

Neo4J

Short presentation Basic concepts

8

Neo4j : Short Introduction

Neo4j project started in 2007 in SwedenFirst Version (1.0) was released in 2010

More than 10 Versions (active Community)

Current Version 2.0.0-M06 (MileStone)Labelled nodesConstrained DB

9

They trust Neo4j

10

Neo4j Graph DB concepts

11

Neo4j Graph DB concepts

12

Neo4j Graph DB concepts

13

Neo4j Graph DB concepts

14

Neo4EMF

IntegrationFrameworkProcessData-RepresentationWhat’s new in Neo4EMF

ChangelogPartitioningJava Ecore codegen

15

Neo4EMF = EMF+Neo4J_embedded

16© AtlanMod - atlanmod-contact@mines-nantes.fr

Framework

Eclipse Modeling Framework

Neo4EMF

Neo4emfUtils NeoJava codeGen ChangeLog

Neo4j

17

ProcessEdit/ create Data

Retrieve data

Check changesNotify get / set

Neo4j Resource

Save

to par

titions

Unload partitions

18

Data Representation

19

Data Representation

20© AtlanMod - atlanmod-contact@mines-nantes.fr

Neo4EMF-Object

A Neo4EMF-Object is simply a : MinimalEObjectImplAdditional metadata (ID)Notifies changes and access Stores an adapter to capture notifications and store them in the changelog

21© AtlanMod - atlanmod-contact@mines-nantes.fr

Save : ChangeLog

Lightweight entry set that casts and records changes notifications

22© AtlanMod - atlanmod-contact@mines-nantes.fr

Load : Partitioning

Two kinds of partitionsFlat partitions (to gather elements of the same type)Tailed partitions (to hold references to other objects)

Partitions might be flexible Static/Dynamic PartitioningFull-Load

23© AtlanMod - atlanmod-contact@mines-nantes.fr

Unload : Access History

The Unloader uses the data access history recorder to unload partitionsUnloading strategies :

LIFO, FIFOLeast recently used Least frequenty used

24© AtlanMod - atlanmod-contact@mines-nantes.fr

NeoJava Codegen

Adapted codegen templates for :Refined on-demand loading Data access notification Costimized AdapterFactory to cast notifications and store them in the changelogSeparated objects and data

© AtlanMod - atlanmod-contact@mines-nantes.fr

DemonstrationScenario

25

Generate Query

Populates

Discovers

Java.ecore

(it can be any other plugin) org.eclipse.emf.ecore

26© AtlanMod - atlanmod-contact@mines-nantes.fr

Still more to come

Concurrent AccessDistributed modelsSynchronized unloading More Ecore utilities

27© AtlanMod - atlanmod-contact@mines-nantes.fr

Questions

28© AtlanMod - atlanmod-contact@mines-nantes.fr

Don’t forget to

Check us out :www.neo4emf.com

Contact us :neo4emf@gmail.com

Fork us at : https://github.com/neo4emf/Neo4EMF