28
Neo4EMF : Big Models made possible Amine BENELALLAM AtlanMod Research Team EclipseCon Europe 2013, Ludwigsburgh, Germany October 31 1

Neo4EMF eclipsecon 2013

Embed Size (px)

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

Citation preview

Page 1: Neo4EMF eclipsecon 2013

Neo4EMF : Big Models

made possibleAmine BENELALLAM

AtlanMod Research TeamEclipseCon Europe 2013, Ludwigsburgh,

GermanyOctober 31

1

Page 2: Neo4EMF eclipsecon 2013

2© AtlanMod - [email protected]

Context

Model Management

Model Transformation Model Versionning ….

Page 3: Neo4EMF eclipsecon 2013

3

Challenges + solutions

Lazy loadingOn demand loadingSave if dirtyEffective Backend

Page 4: Neo4EMF eclipsecon 2013

4© AtlanMod - [email protected]

Database Market

Relational DBsNoSQL DBs

ColumnDocument Key/value Graph

Page 5: Neo4EMF eclipsecon 2013

5© AtlanMod - [email protected]

Graphs & MDD

Natural Representation

Models as attributed directed graphs

High performanceAdvanced graph traversal algorithms

Model Management

Tech

Graphs

Page 6: Neo4EMF eclipsecon 2013

6© AtlanMod - [email protected]

Towards Graph DBs to Persist Models

Page 7: Neo4EMF eclipsecon 2013

7

Neo4J

Short presentation Basic concepts

Page 8: Neo4EMF eclipsecon 2013

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

Page 9: Neo4EMF eclipsecon 2013

9

They trust Neo4j

Page 10: Neo4EMF eclipsecon 2013

10

Neo4j Graph DB concepts

Page 11: Neo4EMF eclipsecon 2013

11

Neo4j Graph DB concepts

Page 12: Neo4EMF eclipsecon 2013

12

Neo4j Graph DB concepts

Page 13: Neo4EMF eclipsecon 2013

13

Neo4j Graph DB concepts

Page 14: Neo4EMF eclipsecon 2013

14

Neo4EMF

IntegrationFrameworkProcessData-RepresentationWhat’s new in Neo4EMF

ChangelogPartitioningJava Ecore codegen

Page 15: Neo4EMF eclipsecon 2013

15

Neo4EMF = EMF+Neo4J_embedded

Page 16: Neo4EMF eclipsecon 2013

16© AtlanMod - [email protected]

Framework

Eclipse Modeling Framework

Neo4EMF

Neo4emfUtils NeoJava codeGen ChangeLog

Neo4j

Page 17: Neo4EMF eclipsecon 2013

17

ProcessEdit/ create Data

Retrieve data

Check changesNotify get / set

Neo4j Resource

Save

to par

titions

Unload partitions

Page 18: Neo4EMF eclipsecon 2013

18

Data Representation

Page 19: Neo4EMF eclipsecon 2013

19

Data Representation

Page 20: Neo4EMF eclipsecon 2013

20© AtlanMod - [email protected]

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

Page 21: Neo4EMF eclipsecon 2013

21© AtlanMod - [email protected]

Save : ChangeLog

Lightweight entry set that casts and records changes notifications

Page 22: Neo4EMF eclipsecon 2013

22© AtlanMod - [email protected]

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

Page 23: Neo4EMF eclipsecon 2013

23© AtlanMod - [email protected]

Unload : Access History

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

LIFO, FIFOLeast recently used Least frequenty used

Page 24: Neo4EMF eclipsecon 2013

24© AtlanMod - [email protected]

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

Page 25: Neo4EMF eclipsecon 2013

© AtlanMod - [email protected]

DemonstrationScenario

25

Generate Query

Populates

Discovers

Java.ecore

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

Page 26: Neo4EMF eclipsecon 2013

26© AtlanMod - [email protected]

Still more to come

Concurrent AccessDistributed modelsSynchronized unloading More Ecore utilities

Page 27: Neo4EMF eclipsecon 2013

27© AtlanMod - [email protected]

Questions

Page 28: Neo4EMF eclipsecon 2013

28© AtlanMod - [email protected]

Don’t forget to

Check us out :www.neo4emf.com

Contact us :[email protected]

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