design and architecture of jackrabbit
DESCRIPTION
Presentation at the Amsterdam JCR community gathering in April 2008TRANSCRIPT
Design and architecture of Apache Jackrabbit
Jukka Zitting
Jackrabbit committer
Agenda
• Components structure
• Internal extension points
• Configuration
• Item states
• Clustering
• Indexing
• Future ideas, NGP
Component structure
core
jcr-com.
rmi
api spi
spi-com.
spi2jcr
jcr2spitests
text
webdav
jca
webapp
ocm-ntmocm
Internal extension points
• PersistenceManager
• AccessManager
• SearchIndex
• DataStore
• FileSystem
Configuration
• XML files– repository.xml– workspace.xml
• Fixed structure– With <param/> entries
• Replace with IoC?
Item states
• NodeState, PropertyState
• Managed by an ItemStateManager– Shared– Local/Session– Virtual
• Replace with Bundles?
Clustering
• Shared persistence manager
• Journal to coordinate cluster nodes– Observation/indexing– Locking– Node type changes– Etc.
Indexing
• Default implementation based on Lucene
• Full text + “accurate” matches
• Single index per workspace (+ version store)
• Configurable (many new features in 1.4)
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
Comments / Questions ?