10
Design and architecture of Apache Jackrabbit Jukka Zitting Jackrabbit committer

Design and architecture of Jackrabbit

Embed Size (px)

DESCRIPTION

Presentation at the Amsterdam JCR community gathering in April 2008

Citation preview

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 ?