SlideShare a Scribd company logo
1 of 32
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
The New Repository
in AEM 6.0
Jukka Zitting
Senior Developer
Adobe
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Agenda
Introduction Deployment
MigrationCompatibility
Search Questions
Questions?
• ask any time for clarification
• broader questions at the end
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
CRX3 aka Oak
The new repository in AEM 6.0
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Project Oak
• Large repositories
• Distributed repositories
Scalability
• Improved performance
• Improved concurrency
Throughput
• Flat hierarchies
• Complex ACLs
Features
• Pluggable components
• OSGi-friendly
Flexibility
Part of Apache Jackrabbit
• fully open source, ALv2
• http://jackrabbit.apache.org/oak/
• one of the most active Apache
projects by commit counts
Fresh implementation of JCR 2.0
• mostly backwards compatible
• some optional features
excluded to avoid bad
performance/scalability
tradeoffs
Project timeline:
• 2008: initial design ideas
• 2011: prototyping
• 2012: project launched
• 2014: Oak 1.0 released
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Key differences
Oak
• MVCC
• tree persistence
• designed for scalability
• plugin architecture
• pluggable query indices
CRX2
• synchronous updates
• key-value persistence
• clustering as add-on
• static extension points
• one index per workspace
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Architecture
MK
Core
JCR oak-jcr
oak-core
TarMK MongoMK
JCR
• JCR API binding
• convenience and safety
features like auto-refresh and
thread-safety guards
Core
• high-level functionality
• search, versioning, security, etc.
• most features implemented as
pluggable extensions
MicroKernel
• versioned tree storage
• clustering, caching, etc.
http://www.slideshare.net/jukka/
oak-the-architecture-of-apache-
jackrabbit-3
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Deployment scenarios
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
AEM6 Author
default
TarMK
reliability
TarMK + failover
scalability
MongoMK
compatibility
CRX2
Which repository backend to use
for AEM 6.0 author deployments?
Instructions:
• start from the top
• follow lines to add
required features
• stop when happy
Note:
• each step adds complexity
• most steps can be postponed to
when actually needed
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
AEM6 Publish
Publishing
• TarMK
• farm of
replicas
User generated
content
• MongoMK
• publish
cluster
Which repository backend to use
for AEM 6.0 publish deployments?
Instructions:
• pick your main use case
Note:
• in most cases it will be possible
to switch the backend later on,
though the migration may be a
bit costly
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
TarMK
Simple default deployment option
Heavily optimized for
single-node performance
• memory mapping (64bit JVMs)
• compactness
• locality of reference
Optionally with a data store
for large binaries
• migration from crx2
• external storage (NAS/SAN, S3)
TarMK
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
TarMK + failover
For added reliability
• continuous, incremental backup
to a separate failover server
• requires an external smart
firewall, load balancer or
monitoring tool (Nagios, etc.)
for triggering the failover
TarMK
Failover
TarMK
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
MongoMK
Reliability + scalability
Any number of AEM6 cluster nodes
can share an underlying MongoDB
cluster
• standard MongoDB replication
and sharding features
• all shared state in MongoDB
• eventually consistent
mongos mongos
mongod
primary
mongod
secondary
mongod
secondary
replicas
shards
mongod
config
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Performance benchmarks (lower is better)
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Scalability benchmarks
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content migration
https://www.flickr.com/photos/belsymington/4102783610/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content Migration
Migrate from CRX2 to Oak
see next slide
Do a full backup
see backup instructions
Upgrade to AEM6 with CRX2
see upgrade instructionsHow to migrate an existing
AEM 5.x deployment
to AEM 6.0 with Oak?
BTW, why the migration?
• radically different storage format
• need for an explicit decision
because of changes in
backwards compatibility
http://docs.adobe.com/content/docs
/en/aem/6-0/deploy/upgrade.html
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Content migration
Start AEM 6 with crx3
Replace repository with migrated content
segmentstore from crx2oak datastore from crx2
Create a vanilla AEM 6 repository with FileDataStore
new crx-quickstart folder
FileDataStore.cfg
SegmentNodeStoreService.cfg
Run crx2oak
Very roughly: 10 mins / GB Does not copy binaries
Stop AEM 6 with crx2
How to migrate a CRX2 repository
to CRX3 with TarMK?
Prerequisites:
• use Java 7 or higher
• first upgrade to AEM 6
For MongoMK:
• -r crx3,crx3mongo
• -Doak.mongo.uri
• DocumentNodeStoreService.cfg
• see documentation for details
For custom data stores:
• see documentation for details
http://docs.adobe.com/content/docs
/en/aem/6-0/deploy/upgrade.html
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Migration between TarMK and MongoMK
• Backend choice mostly transparent to
higher level code
• Migrating the full repository
– use backup/restore
• Migrating selected subtrees
– use content packages
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Backwards compatibility
https://www.flickr.com/photos/exfordy/344603717/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Significant changes • See next sectionQuery
• Single-node observation mostly
unchanged
• Commit boundaries, user info, etc.
not available across cluster
Observation
• Significant changes in performance
and flexibility of access controls
• Backwards compatibility a priority,
so few direct problems expected,
but review for performance
Security
Functionality with significant
changes in implementation and
whose use in client code should be
reviewed and, if needed, adapted
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Minor differences
• Sessions not always up to
date with latest changes
• Auto-refresh feature avoids
most compatibility issues
Session
refresh
• Only referenceable nodes
have UUIDs
• Other nodes have path
identifiers
Identifiers
• Different frozen identifiers
• Updated access control
Versioning
Functional changes that in most
cases require few or no changes in
client code
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Missing features
• Only a single workspace per
repository
• Unneeded in normal AEM
deployments
Workspaces
• Only very limited support
(essentially read-only)
• Not very frequently used
Same-name
siblings
• Only “soft locking” implemented
• Use as a guideline (“I’m working
on this page”) instead of as a
strict synchronization tool
Locking
Functionality that is either
completely missing or significantly
less useful than before and thus
require significant rewrite in
affected client code
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Custom search indexes
https://www.flickr.com/photos/dwmoran/3729048272/
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Search Engine
Query
parser
• Statement parsed into an abstract
syntax tree
Index
selection
• Cost estimate from each index
• Select the index with least cost
Index
lookup
• Look up matching paths from
selected index
Filtering
• Load matching nodes
• Filter results based on ACL
restrictions and other constraints
Features not covered here:
• joins
• ordering
Features not yet available:
• facets
• Aggregates
Trouble with a query?
• try the EXPLAIN feature!
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Index definitions
Nodes under /oak:index
• Index data as hidden content or
in an external location
Creating an index:
• add a definition node
Removing an index:
• remove the node
Re-indexing:
• set reindex=true
Update frequency:
• async=“async”
Fallback:
• traversing index
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Property index
SELECT * FROM [mix:language]
WHERE [jcr:language]=?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Constraints on multiple properties
SELECT * FROM [nt:base]
WHERE foo=? AND bar=?
• one index on foo and another on bar
• engine automatically selects best index
• other constraints applied as extra filters
• future extension: multi-property index
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Unique index
SELECT * FROM [rep:Authorizable]
WHERE [rep:principalName]=?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Ordered index
SELECT * FROM [nt:base]
WHERE [cq:lastModified] > ?
AND [cq:lastModified] < ?
ORDER BY [cq:lastModified]
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Lucene index
SELECT * FROM [nt:base]
WHERE CONTAINS(*, ?)
Lucene index files stored
as hidden content inside
the repository!
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.
Questions?
CIRCUIT – An Adobe Developer Event
Presented by CITYTECH, Inc.

