SlideShare a Scribd company logo
1 of 24
Download to read offline
PrefetchML: a Framework for
Prefetching and Caching Models
Jordi Cabot
ICREA-UOC
jordi.cabot@icrea.cat
Gwendal Daniel
Inria - Mines Nantes & Lina
gwendal.daniel@inria.fr
Gerson Sunyé
Inria - Mines Nantes & Lina
gerson.sunye@inria.fr
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 2
Introduction
● Prefetching
– Bring objects into memory before they are requested
● Caching
– Retain objects in memory to speed-up their access
● Integrated in databases and file systems
– Speeds-up I/O intensive applications
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 3
Introduction
● Database prefetchers & caches
– Lack of fine-grained configuration
● Elements to load
● Usage scenario
– Tightly coupled to data representation
● Low level of abstraction
● Not reusable
– Not a common in NoSQL stores
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 4
Introduction
● We need to prefetch and cache models
– Scalable Persistence Frameworks
● Databases to store large models (relational, NoSQL, ...)
● Latencies to bring elements from the database
● I/O intensive
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 5
Introduction
● We need to prefetch and cache models
– Metamodel informations
● High-level prefetching rules
● Decoupled from data representation
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 6
PrefetchML
● A prefetching and caching framework at the model level
PrefetchML DSL
PrefetchML Engine
– Metamodel and model level
– Use case dependent
– Readable
– Datastore-independent
– Transparent for the persistence solution
rule definition
rule execution
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 7
PrefetchML DSL
● Define prefetching and caching rules grouped in plans
● Event-based language
– Model loading
– Element access, update, deletion
– OCL guards
● OCL loading instructions
● Cache management
– Define cache policy
– Remove cached elements
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 8
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
rule r1: on starting
fetch Package.allInstances()
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 9
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 10
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 11
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration (self.name = 'MyClass')
fetch self.bodyDeclarations.modifier
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 12
PrefetchML DSL
import ''http://www.example.com/Java''
plan samplePlan {
use cache LRU[size=100, chunk=10]
rule r1: on starting
fetch Package.allInstances()
rule r2: on access type ClassDeclaration (self.name = 'MyClass')
fetch self.bodyDeclarations.modifier
remove type Package
}
Package
+ name : String
ClassDeclaration
+ name : String
BodyDeclaration
+ name : String
Modifier
+ kind : VisibilityKind
*
1
ownedElements
*
bodyDeclarations
modifier
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 13
PrefetchML Engine
● Rule execution engine
● Executes loading instructions
● Captures events
● Transparent to the modeling framework
● Database independent
– Specialized connectors
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 14
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 15
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 16
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 17
PrefetchML Engine
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 18
Tooling
● PrefetchML Editor
– XText editor
– Navigation hints
– Rule validation
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 19
Tooling
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 20
Evaluation
Q1 Q2 Q3
0
2
4
6
8
10
12
14
16
18
No Pref.
EMF Pref.
NeoEMF Pref.
ExecutionTime(s)
Q1 Q2 Q3
0
1
2
3
4
5
6
7
8
9
ExecutionTime(s)
● Model containing 2 million elements
● MDT OCL over NeoEMF/Graph
Cold Execution (empty cache) Warmed Execution
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 21
Conclusion
● Model-level prefetching & caching framework
● PrefetchML DSL: defines prefetching and caching rules at
a high level of abstraction
● PrefetchML Engine: captures events, trigger rules, cache
model elements
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 22
Conclusion
● Future work
– Automatic generation of PrefetchML plans
● ATL transformations
● Code analysis
– Dynamic discovery of frequent access patterns
● Log mining
● Switch on/off plans when needed
● Add/remove rules at runtime
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 23
Questions?
Websites / Repositories
PrefetchML: https://github.com/atlanmod/Prefetching_Caching_DSL
NeoEMF: neoemf.com
https://github.com/atlanmod
Thank you for your attention!
https://github.com/SOM-Research
07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 24
PrefetchML Engine

More Related Content

