adapt to2012 oak - the new repository
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.TRANSCRIPT
![Page 1: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/1.jpg)
APACHE SLING & FRIENDS TECH MEETUPBERLIN, 26-28 SEPTEMBER 2012
Jackrabbit Oakthe next generation content repository
![Page 2: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/2.jpg)
adaptTo() 2012
About us
Jukka Zitting, Michael Dürig{jzitting, mduerig}@adobe.com
![Page 3: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/4.jpg)
adaptTo() 2012
Design trajectory
http://www.flickr.com/photos/belsymington/4102783610/
![Page 5: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/5.jpg)
adaptTo() 2012
Time for a redesign
http://www.flickr.com/photos/ejcallow/6150622583/
![Page 6: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/6.jpg)
adaptTo() 2012
Time for a redesign
http://www.flickr.com/photos/spiderdog/3960915963/
![Page 7: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/7.jpg)
adaptTo() 2012
Time for a redesign
http://www.flickr.com/photos/daveseven/6006652787/
![Page 8: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/11.jpg)
adaptTo() 2012
Technical overview
http://www.flickr.com/photos/hugo90/4260716444/
![Page 12: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/12.jpg)
adaptTo() 2012
Technical overview
![Page 13: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/13.jpg)
adaptTo() 2012
Technical overview
![Page 14: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/14.jpg)
adaptTo() 2012
Technical overview
![Page 15: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/19.jpg)
adaptTo() 2012
Trade offs
http://www.flickr.com/photos/twicepix/1985527617/
![Page 20: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/22.jpg)
adaptTo() 2012
Where we are now
http://www.flickr.com/photos/exfordy/344603717/
![Page 23: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/25.jpg)
adaptTo() 2012
Getting involved
http://www.flickr.com/photos/dwmoran/3729048272/
![Page 26: Adapt to2012 oak - the new repository](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.us/reader034/viewer/2022042700/554f5fb4b4c905bb178b463a/html5/thumbnails/28.jpg)