SlideShare a Scribd company logo
Apache Jackrabbit Oak on MongoDB 
Marcel Reutegger | Senior Software Engineer 
© 2014 Adobe Systems Incorporated. All Rights Reserved.
Apache Jackrabbit Oak 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
2 
About me 
Software Engineer 
At Day/Adobe since 2002 
JCR API Specification 
Apache member 
Apache Jackrabbit / Oak
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
3
Adobe Experience Manager 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
4
Adobe Experience Manager – Technology Stack 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
5 
OSGi Container 
Web Framework 
Java Content Repository
Adobe Experience Manager – Technology Stack 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
6 
OSGi Container 
Web Framework 
Java Content Repository
Adobe Experience Manager – Technology Stack 
Java Content Repository / Apache Jackrabbit Oak 
Tar MongoDB RDBMS 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
7 
.tar
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
8
Java Content Repository – Why? 
“Build me a web content management system!” 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
9 
Apache 
PHP 
Developer happiness 
Easy: LAMP stack 
Linux 
MySQL 
Done in 2 weeks
Java Content Repository – Why? 
Build me a web content management system! 
“Nice, but I want to organize my pages in a hierarchy.” 
Apply a well known hierarchical database model 
and update the application. 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
10 
Developer happiness 
Done in 4 weeks
Java Content Repository – Why? 
Nice, but I want to organize my pages in a hierarchy. 
“Can you please add structured and fulltext searches?” 
Integrate with Apache Solr or Elasticsearch 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Done in 4 weeks 
11 
Developer happiness
Java Content Repository – Why? 
Can you please add structured and fulltext searches? 
“I accidentally deleted the product page. 
We need to version our content.” 
Introduce new tables and rewrite the application. 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Done in 8 weeks 
12 
Developer happiness
Java Content Repository – Why? 
“I accidentally deleted the product page. 
We need to version our content.” 
“We cannot publish financial results, unless the system 
has fine grained access control.” 
Introduce more tables and 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
integrate with a directory server. 
I’ll get back to you 
13 
next year! 
Developer happiness
Java Content Repository – Features 
JSR-283 – JCR 2.0 released 2009 
Hierarchical - Structured and binary data 
Query – SQL, XPath and Java language binding 
Access Control on Node and Property level 
Versioning – Modeled after WebDAV DeltaV (RFC 3253) 
Locking – Shallow or deep 
Asynchronous Observation 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
14
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
15
Apache Jackrabbit Oak – Design 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
16 
Cacheable 
Customizable 
Scalable Support NoSQL Storage 
Support Sharding
Apache Jackrabbit Oak – Design 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
17 
Cacheable 
Customizable 
Scalable 
Pluggable Storage 
Custom Index Definitions
Apache Jackrabbit Oak – Design 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
18 
Cacheable 
Customizable 
Scalable 
Copy-On-Write 
Multiversion Concurrency 
Content Addressable Storage
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
19
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
20 
Rev 1 
/ 
/a /b 
/a/1 /a/2 /b/1
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
/a /b 
/a/1 /a/2 /b/1 /b/2 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
21 
Rev 1 
/ 
new
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
Rev 2 
/a /b 
/a/1 /a/2 /b/1 /b/2 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
22 
Rev 1 
/b' 
/ /' 
copy parents
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
Rev 2 
/a /b 
/a/1 /a/2 /b/1 /b/2 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
23 
Rev 1 
/b' 
/ /' 
concurrent access 
to Rev 1 and Rev 2
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
collect garbage Rev 2 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
24 
/a 
/b' 
/' 
/a/1 /a/2 /b/1 /b/2
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
/a /b' 
/a/1 /a/2 /b/1 /b/2 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
25 
Rev 2 
/' 
compact
Apache Jackrabbit Oak – MVCC & Copy-On-Write 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
26 
⊕ 
⊖ 
Stable snapshot view of data 
Writes do not block reads 
Higher storage cost 
Garbage collection
Apache Jackrabbit Oak – The Data Model 
{! 
_id : “/home/john”,! 
name : “john”,! 
email : “john@example.com”! 
}! 
{! 
_id : “2:/home/john”,! 
name : { “r14979e4b424-0-1” : “john” },! 
email : { “r14979e4b424-0-1” : “john@example.com” },! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_revisions : { “r14979e4b424-0-1” : “c” }! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
27
Apache Jackrabbit Oak – The Data Model 
{! 
_id : “2:/home/john”,! 
name : { “r14979e4b424-0-1” : “john” },! 
email : { “r14979e4b424-0-1” : “john@example.com” },! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_revisions : { “r14979e4b424-0-1” : “c” }! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
28
Apache Jackrabbit Oak – The Data Model 
{! 
_id : “2:/home/john”,! 
name : { “r14979e4b424-0-1” : “john” },! 
email : { “r14979e4b424-0-1” : “john@example.com” },! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_revisions : { “r14979e4b424-0-1” : “c” }! 
}! 
Timestamp Counter Cluster ID 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
29
Apache Jackrabbit Oak – The Data Model 
{! 
_id : “2:/home/john”,! 
name : { “r14979e4b424-0-1” : “john” },! 
email : {! 
“r14979e4b424-0-1” : “john@example.com”,! 
“r14979e6a941-0-1” : “john.doe@example.com”! 
},! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_revisions : {! 
“r14979e4b424-0-1” : “c”,! 
“r14979e6a941-0-1” : “c”! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
30 
}! 
}! 
Change email to “john.doe@example.com”
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
31
Apache Jackrabbit Oak – Transactions 
{! 
_id : “2:/home/john”,! 
name : { “r14979e4b424-0-1” : “john” },! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_commitRoot : { “r14979e4b424-0-1” : “1” }! 
}! 
{! 
_id : “3:/home/john/profile”,! 
avatar : { “r14979e4b424-0-1” : <bin> },! 
_deleted : { “r14979e4b424-0-1” : “false” },! 
_commitRoot : { “r14979e4b424-0-1” : “1” }! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
32
Apache Jackrabbit Oak – Transactions 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
33 
},! 
false” },! 
1” }! 
},! 
false” },! 
1” }! 
{! 
_id : “1:/home”,! 
_deleted : { “r14979e1b312-0-1” : “false” },! 
_revisions : {! 
“r14979e1b312-0-1” : “c”,! 
“r14979e4b424-0-1” : “c”! 
}! 
}! 
Conditional update for commit: 
{! 
_id : “1:/home”, ! 
“_collisions.r14979e4b424-0-1” : { $exists : false }! 
}!
Apache Jackrabbit Oak – Transactions 
{! 
_id : “3:/home/john/profile”,! 
avatar : {! 
“r14979e4b424-0-1” : <bin>! 
},! 
_deleted : {! 
“r14979e4b424-0-1” : “false”! 
},! 
_commitRoot : {! 
“r14979e4b424-0-1” : “1” ! 
}! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
34
Apache Jackrabbit Oak – Transactions 
{! 
_id : “3:/home/john/profile”,! 
avatar : {! 
“r14979e4b424-0-1” : <bin>,! 
“r14979e6c7a2-0-1” : <bin>! 
},! 
_deleted : {! 
“r14979e4b424-0-1” : “false”! 
},! 
_commitRoot : {! 
“r14979e4b424-0-1” : “1”,! 
“r14979e6c7a2-0-1” : “1” ! 
}! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
35 
T-1
Apache Jackrabbit Oak – Transactions 
{! 
_id : “3:/home/john/profile”,! 
avatar : {! 
“r14979e4b424-0-1” : <bin>,! 
“r14979e6c7a2-0-1” : <bin>,! 
“r14979e6c7a3-0-1” : <bin>! 
},! 
_deleted : {! 
“r14979e4b424-0-1” : “false”! 
},! 
_commitRoot : {! 
“r14979e4b424-0-1” : “1”,! 
“r14979e6c7a2-0-1” : “1”,! 
“r14979e6c7a3-0-1” : “1”! 
}! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
36 
T-1 T-2
Apache Jackrabbit Oak – Transactions 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
37 
{! 
_id : “1:/home”,! 
_deleted : { ! 
“r14979e1b312-0-1” : “false”! 
},! 
_revisions : {! 
“r14979e1b312-0-1” : “c”! 
},! 
_collisions : {! 
“r14979e6c7a2-0-1” : “true”! 
}! 
}! 
T-2 
Conditional update for collision marker: 
{! 
_id : “1:/home”, ! 
“_revisions.r14979e6c7a2-0-1” : { $exists : false }! 
}!
Apache Jackrabbit Oak – Transactions 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
38 
{! 
_id : “1:/home”,! 
_deleted : { ! 
“r14979e1b312-0-1” : “false”! 
},! 
_revisions : {! 
“r14979e1b312-0-1” : “c”! 
},! 
_collisions : {! 
“r14979e6c7a2-0-1” : “true”! 
}! 
}! 
T-2 
T-1 
✗ 
Conditional update for commit: 
{! 
_id : “1:/home”, ! 
“_collisions.r14979e6c7a2-0-1” : { $exists : false }! 
}!
Apache Jackrabbit Oak – Transactions 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
39 
{! 
_id : “1:/home”,! 
_deleted : { ! 
“r14979e1b312-0-1” : “false”! 
},! 
_revisions : {! 
“r14979e1b312-0-1” : “c”,! 
“r14979e6c7a3-0-1” : “c”! 
},! 
_collisions : {! 
“r14979e6c7a2-0-1” : “true”! 
}! 
}! 
T-1 T-2 
✗ 
{! 
_id : “1:/home”, ! 
“_collisions.r14979e6c7a3-0-1” : { $exists : false }! 
}!
Apache Jackrabbit Oak – Transactions 
{! 
_id : “3:/home/john/profile”,! 
avatar : {! 
“r14979e4b424-0-1” : <bin>,! 
“r14979e6c7a2-0-1” : <bin>,! 
“r14979e6c7a3-0-1” : <bin>! 
},! 
_deleted : {! 
“r14979e4b424-0-1” : “false”! 
},! 
_commitRoot : {! 
“r14979e4b424-0-1” : “1”,! 
“r14979e6c7a2-0-1” : “1”,! 
“r14979e6c7a3-0-1” : “1”! 
}! 
}! 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
40 
T-1
Contents 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
41
Apache Jackrabbit Oak – Content Addressable Storage 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
42 
GridFS 
file chunk 0 
chunk 1 
… 
chunk N
Apache Jackrabbit Oak – Content Addressable Storage 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
43 
Oak 
Node Storage Binary Storage 
Binary 
Chunk 
0x38a7 
Chunk 
0xc92a 
Chunk 
0x8f91
Apache Jackrabbit Oak – Content Addressable Storage 
Binary 0x38a7 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
44 
Oak 
0x38a7 
Chunk 
0x38a7 
Chunk 
0xc92a 
Binary Storage 
Chunk 
0x8f91 
Hash: 
Node Storage
Apache Jackrabbit Oak – Content Addressable Storage 
Binary 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
45 
Oak 
0x8f91 
Chunk 
0x38a7 
Chunk 
0xc92a 
Binary Storage 
Chunk 
0x8f91 
Hash: 
0x38a7 0x8f91 
Node Storage
Apache Jackrabbit Oak – Content Addressable Storage 
Binary 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
46 
Oak 
0x52f1 
Chunk 
0x38a7 
Chunk 
0xc92a 
Binary Storage 
Chunk 
0x8f91 
Hash: 
0x38a7 0x8f91 
0x52f1 
Chunk 
0x52f1 
Node Storage
Apache Jackrabbit Oak – Content Addressable Storage 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
47 
Oak 
Chunk 
0x38a7 
Chunk 
0xc92a 
Binary Storage 
Chunk 
0x8f91 
Chunk 
0x52f1 
Node Storage 
0x38a7 0x8f91 0x52f1
Apache Jackrabbit Oak – Content Addressable Storage 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
48 
⊕ 
⊖ 
De-duplication on chunk level 
Chunks are immutable 
Shared Storage 
Garbage collection
Summary 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 
Adobe Experience Manager 
Java Content Repository 
Apache Jackrabbit Oak 
Multiversion Concurrency Control 
Transactions 
Content Addressable Storage 
Q & A 
49
Q & A 
© 2014 Adobe Systems Incorporated. All Rights Reserved. 50
© 2014 Adobe Systems Incorporated. All Rights Reserved.

More Related Content

What's hot (20)

PDF
Oracle Active Data Guard: Best Practices and New Features Deep Dive
Glen Hawkins
 
PPTX
Getting started with postgresql
botsplash.com
 
PPTX
Sizing MongoDB Clusters
MongoDB
 
KEY
Introduction to memcached
Jurriaan Persyn
 
KEY
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Kevin Weil
 
PDF
Oracle db performance tuning
Simon Huang
 
PPTX
Mongodb vs mysql
hemal sharma
 
PDF
MongoDB Administration 101
MongoDB
 
PDF
HBase Advanced - Lars George
JAX London
 
PDF
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
PDF
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
Databricks
 
PDF
Improving Apache Spark Downscaling
Databricks
 
PDF
Parquet Strata/Hadoop World, New York 2013
Julien Le Dem
 
PPTX
Oracle sql high performance tuning
Guy Harrison
 
PDF
Oracle 12c PDB insights
Kirill Loifman
 
PPTX
Hive + Tez: A Performance Deep Dive
DataWorks Summit
 
PPTX
Unique ID generation in distributed systems
Dave Gardner
 
PDF
What is new in Apache Hive 3.0?
DataWorks Summit
 
PDF
Intro to HBase
alexbaranau
 
PDF
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
Sandesh Rao
 
Oracle Active Data Guard: Best Practices and New Features Deep Dive
Glen Hawkins
 
Getting started with postgresql
botsplash.com
 
Sizing MongoDB Clusters
MongoDB
 
Introduction to memcached
Jurriaan Persyn
 
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Kevin Weil
 
Oracle db performance tuning
Simon Huang
 
Mongodb vs mysql
hemal sharma
 
MongoDB Administration 101
MongoDB
 
HBase Advanced - Lars George
JAX London
 
Understanding oracle rac internals part 1 - slides
Mohamed Farouk
 
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
Databricks
 
Improving Apache Spark Downscaling
Databricks
 
Parquet Strata/Hadoop World, New York 2013
Julien Le Dem
 
Oracle sql high performance tuning
Guy Harrison
 
Oracle 12c PDB insights
Kirill Loifman
 
Hive + Tez: A Performance Deep Dive
DataWorks Summit
 
Unique ID generation in distributed systems
Dave Gardner
 
What is new in Apache Hive 3.0?
DataWorks Summit
 
Intro to HBase
alexbaranau
 
15 Troubleshooting Tips and Tricks for database 21c - OGBEMEA KSAOUG
Sandesh Rao
 

Viewers also liked (20)

PPTX
The new repository in AEM 6
Jukka Zitting
 
PPT
Content Storage With Apache Jackrabbit
Jukka Zitting
 
PDF
Apache Jackrabbit Oak - Scale your content repository to the cloud
Robert Munteanu
 
PPTX
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
MongoDB
 
PPTX
Into the TarPit: A TarMK Deep Dive
Michael Dürig
 
PPTX
New Repository in AEM 6 by Michael Marth
AEM HUB
 
PPTX
/path/to/content - the Apache Jackrabbit content repository
Jukka Zitting
 
PPTX
The architecture of oak
Michael Dürig
 
PPTX
Adobe Meetup AEM Architecture Sydney 2015
Michael Henderson
 
PDF
JCR, Sling or AEM? Which API should I use and when?
connectwebex
 
PDF
The Zero Bullshit Architecture
Lars Trieloff
 
PDF
Microservices Architecture for AEM
Maciej Majchrzak
 
PDF
AEM Best Practices for Component Development
Gabriel Walt
 
PPTX
Apache development with GitHub and Travis CI
Jukka Zitting
 
PPT
Content Management With Apache Jackrabbit
Jukka Zitting
 
PDF
Efficient content structures and queries in CRX/CQ
connectwebex
 
PDF
CMIS Apache Jackrabbit Sandbox
David Nuescheler
 
PDF
Scaling search in Oak with Solr
Tommaso Teofili
 
PPTX
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
MongoDB
 
PDF
Apache Jackrabbit
elliando dias
 
The new repository in AEM 6
Jukka Zitting
 
Content Storage With Apache Jackrabbit
Jukka Zitting
 
Apache Jackrabbit Oak - Scale your content repository to the cloud
Robert Munteanu
 
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
MongoDB
 
Into the TarPit: A TarMK Deep Dive
Michael Dürig
 
New Repository in AEM 6 by Michael Marth
AEM HUB
 
/path/to/content - the Apache Jackrabbit content repository
Jukka Zitting
 
The architecture of oak
Michael Dürig
 
Adobe Meetup AEM Architecture Sydney 2015
Michael Henderson
 
JCR, Sling or AEM? Which API should I use and when?
connectwebex
 
The Zero Bullshit Architecture
Lars Trieloff
 
Microservices Architecture for AEM
Maciej Majchrzak
 
AEM Best Practices for Component Development
Gabriel Walt
 
Apache development with GitHub and Travis CI
Jukka Zitting
 
Content Management With Apache Jackrabbit
Jukka Zitting
 
Efficient content structures and queries in CRX/CQ
connectwebex
 
CMIS Apache Jackrabbit Sandbox
David Nuescheler
 
Scaling search in Oak with Solr
Tommaso Teofili
 
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
MongoDB
 
Apache Jackrabbit
elliando dias
 
Ad

Similar to Apache Jackrabbit Oak on MongoDB (20)

PDF
Building Content Applications with JCR and OSGi
Cédric Hüsler
 
PDF
Crx 2.2 Deep-Dive
Gabriel Walt
 
PDF
Development without Constraint
Chad Davis
 
PDF
drop_acid_pycon_2009
Hiroshi Ono
 
PDF
Spring Roo 1.0.0 Technical Deep Dive
Ben Alex
 
PDF
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.
WO Community
 
PPTX
Melbourne User Group OAK and MongoDB
Yuval Ararat
 
PDF
862
day
 
PPTX
[Mas 500] Software Development Strategies
rahulbot
 
PDF
Open Source Secret Sauce - Lugor Sep 2011
Ted Husted
 
PDF
Adapt to2012 oak - the new repository
michid
 
PDF
Fixing twitter
Roger Xia
 
PDF
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
smallerror
 
PDF
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
xlight
 
PDF
Fixing_Twitter
liujianrong
 
PDF
FishEye - Source Code Explore and more - Brief
Ellen Feaheny
 
PDF
Introduction To Spring Roo 1.0.0
Ben Alex
 
ODP
Large scale crawling with Apache Nutch
Julien Nioche
 
PDF
A JCR View of the World - adaptTo() 2012 Berlin
Alexander Klimetschek
 
PDF
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Marcel Bruch
 
Building Content Applications with JCR and OSGi
Cédric Hüsler
 
Crx 2.2 Deep-Dive
Gabriel Walt
 
Development without Constraint
Chad Davis
 
drop_acid_pycon_2009
Hiroshi Ono
 
Spring Roo 1.0.0 Technical Deep Dive
Ben Alex
 
Beyond Fluffy Bunny. How I leveraged WebObjects in my lean startup.
WO Community
 
Melbourne User Group OAK and MongoDB
Yuval Ararat
 
862
day
 
[Mas 500] Software Development Strategies
rahulbot
 
Open Source Secret Sauce - Lugor Sep 2011
Ted Husted
 
Adapt to2012 oak - the new repository
michid
 
Fixing twitter
Roger Xia
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
smallerror
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
xlight
 
Fixing_Twitter
liujianrong
 
FishEye - Source Code Explore and more - Brief
Ellen Feaheny
 
Introduction To Spring Roo 1.0.0
Ben Alex
 
Large scale crawling with Apache Nutch
Julien Nioche
 
A JCR View of the World - adaptTo() 2012 Berlin
Alexander Klimetschek
 
Being Amazon for Software Developers - IDE 2.0: Crowdsourcing mal anders #Jav...
Marcel Bruch
 
Ad

More from MongoDB (20)

PDF
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
PDF
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
PDF
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
PDF
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
PDF
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
PDF
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
PDF
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
PDF
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
PDF
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
PDF
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
PDF
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
PDF
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 
MongoDB SoCal 2020: Migrate Anything* to MongoDB Atlas
MongoDB
 
MongoDB SoCal 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB SoCal 2020: Using MongoDB Services in Kubernetes: Any Platform, Devel...
MongoDB
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB
 
MongoDB SoCal 2020: From Pharmacist to Analyst: Leveraging MongoDB for Real-T...
MongoDB
 
MongoDB SoCal 2020: Best Practices for Working with IoT and Time-series Data
MongoDB
 
MongoDB SoCal 2020: MongoDB Atlas Jump Start
MongoDB
 
MongoDB .local San Francisco 2020: Powering the new age data demands [Infosys]
MongoDB
 
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2
MongoDB
 
MongoDB .local San Francisco 2020: Using MongoDB Services in Kubernetes: any ...
MongoDB
 
MongoDB .local San Francisco 2020: Go on a Data Safari with MongoDB Charts!
MongoDB
 
MongoDB .local San Francisco 2020: From SQL to NoSQL -- Changing Your Mindset
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Jumpstart
MongoDB
 
MongoDB .local San Francisco 2020: Tips and Tricks++ for Querying and Indexin...
MongoDB
 
MongoDB .local San Francisco 2020: Aggregation Pipeline Power++
MongoDB
 
MongoDB .local San Francisco 2020: A Complete Methodology of Data Modeling fo...
MongoDB
 
MongoDB .local San Francisco 2020: MongoDB Atlas Data Lake Technical Deep Dive
MongoDB
 
MongoDB .local San Francisco 2020: Developing Alexa Skills with MongoDB & Golang
MongoDB
 
MongoDB .local Paris 2020: Realm : l'ingrédient secret pour de meilleures app...
MongoDB
 
MongoDB .local Paris 2020: Upply @MongoDB : Upply : Quand le Machine Learning...
MongoDB
 

Recently uploaded (20)

PDF
Are there government-backed agri-software initiatives in Limerick.pdf
giselawagner2
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
PDF
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
PDF
Arcee AI - building and working with small language models (06/25)
Julien SIMON
 
PDF
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PPTX
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
PPTX
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
PDF
Productivity Management Software | Workstatus
Lovely Baghel
 
PDF
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 
Are there government-backed agri-software initiatives in Limerick.pdf
giselawagner2
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
HR agent at Mediq: Lessons learned on Agent Builder & Maestro by Tacstone Tec...
UiPathCommunity
 
Arcee AI - building and working with small language models (06/25)
Julien SIMON
 
Wojciech Ciemski for Top Cyber News MAGAZINE. June 2025
Dr. Ludmila Morozova-Buss
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
✨Unleashing Collaboration: Salesforce Channels & Community Power in Patna!✨
SanjeetMishra29
 
Building and Operating a Private Cloud with CloudStack and LINBIT CloudStack ...
ShapeBlue
 
Productivity Management Software | Workstatus
Lovely Baghel
 
Apache CloudStack 201: Let's Design & Build an IaaS Cloud
ShapeBlue
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Empowering Cloud Providers with Apache CloudStack and Stackbill
ShapeBlue
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Meetup Kickoff & Welcome - Rohit Yadav, CSIUG Chairman
ShapeBlue
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
NewMind AI Journal - Weekly Chronicles - July'25 Week II
NewMind AI
 

Apache Jackrabbit Oak on MongoDB

  • 1. Apache Jackrabbit Oak on MongoDB Marcel Reutegger | Senior Software Engineer © 2014 Adobe Systems Incorporated. All Rights Reserved.
  • 2. Apache Jackrabbit Oak © 2014 Adobe Systems Incorporated. All Rights Reserved. 2 About me Software Engineer At Day/Adobe since 2002 JCR API Specification Apache member Apache Jackrabbit / Oak
  • 3. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 3
  • 4. Adobe Experience Manager © 2014 Adobe Systems Incorporated. All Rights Reserved. 4
  • 5. Adobe Experience Manager – Technology Stack © 2014 Adobe Systems Incorporated. All Rights Reserved. 5 OSGi Container Web Framework Java Content Repository
  • 6. Adobe Experience Manager – Technology Stack © 2014 Adobe Systems Incorporated. All Rights Reserved. 6 OSGi Container Web Framework Java Content Repository
  • 7. Adobe Experience Manager – Technology Stack Java Content Repository / Apache Jackrabbit Oak Tar MongoDB RDBMS © 2014 Adobe Systems Incorporated. All Rights Reserved. 7 .tar
  • 8. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 8
  • 9. Java Content Repository – Why? “Build me a web content management system!” © 2014 Adobe Systems Incorporated. All Rights Reserved. 9 Apache PHP Developer happiness Easy: LAMP stack Linux MySQL Done in 2 weeks
  • 10. Java Content Repository – Why? Build me a web content management system! “Nice, but I want to organize my pages in a hierarchy.” Apply a well known hierarchical database model and update the application. © 2014 Adobe Systems Incorporated. All Rights Reserved. 10 Developer happiness Done in 4 weeks
  • 11. Java Content Repository – Why? Nice, but I want to organize my pages in a hierarchy. “Can you please add structured and fulltext searches?” Integrate with Apache Solr or Elasticsearch © 2014 Adobe Systems Incorporated. All Rights Reserved. Done in 4 weeks 11 Developer happiness
  • 12. Java Content Repository – Why? Can you please add structured and fulltext searches? “I accidentally deleted the product page. We need to version our content.” Introduce new tables and rewrite the application. © 2014 Adobe Systems Incorporated. All Rights Reserved. Done in 8 weeks 12 Developer happiness
  • 13. Java Content Repository – Why? “I accidentally deleted the product page. We need to version our content.” “We cannot publish financial results, unless the system has fine grained access control.” Introduce more tables and © 2014 Adobe Systems Incorporated. All Rights Reserved. integrate with a directory server. I’ll get back to you 13 next year! Developer happiness
  • 14. Java Content Repository – Features JSR-283 – JCR 2.0 released 2009 Hierarchical - Structured and binary data Query – SQL, XPath and Java language binding Access Control on Node and Property level Versioning – Modeled after WebDAV DeltaV (RFC 3253) Locking – Shallow or deep Asynchronous Observation © 2014 Adobe Systems Incorporated. All Rights Reserved. 14
  • 15. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 15
  • 16. Apache Jackrabbit Oak – Design © 2014 Adobe Systems Incorporated. All Rights Reserved. 16 Cacheable Customizable Scalable Support NoSQL Storage Support Sharding
  • 17. Apache Jackrabbit Oak – Design © 2014 Adobe Systems Incorporated. All Rights Reserved. 17 Cacheable Customizable Scalable Pluggable Storage Custom Index Definitions
  • 18. Apache Jackrabbit Oak – Design © 2014 Adobe Systems Incorporated. All Rights Reserved. 18 Cacheable Customizable Scalable Copy-On-Write Multiversion Concurrency Content Addressable Storage
  • 19. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 19
  • 20. Apache Jackrabbit Oak – MVCC & Copy-On-Write © 2014 Adobe Systems Incorporated. All Rights Reserved. 20 Rev 1 / /a /b /a/1 /a/2 /b/1
  • 21. Apache Jackrabbit Oak – MVCC & Copy-On-Write /a /b /a/1 /a/2 /b/1 /b/2 © 2014 Adobe Systems Incorporated. All Rights Reserved. 21 Rev 1 / new
  • 22. Apache Jackrabbit Oak – MVCC & Copy-On-Write Rev 2 /a /b /a/1 /a/2 /b/1 /b/2 © 2014 Adobe Systems Incorporated. All Rights Reserved. 22 Rev 1 /b' / /' copy parents
  • 23. Apache Jackrabbit Oak – MVCC & Copy-On-Write Rev 2 /a /b /a/1 /a/2 /b/1 /b/2 © 2014 Adobe Systems Incorporated. All Rights Reserved. 23 Rev 1 /b' / /' concurrent access to Rev 1 and Rev 2
  • 24. Apache Jackrabbit Oak – MVCC & Copy-On-Write collect garbage Rev 2 © 2014 Adobe Systems Incorporated. All Rights Reserved. 24 /a /b' /' /a/1 /a/2 /b/1 /b/2
  • 25. Apache Jackrabbit Oak – MVCC & Copy-On-Write /a /b' /a/1 /a/2 /b/1 /b/2 © 2014 Adobe Systems Incorporated. All Rights Reserved. 25 Rev 2 /' compact
  • 26. Apache Jackrabbit Oak – MVCC & Copy-On-Write © 2014 Adobe Systems Incorporated. All Rights Reserved. 26 ⊕ ⊖ Stable snapshot view of data Writes do not block reads Higher storage cost Garbage collection
  • 27. Apache Jackrabbit Oak – The Data Model {! _id : “/home/john”,! name : “john”,! email : “[email protected]”! }! {! _id : “2:/home/john”,! name : { “r14979e4b424-0-1” : “john” },! email : { “r14979e4b424-0-1” : “[email protected]” },! _deleted : { “r14979e4b424-0-1” : “false” },! _revisions : { “r14979e4b424-0-1” : “c” }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 27
  • 28. Apache Jackrabbit Oak – The Data Model {! _id : “2:/home/john”,! name : { “r14979e4b424-0-1” : “john” },! email : { “r14979e4b424-0-1” : “[email protected]” },! _deleted : { “r14979e4b424-0-1” : “false” },! _revisions : { “r14979e4b424-0-1” : “c” }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 28
  • 29. Apache Jackrabbit Oak – The Data Model {! _id : “2:/home/john”,! name : { “r14979e4b424-0-1” : “john” },! email : { “r14979e4b424-0-1” : “[email protected]” },! _deleted : { “r14979e4b424-0-1” : “false” },! _revisions : { “r14979e4b424-0-1” : “c” }! }! Timestamp Counter Cluster ID © 2014 Adobe Systems Incorporated. All Rights Reserved. 29
  • 30. Apache Jackrabbit Oak – The Data Model {! _id : “2:/home/john”,! name : { “r14979e4b424-0-1” : “john” },! email : {! “r14979e4b424-0-1” : “[email protected]”,! “r14979e6a941-0-1” : “[email protected]”! },! _deleted : { “r14979e4b424-0-1” : “false” },! _revisions : {! “r14979e4b424-0-1” : “c”,! “r14979e6a941-0-1” : “c”! © 2014 Adobe Systems Incorporated. All Rights Reserved. 30 }! }! Change email to “[email protected]
  • 31. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 31
  • 32. Apache Jackrabbit Oak – Transactions {! _id : “2:/home/john”,! name : { “r14979e4b424-0-1” : “john” },! _deleted : { “r14979e4b424-0-1” : “false” },! _commitRoot : { “r14979e4b424-0-1” : “1” }! }! {! _id : “3:/home/john/profile”,! avatar : { “r14979e4b424-0-1” : <bin> },! _deleted : { “r14979e4b424-0-1” : “false” },! _commitRoot : { “r14979e4b424-0-1” : “1” }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 32
  • 33. Apache Jackrabbit Oak – Transactions © 2014 Adobe Systems Incorporated. All Rights Reserved. 33 },! false” },! 1” }! },! false” },! 1” }! {! _id : “1:/home”,! _deleted : { “r14979e1b312-0-1” : “false” },! _revisions : {! “r14979e1b312-0-1” : “c”,! “r14979e4b424-0-1” : “c”! }! }! Conditional update for commit: {! _id : “1:/home”, ! “_collisions.r14979e4b424-0-1” : { $exists : false }! }!
  • 34. Apache Jackrabbit Oak – Transactions {! _id : “3:/home/john/profile”,! avatar : {! “r14979e4b424-0-1” : <bin>! },! _deleted : {! “r14979e4b424-0-1” : “false”! },! _commitRoot : {! “r14979e4b424-0-1” : “1” ! }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 34
  • 35. Apache Jackrabbit Oak – Transactions {! _id : “3:/home/john/profile”,! avatar : {! “r14979e4b424-0-1” : <bin>,! “r14979e6c7a2-0-1” : <bin>! },! _deleted : {! “r14979e4b424-0-1” : “false”! },! _commitRoot : {! “r14979e4b424-0-1” : “1”,! “r14979e6c7a2-0-1” : “1” ! }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 35 T-1
  • 36. Apache Jackrabbit Oak – Transactions {! _id : “3:/home/john/profile”,! avatar : {! “r14979e4b424-0-1” : <bin>,! “r14979e6c7a2-0-1” : <bin>,! “r14979e6c7a3-0-1” : <bin>! },! _deleted : {! “r14979e4b424-0-1” : “false”! },! _commitRoot : {! “r14979e4b424-0-1” : “1”,! “r14979e6c7a2-0-1” : “1”,! “r14979e6c7a3-0-1” : “1”! }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 36 T-1 T-2
  • 37. Apache Jackrabbit Oak – Transactions © 2014 Adobe Systems Incorporated. All Rights Reserved. 37 {! _id : “1:/home”,! _deleted : { ! “r14979e1b312-0-1” : “false”! },! _revisions : {! “r14979e1b312-0-1” : “c”! },! _collisions : {! “r14979e6c7a2-0-1” : “true”! }! }! T-2 Conditional update for collision marker: {! _id : “1:/home”, ! “_revisions.r14979e6c7a2-0-1” : { $exists : false }! }!
  • 38. Apache Jackrabbit Oak – Transactions © 2014 Adobe Systems Incorporated. All Rights Reserved. 38 {! _id : “1:/home”,! _deleted : { ! “r14979e1b312-0-1” : “false”! },! _revisions : {! “r14979e1b312-0-1” : “c”! },! _collisions : {! “r14979e6c7a2-0-1” : “true”! }! }! T-2 T-1 ✗ Conditional update for commit: {! _id : “1:/home”, ! “_collisions.r14979e6c7a2-0-1” : { $exists : false }! }!
  • 39. Apache Jackrabbit Oak – Transactions © 2014 Adobe Systems Incorporated. All Rights Reserved. 39 {! _id : “1:/home”,! _deleted : { ! “r14979e1b312-0-1” : “false”! },! _revisions : {! “r14979e1b312-0-1” : “c”,! “r14979e6c7a3-0-1” : “c”! },! _collisions : {! “r14979e6c7a2-0-1” : “true”! }! }! T-1 T-2 ✗ {! _id : “1:/home”, ! “_collisions.r14979e6c7a3-0-1” : { $exists : false }! }!
  • 40. Apache Jackrabbit Oak – Transactions {! _id : “3:/home/john/profile”,! avatar : {! “r14979e4b424-0-1” : <bin>,! “r14979e6c7a2-0-1” : <bin>,! “r14979e6c7a3-0-1” : <bin>! },! _deleted : {! “r14979e4b424-0-1” : “false”! },! _commitRoot : {! “r14979e4b424-0-1” : “1”,! “r14979e6c7a2-0-1” : “1”,! “r14979e6c7a3-0-1” : “1”! }! }! © 2014 Adobe Systems Incorporated. All Rights Reserved. 40 T-1
  • 41. Contents © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 41
  • 42. Apache Jackrabbit Oak – Content Addressable Storage © 2014 Adobe Systems Incorporated. All Rights Reserved. 42 GridFS file chunk 0 chunk 1 … chunk N
  • 43. Apache Jackrabbit Oak – Content Addressable Storage © 2014 Adobe Systems Incorporated. All Rights Reserved. 43 Oak Node Storage Binary Storage Binary Chunk 0x38a7 Chunk 0xc92a Chunk 0x8f91
  • 44. Apache Jackrabbit Oak – Content Addressable Storage Binary 0x38a7 © 2014 Adobe Systems Incorporated. All Rights Reserved. 44 Oak 0x38a7 Chunk 0x38a7 Chunk 0xc92a Binary Storage Chunk 0x8f91 Hash: Node Storage
  • 45. Apache Jackrabbit Oak – Content Addressable Storage Binary © 2014 Adobe Systems Incorporated. All Rights Reserved. 45 Oak 0x8f91 Chunk 0x38a7 Chunk 0xc92a Binary Storage Chunk 0x8f91 Hash: 0x38a7 0x8f91 Node Storage
  • 46. Apache Jackrabbit Oak – Content Addressable Storage Binary © 2014 Adobe Systems Incorporated. All Rights Reserved. 46 Oak 0x52f1 Chunk 0x38a7 Chunk 0xc92a Binary Storage Chunk 0x8f91 Hash: 0x38a7 0x8f91 0x52f1 Chunk 0x52f1 Node Storage
  • 47. Apache Jackrabbit Oak – Content Addressable Storage © 2014 Adobe Systems Incorporated. All Rights Reserved. 47 Oak Chunk 0x38a7 Chunk 0xc92a Binary Storage Chunk 0x8f91 Chunk 0x52f1 Node Storage 0x38a7 0x8f91 0x52f1
  • 48. Apache Jackrabbit Oak – Content Addressable Storage © 2014 Adobe Systems Incorporated. All Rights Reserved. 48 ⊕ ⊖ De-duplication on chunk level Chunks are immutable Shared Storage Garbage collection
  • 49. Summary © 2014 Adobe Systems Incorporated. All Rights Reserved. Adobe Experience Manager Java Content Repository Apache Jackrabbit Oak Multiversion Concurrency Control Transactions Content Addressable Storage Q & A 49
  • 50. Q & A © 2014 Adobe Systems Incorporated. All Rights Reserved. 50
  • 51. © 2014 Adobe Systems Incorporated. All Rights Reserved.