Post on 11-May-2015
description
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