SlideShare a Scribd company logo
1 of 51
Download to read offline
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
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAshokkumar T A
 
runC – Open Container Initiative
runC – Open Container InitiativerunC – Open Container Initiative
runC – Open Container InitiativeJeeva Chelladhurai
 
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 SystemsMongoDB
 
A story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEMA story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEMFrans Rosén
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...Edureka!
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAndrew Khoury
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization BlueHat Security Conference
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolveAngel Boy
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practicesIwan van der Kleijn
 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniqueAngel Boy
 
Windows 10 Nt Heap Exploitation (English version)
Windows 10 Nt Heap Exploitation (English version)Windows 10 Nt Heap Exploitation (English version)
Windows 10 Nt Heap Exploitation (English version)Angel Boy
 
Integration patterns in AEM 6
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6Yuval Ararat
 
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptx
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptxGrafana Mimir and VictoriaMetrics_ Performance Tests.pptx
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptxRomanKhavronenko
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기KwangSeob Jeong
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようTasuku Otani
 

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
 
Aem dispatcher – tips & tricks
Aem dispatcher – tips & tricksAem dispatcher – tips & tricks
Aem dispatcher – tips & tricks
 
runC – Open Container Initiative
runC – Open Container InitiativerunC – Open Container Initiative
runC – Open Container Initiative
 
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
 
A story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEMA story of the passive aggressive sysadmin of AEM
A story of the passive aggressive sysadmin of AEM
 
Ldap
LdapLdap
Ldap
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 
AEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser CachingAEM (CQ) Dispatcher Security and CDN+Browser Caching
AEM (CQ) Dispatcher Security and CDN+Browser Caching
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
BlueHat v17 || Dangerous Contents - Securing .Net Deserialization
 
Return to dlresolve
Return to dlresolveReturn to dlresolve
Return to dlresolve
 
Building Advanced XSS Vectors
Building Advanced XSS VectorsBuilding Advanced XSS Vectors
Building Advanced XSS Vectors
 
Type script - advanced usage and practices
Type script  - advanced usage and practicesType script  - advanced usage and practices
Type script - advanced usage and practices
 
Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit Technique
 
Windows 10 Nt Heap Exploitation (English version)
Windows 10 Nt Heap Exploitation (English version)Windows 10 Nt Heap Exploitation (English version)
Windows 10 Nt Heap Exploitation (English version)
 
Integration patterns in AEM 6
Integration patterns in AEM 6Integration patterns in AEM 6
Integration patterns in AEM 6
 
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptx
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptxGrafana Mimir and VictoriaMetrics_ Performance Tests.pptx
Grafana Mimir and VictoriaMetrics_ Performance Tests.pptx
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみようAlfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
Alfresco勉強会#36 alfresco 5でカスタムREST APIを作ってみよう
 

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 6Jukka 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 DiveMichael 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 oakMichael Dürig
 
Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Adobe Meetup AEM Architecture Sydney 2015
Adobe Meetup AEM Architecture Sydney 2015Michael 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 ArchitectureLars Trieloff
 
Microservices Architecture for AEM
Microservices Architecture for AEMMicroservices Architecture for AEM
Microservices Architecture for AEMMaciej Majchrzak
 
AEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentAEM Best Practices for Component Development
AEM Best Practices for Component DevelopmentGabriel 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 CIJukka Zitting
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache JackrabbitJukka 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/CQconnectwebex
 
CMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit SandboxCMIS Apache Jackrabbit Sandbox
CMIS Apache Jackrabbit SandboxDavid 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
 
恐るべき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 JCRWoonsan Ko
 

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
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 
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
 
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 8Acquia
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
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 SitesPeter
 
Building an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBuilding an Apache Sling Rendering Farm
Building an Apache Sling Rendering FarmBertrand 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 CassandraDataStax 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].pptxMarco Gralike
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopwareSander 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 2014Paolo 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 ChefNathen Harvey
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09Chris Purrington
 
Docker Advanced registry usage
Docker Advanced registry usageDocker Advanced registry usage
Docker Advanced registry usageDocker, 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 DeploymentAerospike, Inc.
 

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 AtlasMongoDB
 
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 MongoDBMongoDB
 
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 DataMongoDB
 
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 StartMongoDB
 
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.2MongoDB
 
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 MindsetMongoDB
 
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 JumpstartMongoDB
 
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 DiveMongoDB
 
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 & GolangMongoDB
 
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

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Recently uploaded (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

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.