More Related Content

What's hot

Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMAdobeMarketingCloud
 
Le Wagon - UI components design
Le Wagon - UI components designLe Wagon - UI components design
Le Wagon - UI components designBoris Paillard
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiJukka Zitting
 
Flexbox and Grid Layout
Flexbox and Grid LayoutFlexbox and Grid Layout
Flexbox and Grid LayoutRachel Andrew
 
Le Wagon - Javascript for Beginners
Le Wagon - Javascript for BeginnersLe Wagon - Javascript for Beginners
Le Wagon - Javascript for BeginnersSébastien Saunier
 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core componentsLokesh BS
 
Tailwind CSS - KanpurJS
Tailwind CSS - KanpurJSTailwind CSS - KanpurJS
Tailwind CSS - KanpurJSNaveen Kharwar
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSNaga Harish M
 
FS_module_functions.pptx
FS_module_functions.pptxFS_module_functions.pptx
FS_module_functions.pptxBareen Shaikh
 
Document Object Model
Document Object ModelDocument Object Model
Document Object ModelMayur Mudgal
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep DiveGabriel Walt
 
Frontend Crash Course: HTML and CSS
Frontend Crash Course: HTML and CSSFrontend Crash Course: HTML and CSS
Frontend Crash Course: HTML and CSSThinkful
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMBojana Popovska
 
