Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Design and architecture of Jackrabbit


Published on

Presentation at the Amsterdam JCR community gathering in April 2008

Published in: Technology, News & Politics
  • Be the first to comment

Design and architecture of Jackrabbit

  1. 1. Design and architecture of Apache Jackrabbit Jukka Zitting Jackrabbit committer
  2. 2. Agenda <ul><li>Components structure </li></ul><ul><li>Internal extension points </li></ul><ul><li>Configuration </li></ul><ul><li>Item states </li></ul><ul><li>Clustering </li></ul><ul><li>Indexing </li></ul><ul><li>Future ideas, NGP </li></ul>
  3. 3. Component structure core jcr-com. rmi api spi spi-com. spi2jcr jcr2spi tests text webdav jca webapp ocm-ntm ocm
  4. 4. Internal extension points <ul><li>PersistenceManager </li></ul><ul><li>AccessManager </li></ul><ul><li>SearchIndex </li></ul><ul><li>DataStore </li></ul><ul><li>FileSystem </li></ul>
  5. 5. Configuration <ul><li>XML files </li></ul><ul><ul><li>repository.xml </li></ul></ul><ul><ul><li>workspace.xml </li></ul></ul><ul><li>Fixed structure </li></ul><ul><ul><li>With <param/> entries </li></ul></ul><ul><li>Replace with IoC? </li></ul>
  6. 6. Item states <ul><li>NodeState, PropertyState </li></ul><ul><li>Managed by an ItemStateManager </li></ul><ul><ul><li>Shared </li></ul></ul><ul><ul><li>Local/Session </li></ul></ul><ul><ul><li>Virtual </li></ul></ul><ul><li>Replace with Bundles? </li></ul>
  7. 7. Clustering <ul><li>Shared persistence manager </li></ul><ul><li>Journal to coordinate cluster nodes </li></ul><ul><ul><li>Observation/indexing </li></ul></ul><ul><ul><li>Locking </li></ul></ul><ul><ul><li>Node type changes </li></ul></ul><ul><ul><li>Etc. </li></ul></ul>
  8. 8. Indexing <ul><li>Default implementation based on Lucene </li></ul><ul><li>Full text + “accurate” matches </li></ul><ul><li>Single index per workspace (+ version store)‏ </li></ul><ul><li>Configurable (many new features in 1.4)‏ </li></ul>
  9. 9. Future ideas, NGP‏ <ul><li>Append-only storage </li></ul><ul><ul><li>Inspired by MVCC, Subversion, etc. </li></ul></ul><ul><ul><li>No updates or removes </li></ul></ul><ul><ul><li>Garbage collection </li></ul></ul><ul><li>Optimized for read-only, no refresh! </li></ul><ul><li>Concurrent transactions! </li></ul><ul><li>Point in time recovery </li></ul>
  10. 10. Comments / Questions ?