28
APACHE SLING & FRIENDS TECH MEETUP BERLIN, 26-28 SEPTEMBER 2012 Jackrabbit Oak the next generation content repository

Adapt to2012 oak - the new repository

  • Upload
    michid

  • View
    1.604

  • Download
    1

Embed Size (px)

DESCRIPTION

Jackrabbit Oak is an effort to implement a scalable and performant hierarchical content repository for use as the foundation of modern world-class web sites and other demanding content applications. The Oak effort is a part of the Apache Jackrabbit project. Jackrabbit is a project of the Apache Software Foundation.

Citation preview

Page 1: Adapt to2012  oak - the new repository

APACHE SLING & FRIENDS TECH MEETUPBERLIN, 26-28 SEPTEMBER 2012

Jackrabbit Oakthe next generation content repository

Page 2: Adapt to2012  oak - the new repository

adaptTo() 2012

About us

Jukka Zitting, Michael Dürig{jzitting, mduerig}@adobe.com

Page 3: Adapt to2012  oak - the new repository

adaptTo() 2012

Jackrabbit feature timeline

2002 2004 2006 2008 2010 2012

Orig

inal

des

ign

1.0

Lucene index

RMI remoting

1.2

Bundle PM

Data store

1.4

WebDAV remoting

2.01.6

JCR 2.0

JMX

2.2 2.4

Clustering

Tar PM

JCR 1.0

Tika

Shared nothing

Apache Jackrabbit

JoinIndex config

ISM locking Concurrency

Page 4: Adapt to2012  oak - the new repository

adaptTo() 2012

Design trajectory

http://www.flickr.com/photos/belsymington/4102783610/

Page 5: Adapt to2012  oak - the new repository

adaptTo() 2012

Time for a redesign

http://www.flickr.com/photos/ejcallow/6150622583/

Page 6: Adapt to2012  oak - the new repository

adaptTo() 2012

Time for a redesign

http://www.flickr.com/photos/spiderdog/3960915963/

Page 7: Adapt to2012  oak - the new repository

adaptTo() 2012

Time for a redesign

http://www.flickr.com/photos/daveseven/6006652787/

Page 8: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Brief history■ Early ideas discusses already 2008■ Prototyping work in 2011■ Project Oak started early 2012■ Currently 2 - 8 people actively working on Oak■ up from 2-3 in early Spring

Project background

Page 9: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Key goals■ Backwards compatibility (to some degree)■ Performance especially for concurrent access■ Scalability for huge repositories (> 100M nodes)■ Large number of child nodes (flat hierarchies)

■ Support managed environments (OSGi, Spring)■ Cloud deployments

■ Non-goals■ Hard consistency guaranteed■ Full JCR coverage

Project background

Page 10: Adapt to2012  oak - the new repository

adaptTo() 2012

Project background

■ Subproject of Apache Jackrabbit

http://jackrabbit.apache.org/oak/ [email protected]

http://svn.apache.org/repos/asf/jackrabbit/oak/https://github.com/apache/jackrabbit-oak

Page 11: Adapt to2012  oak - the new repository

adaptTo() 2012

Technical overview

http://www.flickr.com/photos/hugo90/4260716444/

Page 12: Adapt to2012  oak - the new repository

adaptTo() 2012

Technical overview

Page 13: Adapt to2012  oak - the new repository

adaptTo() 2012

Technical overview

Page 14: Adapt to2012  oak - the new repository

adaptTo() 2012

Technical overview

Page 15: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Lightweight tree model ■ Plugins for everything else

■ MVCC■ Stable, immutable snapshot for sessions■ Snapshot isolation■ relaxed first committer wins strategy [1]

■ Branch and merge■ Support for large transactions■ Persisted transient space

Key concepts

[1] http://wiki.apache.org/jackrabbit/Transactional model of the Microkernel based Jackrabbit prototype

Page 16: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Microkernel [1]■ Think hierarchy aware persistence manager■ Stateless■ Scalable■ JSON based API■ Remotable■ Interchangeable■ Portable

Key concepts

[1] http://wiki.apache.org/jackrabbit/RepositoryMicroKernel

Page 17: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Node state model [1]■ Low level abstraction of tree content■ Immutable■ Thread safe

■ Tree model [2]■ Mutable tree model■ Builders for node states■ Transient space

Key concepts

[1] https://github.com/apache/jackrabbit-oak/blob/trunk/doc/nodestate.md[2] https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/README.md

Page 18: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Plugins■ Commit hooks

■ Validators■ Editors

■ Indexing■ Access control, permissions, privileges■ User management■ Namespaces■ Conflict resolution■ Uniqueness constraints■ Node type validation

Key concepts

Page 19: Adapt to2012  oak - the new repository

adaptTo() 2012

Trade offs

http://www.flickr.com/photos/twicepix/1985527617/

Page 20: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Trade consistency for availability■ Write skew [1]■ Cluster sync

■ Limited support for SNS■ Auto created node names■ Naming convention

■ Limited support for orderability■ Graceful degradation

Trade offs

[1] http://wiki.apache.org/jackrabbit/Transactional model of the Microkernel based Jackrabbit prototype

Page 21: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Observation■ Affected by session isolation■ auto-refresh when observation is used

■ Effect based■ exact sequence of operations not reflected

■ Limited support for session specific information

Trade offs

Page 22: Adapt to2012  oak - the new repository

adaptTo() 2012

Where we are now

http://www.flickr.com/photos/exfordy/344603717/

Page 23: Adapt to2012  oak - the new repository

adaptTo() 2012

■ What works already?■ Sling core components■ Granite/CRX quickstart■ CRXDE Lite■ CRX package manager

Current status

Page 24: Adapt to2012  oak - the new repository

adaptTo() 2012

■ What are we working on?■ CQ5 quickstart■ Geometrixx

■ What's next?■ More features: security, versioning, etc...■ Performance/scalability ■ Testing and optimization■ Cloud deployment and clustering

Current status

Page 25: Adapt to2012  oak - the new repository

adaptTo() 2012

Getting involved

http://www.flickr.com/photos/dwmoran/3729048272/

Page 26: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Report on success on failure■ Is the stuff you're working on available on Oak?■ Does it work as expected?■ Any differences to Jackrabbit 2?

■ Describe benchmarks■ performance, scalability

■ Tell us about useful new extension points

How can you help?

Page 27: Adapt to2012  oak - the new repository

adaptTo() 2012

■ Website: http://jackrabbit.apache.org/oak

■ Source code: https://github.com/apache/jackrabbit-oak

■ Mailing lists: {oak-dev, oak-issues, oak-commits} @jackrabbit.apache.org

■ Wiki: http://wiki.apache.org/jackrabbit/Jackrabbit 3

Further information

Page 28: Adapt to2012  oak - the new repository