Le Wagon - UI and Design Crash Course
Le Wagon - UI and Design Crash CourseLe Wagon - UI and Design Crash Course
Le Wagon - UI and Design Crash CourseBoris Paillard
 

What's hot (20)

Build single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEMBuild single page applications using AngularJS on AEM
Build single page applications using AngularJS on AEM
 
Le Wagon - UI components design
Le Wagon - UI components designLe Wagon - UI components design
Le Wagon - UI components design
 
Html5 semantics
Html5 semanticsHtml5 semantics
Html5 semantics
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Http security response headers
Http security response headers Http security response headers
Http security response headers
 
Introduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache JackrabbiIntroduction to JCR and Apache Jackrabbi
Introduction to JCR and Apache Jackrabbi
 
Flexbox and Grid Layout
Flexbox and Grid LayoutFlexbox and Grid Layout
Flexbox and Grid Layout
 
Le Wagon - Javascript for Beginners
Le Wagon - Javascript for BeginnersLe Wagon - Javascript for Beginners
Le Wagon - Javascript for Beginners
 
Adobe AEM core components
Adobe AEM core componentsAdobe AEM core components
Adobe AEM core components
 
Tailwind CSS - KanpurJS
Tailwind CSS - KanpurJSTailwind CSS - KanpurJS
Tailwind CSS - KanpurJS
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
FS_module_functions.pptx
FS_module_functions.pptxFS_module_functions.pptx
FS_module_functions.pptx
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Frontend Crash Course: HTML and CSS
Frontend Crash Course: HTML and CSSFrontend Crash Course: HTML and CSS
Frontend Crash Course: HTML and CSS
 
Jquery
JqueryJquery
Jquery
 
Javascript and DOM
Javascript and DOMJavascript and DOM
Javascript and DOM
 
Dynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEMDynamic components using SPA concepts in AEM
Dynamic components using SPA concepts in AEM
 
Le Wagon - UI and Design Crash Course
Le Wagon - UI and Design Crash CourseLe Wagon - UI and Design Crash Course
Le Wagon - UI and Design Crash Course
 
Java script arrays
Java script arraysJava script arrays
Java script arrays
 

Similar to The new repository in AEM 6

from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?strikr .
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentDave Ward
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Markus Eisele
 
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on ContainersWSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on ContainersLakmal Warusawithana
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersImesh Gunaratne
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDAleksandr Maklakov
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...Docker, Inc.
 
Webinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDBWebinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDBMongoDB
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Patrick Chanezon
 
How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSRyan Crawford
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataMarketingArrowECS_CZ
 
Creating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeCreating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeDustin Ruehle
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10MagaliDavidCruz
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankDocker, Inc.
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup
 
Docker and the K computer
Docker and the K computerDocker and the K computer
Docker and the K computerPeter Bryzgalov
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERIndrajit Poddar
 

Similar to The new repository in AEM 6 (20)

