jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Jackrabbit Wiki] Update of "PersistenceManagerFAQ" by ThomasMueller
Date Thu, 20 Sep 2007 10:09:16 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jackrabbit Wiki" for change notification.

The following page has been changed by ThomasMueller:
http://wiki.apache.org/jackrabbit/PersistenceManagerFAQ

------------------------------------------------------------------------------
  = Persistence Manager (PM) FAQ =
  
+ === What is a Persistence Manager (PM)? ===
- The responses were mainly gathered from the jackrabbit mailing list. 
- 
- === What's a PM? ===
  The PM is an *internal* Jackrabbit component that handle the persistent storage of content
nodes and properties. Each workspace of a Jackrabbit content repository uses a separate persistence
manager to store the content in that workspace. Also the Jackrabbit version handler uses a
separate persistence manager. The PM sits at the very bottom layer in jackrabbits system architecture.

  Reliability, integrity and performance of the PM are *crucial* to the overall stability
& performance of the repository. If e.g. the data that a PM is based upon is allowed to
change through external means the integrity of the repository would be at risk (think of referential
integrity / node references e.g.).
  
@@ -19, +17 @@

   * org.apache.jackrabbit.core.persistence.bundle.Oracle``Persistence``Manager (Oracle 10
or newer)
   * org.apache.jackrabbit.core.persistence.bundle.Oracle9``Persistence``Manager (Oracle 9)
   * org.apache.jackrabbit.core.persistence.bundle.Bundle``Db``Persistence``Manager (generic
database)
- Storing the data in the file system does not require a database. When using a database,
please note that embedded Java databases do not have network overhead.
+ 
+ Bundle persistence managers store each node together with all the properties as one unit.
If you have large binary properties, please also use DataStore or BLOBStore, otherwise the
performance can get worse than non-bundle persistence managers.
+ 
+ Storing the data in the file system does not require a database. Depending on the file system
and database, database persistence managers are sometimes slower and sometimes faster than
the Bundle``Fs``Persistence``Manager. When using a database, please note that embedded Java
databases do not have network overhead.
+ 
+ === Consistency / Atomicy ===
+ 
+ The database persistence managers are atomic if the database is atomic.
+ 
+ The current file based persistence managers are not always atomic. They do support transactions
in Jackrabbit, the exception is after a crash: When the process is stopped while a transaction
is being written to disk (power failure, process killed, Runtime.halt() called, VM crash),
some data of a transaction may be committed and some not. Theoretically, some nodes may be
corrupt (depending how and when the system crashed). The algorithms used are minimizing this
risk, for example the parent node is written last so in most cases there is no problem even
after a crash. 
  
  === What's the PM responsibility? ===
  The PM interface was never intended as being a general SPI that you could implement in order
to integrate external datasources with proprietary formats (e.g. a customers database). the
reason why we abstracted the PM interface was to leave room for future performance optimizations
that  would not affect the rest of the implementation (e.g. by storing the raw data in a b-tree
based database instead of individual file).
@@ -33, +40 @@

  === Which are the current options? What are the status, pros and cons of each implementation?
===
  
  === SimpleDbPersistenceManager (and subclasses thereof) ===
+  * Status: mature (the default persistence manager)
+  * JDBC based; zero-deployment: schema is automatically created
+  * atomic
+  * fast
+ 
+ === BundleFsPersistenceManager ===
   * Status: mature
+  * very fast if used with DataStore or BLOBStore
-  * the jackrabbit default persistence manager
-  * JDBC based; zero-deployment: schema is automatically created
-  * transactional
  
- === Bundle Persistence Manager ===
+ === BundleDbPersistenceManager (and subclasses thereof) ===
   * Status: mature
-  * fast
-  * transactional
+  * atomic
+  * very fast if used with DataStore or BLOBStore 
+ 
+ === ObjectPersistenceManager ===
+  * Status: mature
+  * persists data in an abstract File``System using a simple binary serialization format
+ 
+ === XMLPersistenceManager ===
+  * Status: mature
+  * persists data in an abstract File``System using XML serialization format
+  * not meant to be used in production environments
+  * if the jvm process is killed the repository might turn inconsistent
+ 
+ === ORMPersistenceManager ===
+  * Status: experimental & unfinished, still being maintained?
+  * Not so simple
+  * rdbms referential integrity (possible, but not implemented yet)
+  * not so easy to configure.
  
  === LocalFileSystem: ===
   * Status: mature
@@ -49, +76 @@

  
  === DbFileSystem: ===
   * Status: mature
+  * atomic
   * meant to be used in combination with a Database Persistence Manager as repository &
workspace file system 
  
- === ObjectPersistenceManager ===
-  * Status: mature
-  * persists data in an abstract File``System using a simple binary serialization format
-  * easy to configure
-  * if the jvm process is killed the repository might turn inconsistent
-  * non transactional
- 
- === XMLPersistenceManager ===
-  * Status: mature
-  * persists data in an abstract File``System using XML serialization format
-  * not meant to be used in production environments
-  * easy to configure
-  * if the jvm process is killed the repository might turn inconsistent
-  * non transactional
- 
- === ORMPersistenceManager ===
-  * Status: experimental & unfinished, still being maintained?
-  * Not so simple
-  * transactional
-  * rdbms referential integrity (possible, but not implemented yet)
-  * not so easy to configure.
- 

Mime
View raw message