emf models getting xxl? an overview of available solutions · hibernate / java persistence api...

37
ARTAL Technologies – 227 rue Pierre Gilles de Gennes – Ensemble La Rue – Bât. 9 – 31670 Labège, France – 05 61 00 39 30 – [email protected] EMF Models getting XXL? An overview of available solutions Jonathan Lasalle Benoit Viaud

Upload: others

Post on 17-Jun-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

ARTAL Technologies – 227 rue Pierre Gilles de Gennes – Ensemble La Rue – Bât. 9 – 31670 Labège, France – 05 61 00 39 30 – [email protected]

EMF Models getting XXL? An overview of available solutions

Jonathan LasalleBenoit Viaud

Page 2: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

2

N E B U L A

S I R I U S

A C C E L E O

E D A P T

O C L

A framework for designing simulations

of large & complex systems

The context

OCL

« Excel-like » tables

« Box-and-arrows » diagrams

Metamodel evolution

Query / export in various format

Validation of data

Functional requirements

Page 3: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

3

The context

Page 4: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

4

A first naive solution

EMF resources serialized into plain XMI files

- Lazy-loading is possible (at the grain of a resource)

- Unloading is a bit more complex…

In the end: all the model in memory

The -XMX race for memory …… until you reach the

PER

FOR

MA

NC

ES

Swap !

Page 5: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

5

CDO Design

Database(H2)

RCP Application

CDO Server

PersistencyLayer

Features :

- Easy integration

- Client / Server

- Transaction based

- Branching

- Auditing

- Lazy loading

- Unloading

- Query mode (SQL)

RCP Application

PersistencyLayer

Page 6: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

6

Limitations:

- Insertion cost (Linear but costly)

- Deletion cost (DB schema / XRef cleaning)

- RAM consumption / release (Opaque behavior)

Explanation :

- Client / Server Management

- Constraints on database schema

- Several management layers

CDO Limitations

Page 7: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

7

CDO: what else ?

Ligthweight basic EMF:- Lazy-loading using resources- Using Minimal EObjects

Pro:- Easy to implement- Light impact on source codeCons:- RAM blast: transversal model queries

Page 8: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

8

CDO: what else ?

Improved CDO:- Merge management layers- Optimization of database schema

Pro:- No impacts on source codeCons:- Only few experts can do it- Opacity / Complexity

Page 9: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

9

CDO: what else ?

Teneo:- Use of Teneo instead of CDO

Pro:- Out-of-the-box solutionCons:- Opacity- No longer maintained- No unloading

Page 10: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

10

CDO: what else ?

Hibernate / Java Persistence API (JPA)- Hibernate for data storage- JPA for data management (POJO)- Conversion from POJO to EObject

Pro:- Hand-made solution (to be tailored)Cons:- Hand-made solution

Page 11: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

11

CDO: what else ?

Neo EMF:- Promising solution- Graph-based database

Pro:- Out-of-the-box solutionCons:- No mature enough- No more place on the podium…

Page 12: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

12

CDO ++ Hibernate / JPA

Import process(750 000 objects)(Insertion only)

1’00” 29”

Update process(Coupling)

10’35” 37”

Data Export 18” 16”

Delete 1 item 25” 0,002”

Delete 100 items 7’24” 0,100”

Benchmark results

11%

99%

Page 13: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

The Hibernate/JPA solution

Database(H2)

JPA Processes EMF Processes

JPA Layer EMF Layer(Texo)

Converter

Data Import

RCP Application

Data Deletion

Nebula Editor

SiriusEditorData Export

OCLValidation

Sync

ComplexAlgorithm

Sync

Page 14: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

14

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

Page 15: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

15

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

Page 16: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

16

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

Page 17: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

17

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

- Quite heavy database mecanism

Page 18: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

18

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

org.eclipse.emf.cdo.util.DanglingReferenceException

- Quite heavy database mecanism

Page 19: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

19

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Bus_Signal

Bus_ID Signal_ID

B1 S1

Signal

ID Container …

S1 B1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

How to explain gain: CDO deletion

