Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scaling Up Hibernate/JPA Applications with Infi...
Search
Galder Zamarreño
April 20, 2013
Technology
0
210
Scaling Up Hibernate/JPA Applications with Infinispan Second-Level Cache
Galder Zamarreño
April 20, 2013
Tweet
Share
More Decks by Galder Zamarreño
See All by Galder Zamarreño
Principles and Patterns for Streaming Data Analysis
galderz
0
99
Streaming Data Analysis with Kubernetes
galderz
0
2.5k
The Rough Guide to Java RPC Frameworks
galderz
1
7k
Streaming Data Analysis with Kubernetes
galderz
1
410
Streaming Data Workshop @ Codemotion Madrid
galderz
0
1.4k
Streaming Data : ni pierdas el tren, ni esperes en balde
galderz
0
3k
Data grids : descubre qué esconden los datos
galderz
0
3.1k
Streaming Data Workhop @ Devoxx
galderz
0
360
Streaming Data Analysis with Kubernetes
galderz
0
2k
Other Decks in Technology
See All in Technology
Claude Codeを駆使した初めてのiOSアプリ開発 ~ゼロから3週間でグローバルハッカソンで入賞するまで~
oikon48
10
5.3k
React19.2のuseEffectEventを追う
maguroalternative
2
590
Digitization部 紹介資料
sansan33
PRO
1
5.6k
もう外には出ない。より快適なフルリモート環境を目指して
mottyzzz
11
8.2k
RDS の負荷が高い場合に AWS で取りうる具体策 N 連発/a-series-of-specific-countermeasures-available-on-aws-when-rds-is-under-high-load
emiki
7
4.5k
Introdução a Service Mesh usando o Istio
aeciopires
1
280
AI時代、“平均値”ではいられない
uhyo
8
2.1k
あなたの知らない Linuxカーネル脆弱性の世界
recruitengineers
PRO
3
130
ソフトウェアエンジニアの生成AI活用と、これから
lycorptech_jp
PRO
0
820
「魔法少女まどか☆マギカ Magia Exedra」の多様なバトルの開発を柔軟かつ効率的に実現するためのPure C#とUnityの分離について
gree_tech
PRO
0
240
今この時代に技術とどう向き合うべきか
gree_tech
PRO
2
2.1k
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
270
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
KATA
mclloyd
PRO
32
15k
Designing for humans not robots
tammielis
254
26k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
A Tale of Four Properties
chriscoyier
161
23k
Gamification - CAS2011
davidbonilla
81
5.5k
Navigating Team Friction
lara
190
15k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Documentation Writing (for coders)
carmenintech
75
5.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Scaling GitHub
holman
463
140k
Transcript
None
Scaling Up Hibernate/JPA Applications with Infinispan Second-Level Cache ! Galder
Zamarreño Senior Software Engineer Red Hat, Inc ! 20th April 2013, São Paulo
Galder Zamarreño • R&D Engineer, Red Hat Inc. • Infinispan
developer • Creator of Infinispan second-level cache provider for Hibernate • Escalante founder and lead • Twitter: @galderz
Agenda • Bottlenecks in Hibernate/JPA applications • Applying caching techniques
sensibly • Distribute caches across multiple nodes • Caching in managed environments
Why do we care?
DB = bottleneck Most Hibernate/JPA applications involve intensive I/O workload
against database
Bottleneck problems Bottlenecks decrease throughput, increase latency... and make users
:(((
We care because we want to make users :))
How do we scale up Hibernate/JPA applications ?
Option 1: $$$ Buy/rent more powerful hardware to host the
DB... who can afford that?
Option 2: Caching Use second-level caching sensibly to reduce burden
on database
Second Level Cache JVM-level, or clustered, cache whose contents can
be shared between different transactions
Lesson 1: Don't apply caching blindly! Always measure first!
Caching cost! Local caches have a cost (memory, GC), clustered
caches add more cost (network, IO)
Demo 1: Measure performance
Lesson 2: Think what you are going to cache!
Think about reads Biggest performance gain comes from caching read-
mostly data
What kind of data? Entities, collections of entities, and query
results can be cached
Entity caching Mark entities cacheable, and define the cache concurrency
strategy
Query caching Speed up execution of repeated queries (w/ same
parameters) by caching their results
Query results validity Cached query results are valid as long
as none of the entity types involved are updated
Demo 2: Query cache in action
Lesson 3: How to select a caching provider
Cache Strategies • Read-only • data never updated • insert/delete
allowed • Read/write • data can be updated • with JBDC transactions or no transactions
Cache Strategies • Nonstrict read/write • data rarely updated •
with JBDC transactions or no transactions • Transactional • data can be updated • for JTA environments
Strategy Support Provider / Strategy read- only nonstrict r/w r/w
transactional Infinispan yes no no yes EhCache yes yes yes yes ConcurretHashMap (testing) yes yes yes no
Lesson 4: Scale up your Hibernate/JPA app going multi-node!
Caches form cluster Infinispan uses JGroups to form a peer-to-peer
cluster, providing discovery, failure detection...etc
Clustered Entities Recommended using invalidation to keep entities consistent accross
cluster (replication can be used too)
Queries / Timestamps Recommended keeping query cache local to each
node, but must replicate update timestamps cache
Demo 3: Clustered second-level cache in action!
Lesson 5: Scaling up JPA in managed environments
JPA Caching simplified Infinispan as default cache provider (with sensible
defaults), and ready to cluster!
shared-cache-mode Persistence unit configuration option that should be set to
ENABLE_SELECTIVE
Demo 4: JPA caching in JBoss AS 7
Summary Q - How do we scale up Hibernate/JPA applications?
Enable second level cache!!
Summary • Don't apply caching blindly! Always measure first! •
Think what you are going to cache! • How to select a caching provider • Scale up your app going multi-node! • Scaling up JPA in managed environments
Questions • http://infinispan.org • http://hibernate.org • http://github.com/galderz/secondlc • https://docs.jboss.org/author/display/ ISPN/Using+Infinispan+as+JPA-Hibernate
+Second+Level+Cache+Provider