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

Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiJukka Zitting
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
confluent
 
Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
Ashish Gupta
 
Quick introduction to scala
Quick introduction to scalaQuick introduction to scala
Quick introduction to scala
Mohammad Hossein Rimaz
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
José Paumard
 
Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)
Alex Motley
 
Storage and Alfresco
Storage and AlfrescoStorage and Alfresco
Storage and Alfresco
Toni de la Fuente
 
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4hackers.com
 
Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19
José Paumard
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
Mike Ensor
 
Spring batch for large enterprises operations
Spring batch for large enterprises operations Spring batch for large enterprises operations
Spring batch for large enterprises operations
Ignasi González
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Michael Plöd
 
Introduction to Spark
Introduction to SparkIntroduction to Spark
Introduction to Spark
Li Ming Tsai
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
Dragos Balan
 
The Scala Programming Language
The Scala Programming LanguageThe Scala Programming Language
The Scala Programming Language
Haim Michael
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final Tagless
John De Goes
 
Practical Kerberos with Apache HBase
Practical Kerberos with Apache HBasePractical Kerberos with Apache HBase
Practical Kerberos with Apache HBase
Josh Elser
 
Api security-testing
Api security-testingApi security-testing
Api security-testing
n|u - The Open Security Community
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
IndicThreads
 
Lessons learned from operating Data Platform on Kubernetes(EKS)
Lessons learned from operating Data Platform on Kubernetes(EKS)Lessons learned from operating Data Platform on Kubernetes(EKS)
Lessons learned from operating Data Platform on Kubernetes(EKS)
창언 정
 

What's hot (20)

Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache Jackrabbi
 
Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips Kafka Security 101 and Real-World Tips
Kafka Security 101 and Real-World Tips
 
Jsf presentation
Jsf presentationJsf presentation
Jsf presentation
 
Quick introduction to scala
Quick introduction to scalaQuick introduction to scala
Quick introduction to scala
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)Making The Move To Java 17 (JConf 2022)
Making The Move To Java 17 (JConf 2022)
 
Storage and Alfresco
Storage and AlfrescoStorage and Alfresco
Storage and Alfresco
 
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
Garage4Hackers Ranchoddas Webcast Series - Bypassing Modern WAF's Exemplified...
 
Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19Loom Virtual Threads in the JDK 19
Loom Virtual Threads in the JDK 19
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Spring batch for large enterprises operations
Spring batch for large enterprises operations Spring batch for large enterprises operations
Spring batch for large enterprises operations
 
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICESSpring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
Spring One 2 GX 2014 - CACHING WITH SPRING: ADVANCED TOPICS AND BEST PRACTICES
 
Introduction to Spark
Introduction to SparkIntroduction to Spark
Introduction to Spark
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
The Scala Programming Language
The Scala Programming LanguageThe Scala Programming Language
The Scala Programming Language
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final Tagless
 
Practical Kerberos with Apache HBase
Practical Kerberos with Apache HBasePractical Kerberos with Apache HBase
Practical Kerberos with Apache HBase
 
Api security-testing
Api security-testingApi security-testing
Api security-testing
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 
Lessons learned from operating Data Platform on Kubernetes(EKS)
Lessons learned from operating Data Platform on Kubernetes(EKS)Lessons learned from operating Data Platform on Kubernetes(EKS)
Lessons learned from operating Data Platform on Kubernetes(EKS)
 

Viewers also liked

The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
Jukka Zitting
 
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
MongoDB
 
Into the TarPit: A TarMK Deep Dive
Into the TarPit: A TarMK Deep DiveInto the TarPit: A TarMK Deep Dive
Into the TarPit: A TarMK Deep Dive
Michael Dürig
 
New Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthNew Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthAEM HUB
 
The architecture of oak
The architecture of oakThe architecture of oak
The architecture of oak
Michael Dürig
 
Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015
Michael Henderson
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
connectwebex
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit Architecture
Lars Trieloff
 
Microservices Architecture for AEM
Microservices Architecture for AEMMicroservices Architecture for AEM
Microservices Architecture for AEM
Maciej Majchrzak
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
Gabriel Walt
 
Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
Jukka Zitting
 
Efficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQEfficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQ
connectwebex
 
CMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit SandboxCMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit Sandbox
David Nuescheler
 
Scaling search in Oak with Solr
Scaling search in Oak with Solr Scaling search in Oak with Solr
Scaling search in Oak with Solr Tommaso Teofili
 
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management SystemsAEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
MongoDB
 
Introduction to CQ5
Introduction to CQ5Introduction to CQ5
Introduction to CQ5
Michele Mostarda
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
Aya Komuro
 
Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRHosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
Woonsan Ko
 
Apache Hive 紹介
Apache Hive 紹介Apache Hive 紹介

Viewers also liked (20)

The new repository in AEM 6
The new repository in AEM 6The new repository in AEM 6
The new repository in AEM 6
 
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
Webinar: Adobe Experience Manager Clustering Made Easy on MongoDB
 