from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?from Docker to Moby and back. what changed ?
from Docker to Moby and back. what changed ?
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on ContainersWSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
WSO2ConEU 2016 Tutorial - Deploying WSO2 Middleware on Containers
 
Deploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on ContainersDeploying WSO2 Middleware on Containers
Deploying WSO2 Middleware on Containers
 
HOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLDHOW TO DRONE.IO IN CI/CD WORLD
HOW TO DRONE.IO IN CI/CD WORLD
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
 
Webinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDBWebinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDB
 
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
Docker Orchestration: Welcome to the Jungle! Devoxx & Docker Meetup Tour Nov ...
 
How (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaSHow (and why) to roll your own Docker SaaS
How (and why) to roll your own Docker SaaS
 
DevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on ExadataDevOps Supercharged with Docker on Exadata
DevOps Supercharged with Docker on Exadata
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
Creating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using LatticeCreating Resilient, Dockerbased Applications using Lattice
Creating Resilient, Dockerbased Applications using Lattice
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10Meetup Openshift Geneva 03/10
Meetup Openshift Geneva 03/10
 
Efficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura FrankEfficient Parallel Testing with Docker by Laura Frank
Efficient Parallel Testing with Docker by Laura Frank
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
 
Docker and the K computer
Docker and the K computerDocker and the K computer
Docker and the K computer
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
 
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWERContinuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
Continuous Integration with Cloud Foundry Concourse and Docker on OpenPOWER
 

More from Jukka Zitting

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
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repositoryJukka Zitting
 
MicroKernel & NodeStore
MicroKernel & NodeStoreMicroKernel & NodeStore
MicroKernel & NodeStoreJukka Zitting
 
Open source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache IncubatorOpen source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache IncubatorJukka Zitting
 
Content extraction with apache tika
Content extraction with apache tikaContent extraction with apache tika
Content extraction with apache tikaJukka Zitting
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Jukka Zitting
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repositoryJukka Zitting
 
Repository performance tuning
Repository performance tuningRepository performance tuning
Repository performance tuningJukka Zitting
 
The return of the hierarchical model
The return of the hierarchical modelThe return of the hierarchical model
The return of the hierarchical modelJukka Zitting
 
Text and metadata extraction with Apache Tika
Text and metadata extraction with Apache TikaText and metadata extraction with Apache Tika
Text and metadata extraction with Apache TikaJukka Zitting
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache TikaJukka Zitting
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitJukka Zitting
 
File System On Steroids
File System On SteroidsFile System On Steroids
File System On SteroidsJukka Zitting
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache TikaJukka Zitting
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of JackrabbitJukka Zitting
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache JackrabbitJukka Zitting
 

More from Jukka Zitting (19)

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
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository
 
MicroKernel & NodeStore
MicroKernel & NodeStoreMicroKernel & NodeStore
MicroKernel & NodeStore
 
Open source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache IncubatorOpen source masterclass - Life in the Apache Incubator
Open source masterclass - Life in the Apache Incubator
 
Content extraction with apache tika
Content extraction with apache tikaContent extraction with apache tika
Content extraction with apache tika
 
Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011Apache Jackrabbit @ Swiss Open Source Awards 2011
Apache Jackrabbit @ Swiss Open Source Awards 2011
 
OSGifying the repository
OSGifying the repositoryOSGifying the repository
OSGifying the repository
 
Repository performance tuning
Repository performance tuningRepository performance tuning
Repository performance tuning
 
The return of the hierarchical model
The return of the hierarchical modelThe return of the hierarchical model
The return of the hierarchical model
 
Text and metadata extraction with Apache Tika
Text and metadata extraction with Apache TikaText and metadata extraction with Apache Tika
Text and metadata extraction with Apache Tika
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache Tika
 
NoSQL Oakland
NoSQL OaklandNoSQL Oakland
NoSQL Oakland
 
Content Storage With Apache Jackrabbit
Content Storage With Apache JackrabbitContent Storage With Apache Jackrabbit
Content Storage With Apache Jackrabbit
 
File System On Steroids
File System On SteroidsFile System On Steroids
File System On Steroids
 
Mime Magic With Apache Tika
Mime Magic With Apache TikaMime Magic With Apache Tika
Mime Magic With Apache Tika
 
Design and architecture of Jackrabbit
Design and architecture of JackrabbitDesign and architecture of Jackrabbit
Design and architecture of Jackrabbit
 
Apache Tika
Apache TikaApache Tika
Apache Tika
 
Content Management With Apache Jackrabbit
Content Management With Apache JackrabbitContent Management With Apache Jackrabbit
Content Management With Apache Jackrabbit
 

Recently uploaded

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

The new repository in AEM 6

  • 1. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. The New Repository in AEM 6.0 Jukka Zitting Senior Developer Adobe
  • 2. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Agenda Introduction Deployment MigrationCompatibility Search Questions Questions? • ask any time for clarification • broader questions at the end
  • 3. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. CRX3 aka Oak The new repository in AEM 6.0
  • 4. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Project Oak • Large repositories • Distributed repositories Scalability • Improved performance • Improved concurrency Throughput • Flat hierarchies • Complex ACLs Features • Pluggable components • OSGi-friendly Flexibility Part of Apache Jackrabbit • fully open source, ALv2 • http://jackrabbit.apache.org/oak/ • one of the most active Apache projects by commit counts Fresh implementation of JCR 2.0 • mostly backwards compatible • some optional features excluded to avoid bad performance/scalability tradeoffs Project timeline: • 2008: initial design ideas • 2011: prototyping • 2012: project launched • 2014: Oak 1.0 released
  • 5. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Key differences Oak • MVCC • tree persistence • designed for scalability • plugin architecture • pluggable query indices CRX2 • synchronous updates • key-value persistence • clustering as add-on • static extension points • one index per workspace
  • 6. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Architecture MK Core JCR oak-jcr oak-core TarMK MongoMK JCR • JCR API binding • convenience and safety features like auto-refresh and thread-safety guards Core • high-level functionality • search, versioning, security, etc. • most features implemented as pluggable extensions MicroKernel • versioned tree storage • clustering, caching, etc. http://www.slideshare.net/jukka/ oak-the-architecture-of-apache- jackrabbit-3
  • 7. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Deployment scenarios
  • 8. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. AEM6 Author default TarMK reliability TarMK + failover scalability MongoMK compatibility CRX2 Which repository backend to use for AEM 6.0 author deployments? Instructions: • start from the top • follow lines to add required features • stop when happy Note: • each step adds complexity • most steps can be postponed to when actually needed
  • 9. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. AEM6 Publish Publishing • TarMK • farm of replicas User generated content • MongoMK • publish cluster Which repository backend to use for AEM 6.0 publish deployments? Instructions: • pick your main use case Note: • in most cases it will be possible to switch the backend later on, though the migration may be a bit costly
  • 10. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. TarMK Simple default deployment option Heavily optimized for single-node performance • memory mapping (64bit JVMs) • compactness • locality of reference Optionally with a data store for large binaries • migration from crx2 • external storage (NAS/SAN, S3) TarMK
  • 11. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. TarMK + failover For added reliability • continuous, incremental backup to a separate failover server • requires an external smart firewall, load balancer or monitoring tool (Nagios, etc.) for triggering the failover TarMK Failover TarMK
  • 12. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. MongoMK Reliability + scalability Any number of AEM6 cluster nodes can share an underlying MongoDB cluster • standard MongoDB replication and sharding features • all shared state in MongoDB • eventually consistent mongos mongos mongod primary mongod secondary mongod secondary replicas shards mongod config
  • 13. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Performance benchmarks (lower is better)
  • 14. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Scalability benchmarks
  • 15. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content migration https://www.flickr.com/photos/belsymington/4102783610/
  • 16. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content Migration Migrate from CRX2 to Oak see next slide Do a full backup see backup instructions Upgrade to AEM6 with CRX2 see upgrade instructionsHow to migrate an existing AEM 5.x deployment to AEM 6.0 with Oak? BTW, why the migration? • radically different storage format • need for an explicit decision because of changes in backwards compatibility http://docs.adobe.com/content/docs /en/aem/6-0/deploy/upgrade.html
  • 17. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Content migration Start AEM 6 with crx3 Replace repository with migrated content segmentstore from crx2oak datastore from crx2 Create a vanilla AEM 6 repository with FileDataStore new crx-quickstart folder FileDataStore.cfg SegmentNodeStoreService.cfg Run crx2oak Very roughly: 10 mins / GB Does not copy binaries Stop AEM 6 with crx2 How to migrate a CRX2 repository to CRX3 with TarMK? Prerequisites: • use Java 7 or higher • first upgrade to AEM 6 For MongoMK: • -r crx3,crx3mongo • -Doak.mongo.uri • DocumentNodeStoreService.cfg • see documentation for details For custom data stores: • see documentation for details http://docs.adobe.com/content/docs /en/aem/6-0/deploy/upgrade.html
  • 18. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Migration between TarMK and MongoMK • Backend choice mostly transparent to higher level code • Migrating the full repository – use backup/restore • Migrating selected subtrees – use content packages
  • 19. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Backwards compatibility https://www.flickr.com/photos/exfordy/344603717/
  • 20. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Significant changes • See next sectionQuery • Single-node observation mostly unchanged • Commit boundaries, user info, etc. not available across cluster Observation • Significant changes in performance and flexibility of access controls • Backwards compatibility a priority, so few direct problems expected, but review for performance Security Functionality with significant changes in implementation and whose use in client code should be reviewed and, if needed, adapted
  • 21. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Minor differences • Sessions not always up to date with latest changes • Auto-refresh feature avoids most compatibility issues Session refresh • Only referenceable nodes have UUIDs • Other nodes have path identifiers Identifiers • Different frozen identifiers • Updated access control Versioning Functional changes that in most cases require few or no changes in client code
  • 22. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Missing features • Only a single workspace per repository • Unneeded in normal AEM deployments Workspaces • Only very limited support (essentially read-only) • Not very frequently used Same-name siblings • Only “soft locking” implemented • Use as a guideline (“I’m working on this page”) instead of as a strict synchronization tool Locking Functionality that is either completely missing or significantly less useful than before and thus require significant rewrite in affected client code
  • 23. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Custom search indexes https://www.flickr.com/photos/dwmoran/3729048272/
  • 24. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Search Engine Query parser • Statement parsed into an abstract syntax tree Index selection • Cost estimate from each index • Select the index with least cost Index lookup • Look up matching paths from selected index Filtering • Load matching nodes • Filter results based on ACL restrictions and other constraints Features not covered here: • joins • ordering Features not yet available: • facets • Aggregates Trouble with a query? • try the EXPLAIN feature!
  • 25. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Index definitions Nodes under /oak:index • Index data as hidden content or in an external location Creating an index: • add a definition node Removing an index: • remove the node Re-indexing: • set reindex=true Update frequency: • async=“async” Fallback: • traversing index
  • 26. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Property index SELECT * FROM [mix:language] WHERE [jcr:language]=?
  • 27. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Constraints on multiple properties SELECT * FROM [nt:base] WHERE foo=? AND bar=? • one index on foo and another on bar • engine automatically selects best index • other constraints applied as extra filters • future extension: multi-property index
  • 28. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Unique index SELECT * FROM [rep:Authorizable] WHERE [rep:principalName]=?
  • 29. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Ordered index SELECT * FROM [nt:base] WHERE [cq:lastModified] > ? AND [cq:lastModified] < ? ORDER BY [cq:lastModified]
  • 30. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Lucene index SELECT * FROM [nt:base] WHERE CONTAINS(*, ?) Lucene index files stored as hidden content inside the repository!
  • 31. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc. Questions?
  • 32. CIRCUIT – An Adobe Developer Event Presented by CITYTECH, Inc.