Similar to PrefetchML: a Framework for Prefetching and Caching Models

ckan 2.0 Introduction (20140618 updated)
ckan 2.0 Introduction (20140618 updated)ckan 2.0 Introduction (20140618 updated)
ckan 2.0 Introduction (20140618 updated)
Chengjen Lee
 
Rook: Storage for Containers in Containers – data://disrupted® 2020
Rook: Storage for Containers in Containers  – data://disrupted® 2020Rook: Storage for Containers in Containers  – data://disrupted® 2020
Rook: Storage for Containers in Containers – data://disrupted® 2020
data://disrupted®
 
Slides semantic web and Drupal 7 NYCCamp 2012
Slides semantic web and Drupal 7 NYCCamp 2012Slides semantic web and Drupal 7 NYCCamp 2012
Slides semantic web and Drupal 7 NYCCamp 2012
scorlosquet
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
Angela Byron
 

Similar to PrefetchML: a Framework for Prefetching and Caching Models (20)

ckan 2.0 Introduction (20140618 updated)
ckan 2.0 Introduction (20140618 updated)ckan 2.0 Introduction (20140618 updated)
ckan 2.0 Introduction (20140618 updated)
 
apidays Paris 2022 - Of graphQL, DX friction, and surgical monolithectomy, Fr...
apidays Paris 2022 - Of graphQL, DX friction, and surgical monolithectomy, Fr...apidays Paris 2022 - Of graphQL, DX friction, and surgical monolithectomy, Fr...
apidays Paris 2022 - Of graphQL, DX friction, and surgical monolithectomy, Fr...
 
QConSP 2018 - Java Module System
QConSP 2018 - Java Module SystemQConSP 2018 - Java Module System
QConSP 2018 - Java Module System
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practices
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practices
 
Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019Greenplum for Kubernetes - Greenplum Summit 2019
Greenplum for Kubernetes - Greenplum Summit 2019
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
Rook: Storage for Containers in Containers – data://disrupted® 2020
Rook: Storage for Containers in Containers  – data://disrupted® 2020Rook: Storage for Containers in Containers  – data://disrupted® 2020
Rook: Storage for Containers in Containers – data://disrupted® 2020
 
Decoupled drupal DcRuhr
Decoupled drupal DcRuhrDecoupled drupal DcRuhr
Decoupled drupal DcRuhr
 
Java 9 Features
Java 9 FeaturesJava 9 Features
Java 9 Features
 
Drupal 8: frontend development
Drupal 8: frontend developmentDrupal 8: frontend development
Drupal 8: frontend development
 
Slides semantic web and Drupal 7 NYCCamp 2012
Slides semantic web and Drupal 7 NYCCamp 2012Slides semantic web and Drupal 7 NYCCamp 2012
Slides semantic web and Drupal 7 NYCCamp 2012
 
Scaling PHP apps
Scaling PHP appsScaling PHP apps
Scaling PHP apps
 
Django Rest Framework - tips & trick
Django Rest Framework - tips & trick Django Rest Framework - tips & trick
Django Rest Framework - tips & trick
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
 
Automating Drupal Development with Patterns: introducing 7.x-2.x
Automating Drupal Development with Patterns: introducing 7.x-2.xAutomating Drupal Development with Patterns: introducing 7.x-2.x
Automating Drupal Development with Patterns: introducing 7.x-2.x
 
StorPool Presents at Cloud Field Day 9
StorPool Presents at Cloud Field Day 9StorPool Presents at Cloud Field Day 9
StorPool Presents at Cloud Field Day 9
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
 
Spark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production usersSpark Summit EU 2015: Lessons from 300+ production users
Spark Summit EU 2015: Lessons from 300+ production users
 

Recently uploaded

Recently uploaded (10)

ACM CHT Best Inspection Practices Kinben Innovation MIC Slideshare.pdf
ACM CHT Best Inspection Practices Kinben Innovation MIC Slideshare.pdfACM CHT Best Inspection Practices Kinben Innovation MIC Slideshare.pdf
ACM CHT Best Inspection Practices Kinben Innovation MIC Slideshare.pdf
 
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdfOracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
Oracle Database Administration I (1Z0-082) Exam Dumps 2024.pdf
 