Into the TarPit: A TarMK Deep Dive
Into the TarPit: A TarMK Deep DiveInto the TarPit: A TarMK Deep Dive
Into the TarPit: A TarMK Deep Dive
 
New Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael MarthNew Repository in AEM 6 by Michael Marth
New Repository in AEM 6 by Michael Marth
 
The architecture of oak
The architecture of oakThe architecture of oak
The architecture of oak
 
Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015
 
JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?JCR, Sling or AEM? Which API should I use and when?
JCR, Sling or AEM? Which API should I use and when?
 
The Zero Bullshit Architecture
The Zero Bullshit ArchitectureThe Zero Bullshit Architecture
The Zero Bullshit Architecture
 
Microservices Architecture for AEM
Microservices Architecture for AEMMicroservices Architecture for AEM
Microservices Architecture for AEM
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component Development
 
Apache development with GitHub and Travis CI
Apache development with GitHub and Travis CIApache development with GitHub and Travis CI
Apache development with GitHub and Travis CI
 
Efficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQEfficient content structures and queries in CRX/CQ
Efficient content structures and queries in CRX/CQ
 
CMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit SandboxCMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit Sandbox
 
Scaling search in Oak with Solr
Scaling search in Oak with Solr Scaling search in Oak with Solr
Scaling search in Oak with Solr
 
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management SystemsAEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
AEM + MongoDB: How to Scale and Operate Large Digital Asset Management Systems
 
Apache Jackrabbit
Apache JackrabbitApache Jackrabbit
Apache Jackrabbit
 
Introduction to CQ5
Introduction to CQ5Introduction to CQ5
Introduction to CQ5
 
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
 
Hosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCRHosting huge amount of binaries in JCR
Hosting huge amount of binaries in JCR
 
Apache Hive 紹介
Apache Hive 紹介Apache Hive 紹介
Apache Hive 紹介
 

Similar to Apache Jackrabbit Oak on MongoDB

PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8
Acquia
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
Alfresco Software
 
ArangoDB
ArangoDBArangoDB
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build Sites
Peter
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
Bertrand Delacretaz
 
Socket applications
Socket applicationsSocket applications
Socket applicationsJoão Moura
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)David Delabassee
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! David Delabassee
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
DataStax Academy
 
UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptxUKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
Marco Gralike
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopware
Sander Mangel
 
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Paolo Mottadelli
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
Jeff Smith
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Nathen Harvey
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
Chris Purrington
 
Docker Advanced registry usage
Docker Advanced registry usageDocker Advanced registry usage
Docker Advanced registry usage
Docker, Inc.
 
Using Databases and Containers From Development to Deployment
Using Databases and Containers  From Development to DeploymentUsing Databases and Containers  From Development to Deployment
Using Databases and Containers From Development to Deployment
Aerospike, Inc.
 
Scaling PHP apps
Scaling PHP appsScaling PHP apps
Scaling PHP apps
Matteo Moretti
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
Suresh Paulraj
 

Similar to Apache Jackrabbit Oak on MongoDB (20)

PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8PHP Performance tuning for Drupal 8
PHP Performance tuning for Drupal 8
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
ArangoDB
ArangoDBArangoDB
ArangoDB
 
Apache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build SitesApache Solr Changes the Way You Build Sites
Apache Solr Changes the Way You Build Sites
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering Farm
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
Project Avatar (Lyon JUG & Alpes JUG  - March 2014)Project Avatar (Lyon JUG & Alpes JUG  - March 2014)
Project Avatar (Lyon JUG & Alpes JUG - March 2014)
 
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur! Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
Java EE 7 et ensuite pourquoi pas JavaScript sur le serveur!
 
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache CassandraCassandra Day SV 2014: Spark, Shark, and Apache Cassandra
Cassandra Day SV 2014: Spark, Shark, and Apache Cassandra
 
UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptxUKOUG2018 - I Know what you did Last Summer [in my Database].pptx
UKOUG2018 - I Know what you did Last Summer [in my Database].pptx
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopware
 
Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014Open Architecture in the Adobe Marketing Cloud - Summit 2014
Open Architecture in the Adobe Marketing Cloud - Summit 2014
 
SD Times - Docker v2
SD Times - Docker v2SD Times - Docker v2
SD Times - Docker v2
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
 
Docker Advanced registry usage
Docker Advanced registry usageDocker Advanced registry usage
Docker Advanced registry usage
 
Using Databases and Containers From Development to Deployment
Using Databases and Containers  From Development to DeploymentUsing Databases and Containers  From Development to Deployment
Using Databases and Containers From Development to Deployment
 
Scaling PHP apps
Scaling PHP appsScaling PHP apps
Scaling PHP apps
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 

More from MongoDB

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

More from MongoDB (20)

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

Recently uploaded

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 

Recently uploaded (20)

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

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 : “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
  • 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” }! }! © 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” : “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
  • 30. 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”
  • 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.