neo4emf eclipsecon 2013
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/Neo4EMFTRANSCRIPT
Neo4EMF : Big Models
made possibleAmine BENELALLAM
AtlanMod Research TeamEclipseCon Europe 2013, Ludwigsburgh,
GermanyOctober 31
1
3
Challenges + solutions
Lazy loadingOn demand loadingSave if dirtyEffective Backend
4© AtlanMod - [email protected]
Database Market
Relational DBsNoSQL DBs
ColumnDocument Key/value Graph
5© AtlanMod - [email protected]
Graphs & MDD
Natural Representation
Models as attributed directed graphs
High performanceAdvanced graph traversal algorithms
Model Management
Tech
Graphs
6© AtlanMod - [email protected]
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 - [email protected]
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 - [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
21© AtlanMod - [email protected]
Save : ChangeLog
Lightweight entry set that casts and records changes notifications
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
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
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
© AtlanMod - [email protected]
DemonstrationScenario
25
Generate Query
Populates
Discovers
Java.ecore
(it can be any other plugin) org.eclipse.emf.ecore
26© AtlanMod - [email protected]
Still more to come
Concurrent AccessDistributed modelsSynchronized unloading More Ecore utilities
27© AtlanMod - [email protected]
Questions
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