DAY 0 8 A Revelation 05-19-2024 PPT.pptx
DAY 0 8 A Revelation 05-19-2024 PPT.pptxDAY 0 8 A Revelation 05-19-2024 PPT.pptx
DAY 0 8 A Revelation 05-19-2024 PPT.pptx
 
The Influence and Evolution of Mogul Press in Contemporary Public Relations.docx
The Influence and Evolution of Mogul Press in Contemporary Public Relations.docxThe Influence and Evolution of Mogul Press in Contemporary Public Relations.docx
The Influence and Evolution of Mogul Press in Contemporary Public Relations.docx
 
Microsoft Fabric Analytics Engineer (DP-600) Exam Dumps 2024.pdf
Microsoft Fabric Analytics Engineer (DP-600) Exam Dumps 2024.pdfMicrosoft Fabric Analytics Engineer (DP-600) Exam Dumps 2024.pdf
Microsoft Fabric Analytics Engineer (DP-600) Exam Dumps 2024.pdf
 
OC Streetcar Final Presentation-Downtown Santa Ana
OC Streetcar Final Presentation-Downtown Santa AnaOC Streetcar Final Presentation-Downtown Santa Ana
OC Streetcar Final Presentation-Downtown Santa Ana
 
Understanding Poverty: A Community Questionnaire
Understanding Poverty: A Community QuestionnaireUnderstanding Poverty: A Community Questionnaire
Understanding Poverty: A Community Questionnaire
 
Deciding The Topic of our Magazine.pptx.
Deciding The Topic of our Magazine.pptx.Deciding The Topic of our Magazine.pptx.
Deciding The Topic of our Magazine.pptx.
 
Breathing in New Life_ Part 3 05 22 2024.pptx
Breathing in New Life_ Part 3 05 22 2024.pptxBreathing in New Life_ Part 3 05 22 2024.pptx
Breathing in New Life_ Part 3 05 22 2024.pptx
 
ServiceNow CIS-Discovery Exam Dumps 2024
ServiceNow CIS-Discovery Exam Dumps 2024ServiceNow CIS-Discovery Exam Dumps 2024
ServiceNow CIS-Discovery Exam Dumps 2024
 

