design and architecture of jackrabbit

10
Design and architecture of Apache Jackrabbit Jukka Zitting Jackrabbit committer

Upload: jukka-zitting

Post on 10-May-2015

3.066 views

Category:

Technology


2 download

DESCRIPTION

Presentation at the Amsterdam JCR community gathering in April 2008

TRANSCRIPT

Page 1: Design and architecture of Jackrabbit

Design and architecture of Apache Jackrabbit

Jukka Zitting

Jackrabbit committer

Page 2: Design and architecture of Jackrabbit

Agenda

• Components structure

• Internal extension points

• Configuration

• Item states

• Clustering

• Indexing

• Future ideas, NGP

Page 3: Design and architecture of Jackrabbit

Component structure

core

jcr-com.

rmi

api spi

spi-com.

spi2jcr

jcr2spitests

text

webdav

jca

webapp

ocm-ntmocm

Page 4: Design and architecture of Jackrabbit

Internal extension points

• PersistenceManager

• AccessManager

• SearchIndex

• DataStore

• FileSystem

Page 5: Design and architecture of Jackrabbit

Configuration

• XML files– repository.xml– workspace.xml

• Fixed structure– With <param/> entries

• Replace with IoC?

Page 6: Design and architecture of Jackrabbit

Item states

• NodeState, PropertyState

• Managed by an ItemStateManager– Shared– Local/Session– Virtual

• Replace with Bundles?

Page 7: Design and architecture of Jackrabbit

Clustering

• Shared persistence manager

• Journal to coordinate cluster nodes– Observation/indexing– Locking– Node type changes– Etc.

Page 8: Design and architecture of Jackrabbit

Indexing

• Default implementation based on Lucene

• Full text + “accurate” matches

• Single index per workspace (+ version store)

• Configurable (many new features in 1.4)

Page 9: Design and architecture of Jackrabbit

Future ideas, NGP

• Append-only storage– Inspired by MVCC, Subversion, etc.– No updates or removes– Garbage collection

• Optimized for read-only, no refresh!

• Concurrent transactions!

• Point in time recovery

Page 10: Design and architecture of Jackrabbit

Comments / Questions ?