Hi: I've read this complete thread, and am responding to the first post on the thread.
On 3/3/07, Bryan Davis <[EMAIL PROTECTED]> wrote:
What persistence manager are you using?
OraclePersistenceManager
This problem isn't as noticeable when you are using embedded Derby and reading/writing to the file system, but when you are doing a network operation to a database server, the network latency in combination with the serialization of all database operations results in a significant performance degradation.
The new bundle persistence manager (which isn't yet in SVN) improves things dramatically since it inlines properties into the node, so loading or persisting a node is only one operation (plus the additional connection for the LOB) instead of one for the node and and one for each property. The bundle persistence manager also uses prepared statements and keeps a PM-level cache of nodes (with properties) and also non-existent nodes (which permits many exists() calls to return without accessing the database).
Hmm... are you saying that it's possible to have better results as compared to what I've reported at http://permalink.gmane.org/gmane.comp.apache.jackrabbit.user/2436 ?
There is a persistence manager with an ASL license called "DataSourcePersistenceManager" which seems to the PM of choice for people using Magnolia (which is backed by Jackrabbit). It also uses prepared statements and eliminates the current single-connection issues associated with all of the stock db PMs. It doesn't seem to have been submitted back to the Jackrabbit project. If you Google for "com.iorgagroup.jackrabbit.core.state.db.DataSourcePersistenceManager" you should be able to find it.
Ack. I'll go download the magnolia source. I tried doing so just now but I got a page not found. I'll try again later, and write to the webmaster at magnolia if required.
Finally, if you always use the Oracle 10g JDBC drivers, you do not need to use the Oracle-specific PMs because the 10g drivers support the standard BLOB API (in addition to the Oracle-specific BLOB API required by the older 9i drivers). This is true even if you are connecting to an older database server as the limitation was in the driver itself. Frankly you should never use the 9i drivers as they are pretty buggy and the 10g drivers represent a complete rewrite. Make sure you use the new driver package because the 10g driver JAR also includes the older 9i drivers for backward-compatibility. The new driver is in a new package (can't remember the exact name off the top of my head).
Oh. Thanks for this information. I'll look up this and ensure that I use the Oracle 10g drivers.
Bryan.
-- Sriram