PrefetchML: a Framework for Prefetching and Caching Models

  • 1. PrefetchML: a Framework for Prefetching and Caching Models Jordi Cabot ICREA-UOC jordi.cabot@icrea.cat Gwendal Daniel Inria - Mines Nantes & Lina gwendal.daniel@inria.fr Gerson Sunyé Inria - Mines Nantes & Lina gerson.sunye@inria.fr
  • 2. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 2 Introduction ● Prefetching – Bring objects into memory before they are requested ● Caching – Retain objects in memory to speed-up their access ● Integrated in databases and file systems – Speeds-up I/O intensive applications
  • 3. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 3 Introduction ● Database prefetchers & caches – Lack of fine-grained configuration ● Elements to load ● Usage scenario – Tightly coupled to data representation ● Low level of abstraction ● Not reusable – Not a common in NoSQL stores
  • 4. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 4 Introduction ● We need to prefetch and cache models – Scalable Persistence Frameworks ● Databases to store large models (relational, NoSQL, ...) ● Latencies to bring elements from the database ● I/O intensive
  • 5. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 5 Introduction ● We need to prefetch and cache models – Metamodel informations ● High-level prefetching rules ● Decoupled from data representation
  • 6. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 6 PrefetchML ● A prefetching and caching framework at the model level PrefetchML DSL PrefetchML Engine – Metamodel and model level – Use case dependent – Readable – Datastore-independent – Transparent for the persistence solution rule definition rule execution
  • 7. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 7 PrefetchML DSL ● Define prefetching and caching rules grouped in plans ● Event-based language – Model loading – Element access, update, deletion – OCL guards ● OCL loading instructions ● Cache management – Define cache policy – Remove cached elements
  • 8. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 8 PrefetchML DSL import ''http://www.example.com/Java'' plan samplePlan { rule r1: on starting fetch Package.allInstances() } Package + name : String ClassDeclaration + name : String BodyDeclaration + name : String Modifier + kind : VisibilityKind * 1 ownedElements * bodyDeclarations modifier
  • 9. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 9 PrefetchML DSL import ''http://www.example.com/Java'' plan samplePlan { rule r1: on starting fetch Package.allInstances() rule r2: on access type ClassDeclaration fetch self.bodyDeclarations.modifier } Package + name : String ClassDeclaration + name : String BodyDeclaration + name : String Modifier + kind : VisibilityKind * 1 ownedElements * bodyDeclarations modifier
  • 10. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 10 PrefetchML DSL import ''http://www.example.com/Java'' plan samplePlan { use cache LRU[size=100, chunk=10] rule r1: on starting fetch Package.allInstances() rule r2: on access type ClassDeclaration fetch self.bodyDeclarations.modifier } Package + name : String ClassDeclaration + name : String BodyDeclaration + name : String Modifier + kind : VisibilityKind * 1 ownedElements * bodyDeclarations modifier
  • 11. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 11 PrefetchML DSL import ''http://www.example.com/Java'' plan samplePlan { use cache LRU[size=100, chunk=10] rule r1: on starting fetch Package.allInstances() rule r2: on access type ClassDeclaration (self.name = 'MyClass') fetch self.bodyDeclarations.modifier } Package + name : String ClassDeclaration + name : String BodyDeclaration + name : String Modifier + kind : VisibilityKind * 1 ownedElements * bodyDeclarations modifier
  • 12. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 12 PrefetchML DSL import ''http://www.example.com/Java'' plan samplePlan { use cache LRU[size=100, chunk=10] rule r1: on starting fetch Package.allInstances() rule r2: on access type ClassDeclaration (self.name = 'MyClass') fetch self.bodyDeclarations.modifier remove type Package } Package + name : String ClassDeclaration + name : String BodyDeclaration + name : String Modifier + kind : VisibilityKind * 1 ownedElements * bodyDeclarations modifier
  • 13. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 13 PrefetchML Engine ● Rule execution engine ● Executes loading instructions ● Captures events ● Transparent to the modeling framework ● Database independent – Specialized connectors
  • 14. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 14 PrefetchML Engine
  • 15. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 15 PrefetchML Engine
  • 16. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 16 PrefetchML Engine
  • 17. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 17 PrefetchML Engine
  • 18. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 18 Tooling ● PrefetchML Editor – XText editor – Navigation hints – Rule validation
  • 19. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 19 Tooling
  • 20. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 20 Evaluation Q1 Q2 Q3 0 2 4 6 8 10 12 14 16 18 No Pref. EMF Pref. NeoEMF Pref. ExecutionTime(s) Q1 Q2 Q3 0 1 2 3 4 5 6 7 8 9 ExecutionTime(s) ● Model containing 2 million elements ● MDT OCL over NeoEMF/Graph Cold Execution (empty cache) Warmed Execution
  • 21. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 21 Conclusion ● Model-level prefetching & caching framework ● PrefetchML DSL: defines prefetching and caching rules at a high level of abstraction ● PrefetchML Engine: captures events, trigger rules, cache model elements
  • 22. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 22 Conclusion ● Future work – Automatic generation of PrefetchML plans ● ATL transformations ● Code analysis – Dynamic discovery of frequent access patterns ● Log mining ● Switch on/off plans when needed ● Add/remove rules at runtime
  • 23. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 23 Questions? Websites / Repositories PrefetchML: https://github.com/atlanmod/Prefetching_Caching_DSL NeoEMF: neoemf.com https://github.com/atlanmod Thank you for your attention! https://github.com/SOM-Research
  • 24. 07/10/2016 PrefetchML: a Framework for Prefetching and Caching Models - G. Daniel 24 PrefetchML Engine