- Quite heavy database mecanism

- Must clean non-containment references(e.g. using CDO XReferencer)=> Get and build all impacted Eobjects(even if they were not loaded)=> Clean associated features (or delete items)

Page 20: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

20

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

Bus_Signal

Bus_ID Signal_ID

B1 S1

CDO_Objects

ID Type

B1 Bus

S1 Signal

SP1 SimuParam

Page 21: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

21

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

Foreign Key

FK

Page 22: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

22

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

Foreign Key

FK

Page 23: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

23

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

Foreign Key

FK

Page 24: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

24

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

Foreign Key

FK

Page 25: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

25

Bus

ID …

B1

SimuParam

ID Simulate …

SP1 S1

Signal

ID Container …

S1 B1

How to explain gain: Hib/JPA deletion

- Optimized database mechanism(using Hibernate native features)

- Non-containment references automatically cleaned (or deleted)

- Must synchronize only loaded EObjects

Foreign Key

FK

Page 26: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

From benchmark to real product

• Success recipe:– Take a JPA-compliant EMF Metamodel

– Add a pinch of Texo

– Spread it on an Hibernate pastry

Page 27: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

From benchmark to real product

• Success recipe:– Take a JPA-compliant EMF Metamodel

– Add a pinch of Texo

– Spread it on an Hibernate pastry

– For a faster deletion:stuff it with a maximum of foreign keys

– Stir it with a transparent implementationof a lazy loading mechanism

– Filter the unused EObject from RAM

Page 28: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

From benchmark to real product

• Success recipe:– Take a JPA-compliant EMF Metamodel

– Add a pinch of Texo

– Spread it on an Hibernate pastry

– For a faster deletion:stuff it with a maximum of foreign keys

– Stir it with a transparent implementationof a lazy loading mechanism

– Filter the unused EObject from RAM

– Dust some query-DSL to lightensome algorithms

Page 29: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

29

Sirius

ConnectorsEMF Layer

JPA LayerQuery

API

Converter

The Result: a technical framework

Deletion Helper

Lazy Mode

Database(H2)

EObject Cache

Sharing

Page 30: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

30

Sirius

ConnectorsEMF Layer

JPA LayerQuery

API

Converter

The Result: a technical framework

Deletion Helper

Lazy Mode

Database(H2)

EObject Cache

Sharing

Page 31: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

31

Step 0: Identify your requirements regarding perf

• Consider using CDO if

– You need out-of-the-box advanced features: concurrent access, branching & merging, etc

– You don’t need extra performances

• Consider using a Hibernate/JPA-flavor solution if

– Your context allows to release some constraints on features

– Performances are never good enough…

A step by step solution to improve perf

on an existing EMF app

Page 32: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

32

Step 1: Introduce the technical framework

Cost : low

- Very low if resources management is already identified

Benefits

- Lazy loading

- Faster Deletion => reduce CPU usage

A step by step solution to improve perf

on an existing EMF app

Page 33: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

33

Step 2.1: Refactor the Meta-Model

Cost : low to medium

- If you know what you are doing/expecting

Benefits

- Unloading => reduce memory usage

- Extra-fast deletion

A step by step solution to improve perf

on an existing EMF app

Page 34: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

34

Step 2.2: Refactor algorithms & HMI

Cost : from low to high

- Requires dual expertise: Hibernate/JPA & EMF/TEXO

Benefits

- Allow creation of data at lower level

- Allow optimized queries alla SQL • with the support of higher level language Query DSL

A step by step solution to improve perf

on an existing EMF app

Page 35: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

To go further

What we can do for

- Related Technology providers:

- Publish (EPL) our benchmark challenge & framework

Propose your solution

- S/W products developers / integrators:

- Publish our solution as a ready-to-use package

Test your requirements

You are there

Contact us to go further

Page 36: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from

-1 0 +1

Sign in and vote at eclipsecon.org

Page 37: EMF Models getting XXL? An overview of available solutions · Hibernate / Java Persistence API (JPA) - Hibernate for data storage - JPA for data management (POJO) - Conversion from