Author: arminw
Date: Mon Nov 13 15:30:53 2006
New Revision: 474575
URL: http://svn.apache.org/viewvc?view=rev&rev=474575
Log:
update docs
Modified:
db/ojb/branches/OJB_1_0_RELEASE/build.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/getting-started.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/odmg-guide.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/performance.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/sequencemanager.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/mail-archives.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/site.xml
db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/status.xml
Modified: db/ojb/branches/OJB_1_0_RELEASE/build.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/build.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/build.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/build.xml Mon Nov 13 15:30:53 2006
@@ -17,10 +17,6 @@
*/
-->
<!-- @version $Id$ -->
-<!--
- ObJectRelationalBridge ANT build configuration.
- initial author: Thomas Mahler
--->
<project name="ObJectRelationalBridge" default="jar" basedir=".">
@@ -232,7 +228,6 @@
<arg value="${JDBC}"/>
</java>
<replace dir="${build.src}" token="$$VERSION$$" value="${version}"/>
- <replace dir="${build.src}" token="$$VERSION$$" value="${version}"/>
<replace dir="${build.src}" token="$$MAJOR$$" value="${major}"/>
<replace dir="${build.src}" token="$$MINOR$$" value="${minor}"/>
<replace dir="${build.src}" token="$$BUILD$$" value="${build}"/>
@@ -361,10 +356,16 @@
</target>
+ <!-- ================================================================== -->
+ <!-- prepare test database -->
+ <!-- ================================================================== -->
<target name="prepare-testdb"
description="prepare testdb using torque or ddlutils"
depends="prepare-testdb-torque, prepare-testdb-ddlutils"/>
-
+
+ <!-- ================================================================== -->
+ <!-- prepare test database using torque -->
+ <!-- ================================================================== -->
<target name="prepare-testdb-torque"
description="prepare testdb using torque"
depends="prepare, prepare-repository"
@@ -401,6 +402,9 @@
</target>
+ <!-- ================================================================== -->
+ <!-- prepare testdb using DdlUtils -->
+ <!-- ================================================================== -->
<target name="prepare-testdb-ddlutils"
description="prepare testdb using DdlUtils"
depends="prepare, prepare-repository"
@@ -890,6 +894,12 @@
<copy todir="${build.doc}">
<fileset dir="${src.forrest}"/>
</copy>
+
+ <!-- Prepare release-notes doc -->
+ <loadfile property="release-notes.content" srcfile="${basedir}/release-notes.txt"/>
+ <replace file="${build.doc}/src/documentation/content/xdocs/release-notes.xml" token="@@content@@" value="${release-notes.content}"/>
+
+
<!-- clean forrest build -->
<ant antfile="${env.FORREST_HOME}/main/forrest.build.xml"
dir="${build.doc}"
@@ -924,6 +934,7 @@
<param name="forrest-mode" value="site"/>
</antcall>
<!-- Finally we can copy the generated documentation to its designated place -->
+ <delete dir="${doc}"/>
<mkdir dir="${doc}"/>
<copy todir="${doc}">
<fileset dir="${forrest.output.dir}"/>
@@ -1490,8 +1501,6 @@
</target>
<target name="perf-test-jar" depends="prepare">
-
-
<!-- compile perf classes -->
<javac srcdir="${build.srctest}"
includes="**/performance/*"
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/getting-started.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/getting-started.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/getting-started.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/getting-started.xml Mon Nov 13 15:30:53 2006
@@ -134,7 +134,7 @@
for details). Therefore, this directory also contains the build script of Torque, but
you won't need to invoke it directly.
</dd>
- <dt><strong>src/java</strong></dt>
+ <dt><strong>src/test</strong></dt>
<dd>
Place your unit tests in here.
</dd>
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/odmg-guide.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/odmg-guide.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/odmg-guide.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/odmg-guide.xml Mon Nov 13 15:30:53 2006
@@ -81,8 +81,10 @@
auto_update="none"
</li>
<li>
- auto-delete="none" (in this case the reference between the objects, the foreign key entry will
- be nullified) or auto-delete="object" (to enable cascading delete, since OJB 1.0.4!)
+ auto-delete="none", disable cascading delete, in this case the foreign key will
+ be nullified, but the referenced object will not be deleted too) or use
+ <br/>
+ auto-delete="object" (to enable cascading delete, since OJB 1.0.4!)
</li>
</ul>
<note>
@@ -321,6 +323,36 @@
feature and to disable OJB's object ordering.
</td>
</tr>
+ <tr>
+ <td>
+ OptimizedTransientObjectDetection
+ </td>
+ <td>
+ If set 'true' an optimized and performant way is used to detect the
+ state (persistent/transient) of an object. The detection of transient
+ objects could be costly (e.g. if a select of ID in database is used to
+ check if object already exists) OJB does in the following order:
+ <ol>
+ <li>
+ Check if the object Identity mark the specified object as transient.
+ If this is 'false' the object has populated primary key fields,
+ if 'true' at least one PK field is <em>null</em>
+ and the object is transient.
+ </li>
+ <li>
+ Then we check if the object was already registered in current transaction.
+ If it's already registered OJB ask for current state (transient/persistent).
+ </li>
+ <li>
+ If the primary key fields (all fields are populated) are defined/mapped
+ as 'autoIncrement' fields and 'optimizedTransientObjectDetection' is enabled,
+ OJB assume that the object is persistent. If the PK fields are not
+ 'autoIncrement' fields or the optimized detection is disabled a database
+ "exists object"-query is performed to check if the object is persistent or transient.
+ </li>
+ </ol>
+ </td>
+ </tr>
<!--<tr>-->
<!--<td>-->
<!--NoteUserOrder-->
@@ -432,34 +464,34 @@
<br/>
Use this methods to change the used OQL query result class at runtime.
Description can be found in
- <a href="#configuration">
- <em>Configuration Properties</em>
- </a> section
- and in javadoc of
- <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
+ <a href="#configuration"><em>Configuration Properties</em></a> section
+ and in javadoc of <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
</li>
<li>
is/setImpliciteWriteLocks
<br/>
- Use this methods to global change the associated locking type at runtime when implicit
- locking is used.
+ Use this methods to change the associated locking type at runtime for the whole
+ applicationwhen implicit locking is used.
Description can be found in
- <a href="#configuration">
- <em>Configuration Properties</em>
- </a> section
- and in javadoc of
- <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
+ <a href="#configuration"><em>Configuration Properties</em> </a> section
+ and in javadoc of <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
</li>
<li>
is/setOrdering
<br/>
Use this methods to global enable/disable OJB's object ordering algorithm.
Description can be found in
- <a href="#configuration">
- <em>Configuration Properties</em>
- </a> section
- and in javadoc of
- <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
+ <a href="#configuration"><em>Configuration Properties</em></a> section
+ and in javadoc of <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
+ </li>
+ <li>
+ is/setOptimizedTransientObjectDetection
+ <br/>
+ Use this method to global enable/disable use a performance-optimized
+ check to differ persistent/transient objects.
+ Description can be found in
+ <a href="#configuration"><em>Configuration Properties</em></a> section
+ and in javadoc of <a href="ext:odmg-implementation-ext">ImplementationExt</a>.
</li>
<!--<li>-->
<!--is/setNoteUserOrder-->
@@ -513,6 +545,12 @@
</li>
<li>
is/setOrdering
+ <br/>
+ Description can be found in javadoc of
+ <a href="ext:odmg-transaction-ext">TransactionExt</a>.
+ </li>
+ <li>
+ is/setOptimizedTransientObjectDetection
<br/>
Description can be found in javadoc of
<a href="ext:odmg-transaction-ext">TransactionExt</a>.
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/performance.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/performance.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/performance.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/performance.xml Mon Nov 13 15:30:53 2006
@@ -95,6 +95,10 @@
<ul>
<li>
<code>perf-test</code> single/multi-threaded performance (stress) test of PB/ODMG api against native JDBC
+ <note>
+ The <em>performance test</em> output is written to console and in a
+ file called <em>OJB-Performance-Result.txt</em>.
+ </note>
</li>
<li>
<code>performance</code> single-threaded test, OJB API implementations (PB, ODMG) against native JDBC
@@ -153,10 +157,10 @@
shouldn't cause any problems.
</p>
<p>
- Per default OJB use a in-memory hsql database, by changing the
+ By default OJB use HSQL database (in-memory mode), by changing the
<a href="site:repository/jdbc-connection-descriptor">JdbcConnectionDescriptor</a>
- in the <em>repository.xml</em> file or modify the <em>build.properties</em> file when
- running OJB out of the box you can point to your specific RDBMS.
+ in the <em>repository.xml</em> file or by modifing the <em>build.properties</em> file when
+ running OJB out of the box, you can point to your specific RDBMS.
<br/>
Please refer to this
<a href="site:platform/select-profile">document for details</a>.
@@ -168,13 +172,66 @@
<source><![CDATA[
ant perf-test]]></source>
<p>
- A typical output of this test, using OJB against in-memory hsql
- (batch statements and pooled prepared statements are not used)
- looks like this:
+ If you want to play with different test settings, e.g. settings conform to
+ your requirement, modify the ant target for this test.
+ <br/>
+ To change the test properties go to target
+ <code>perf-test</code>
+ in the
+ <code>build.xml</code> file and change the program parameter.
+ <br/>
+ The test needs five parameter:
+ <br/>- A comma separated list of the test implementation classes (no blanks!)
+ <br/>- The number of test loops
+ <br/>- The number of concurrent threads
+ <br/>- The number of managed objects per thread
+ <br/>- The desired test mode.
+ <code>false</code> means run in
+ performance mode,
+ <code>true</code> means run in stress mode
+ (useful only for developer to check stability).
+ </p>
+ <source><![CDATA[
+<target name="perf-test" depends="prepare-testdb"
+ description="Simple performance benchmark and stress test for PB- and ODMG-api">
+ <java fork="yes" classname="org.apache.ojb.performance.PerfMain"
+ dir="${build.test}/ojb" taskname="ojb" failonerror="true" >
+ <classpath refid="runtime-classpath"/>
+ <!-- comma separated list of the PerfTest implementations -->
+ <arg value=
+ "org.apache.ojb.compare.OJBPerfTest$JdbcPerfTest,
+ org.apache.ojb.compare.OJBPerfTest$PBPerfTest,
+ org.apache.ojb.compare.OJBPerfTest$ODMGPerfTest"
+ />
+ <!-- test loops, default was 6 -->
+ <arg value="6"/>
+ <!-- performed threads, default was 12 -->
+ <arg value="12"/>
+ <!-- number of managed objects per thread, default was 500 -->
+ <arg value="500"/>
+ <!-- if 'false' we use performance mode, 'true' we do run in stress mode -->
+ <arg value="false"/>
+ <!-- if 'true' all log messages will be print -->
+ <arg value="true"/>
+ <jvmarg value="-Xms128m"/>
+ <jvmarg value="-Xmx256m"/>
+ </java>
+ <!-- do some cleanup -->
+ <ant target="copy-testdb"/>
+</target>]]></source>
+ <p>
+ It's easy to change target database. Please
+ refer to this
+ <a href="site:platform/select-profile">document for details</a>.
+ </p>
+ <p>
+ A typical output of this test, using OJB against in-memory HSQL database
+ (connection pooling and pooled prepared statements are enabled, objects put
+ to a second-level cache, no batching) looks like this:
</p>
<source><![CDATA[
[ojb] ================================================================================================
-[ojb] OJB PERFORMANCE TEST SUMMARY, Fri Feb 03 12:21:30 CET 2006
+[ojb] OJB PERFORMANCE TEST SUMMARY, Mon Oct 30 14:02:52 CET 2006
[ojb] ------------------------------------------------------------------------------------------------
[ojb] 12 concurrent threads, handle 500 objects per thread
[ojb] 500 INSERT operations per test instance
@@ -188,11 +245,11 @@
[ojb] API Total Insert Fetch Fetch 2 by Id Update Delete
[ojb] [%] [msec] [msec] [msec] [msec] [msec] [msec]
[ojb] ------------------------------------------------------------------------------------------------
-[ojb] JDBC 100 587(100%) 25(100%) 26(100%) 255(5100%) 531(100%) 211(100%)
-[ojb] PB 164 1362(232%) 80(320%) 75(288%) 5(100%) 897(168%) 269(127%)
-[ojb] ODMG 233 1716(292%) 102(408%) 98(376%) 9(180%) 1276(240%) 604(286%)
+[ojb] JDBC 100 159(100%) 45(109%) 26(100%) 127(2116%) 185(100%) 198(159%)
+[ojb] PB 140 523(328%) 47(114%) 68(261%) 6(100%) 242(130%) 148(119%)
+[ojb] ODMG 151 598(376%) 41(100%) 58(223%) 6(100%) 290(156%) 124(100%)
[ojb] ================================================================================================
-[ojb] PerfTest takes 72 [sec]]]></source>
+[ojb] PerfTest takes 36 [sec]]]></source>
<p>
This test run shows the overhead caused by the O/R layer compared to handcoded sql
statements. Most overhead result in populate the two-level cache which is useless
@@ -209,23 +266,26 @@
[ojb] API Total Insert Fetch Fetch 2 by Id Update Delete
[ojb] [%] [msec] [msec] [msec] [msec] [msec] [msec]
[ojb] ------------------------------------------------------------------------------------------------
-[ojb] JDBC 100 6064(100%) 56(107%) 55(100%) 1326(14733%)6259(154%) 3973(125%)
-[ojb] PB 105 11143(183%) 62(119%) 80(145%) 9(100%) 4062(100%) 3178(100%)
-[ojb] ODMG 113 11055(182%) 52(100%) 67(121%) 44(488%) 5067(124%) 3741(117%)
+[ojb] PB 100 4401(179%) 14(100%) 16(100%) 3(100%) 909(100%) 709(100%)
+[ojb] ODMG 103 3863(157%) 22(157%) 22(137%) 6(200%) 1292(142%) 1024(144%)
+[ojb] JDBC 109 2453(100%) 19(135%) 16(100%) 648(21600%) 2390(262%) 1089(153%)
[ojb] ================================================================================================
-[ojb] PerfTest takes 430 [sec]]]></source>
+[ojb] PerfTest takes 165 [sec]]]></source>
<p>
You can see that the overhead caused by the O/R layer disappears bit by bit because
the database latency and the network traffic is much longer than the OJB overhead.
+ Only on insert of new data OJB couldn't keep up with the JDBC-layer. Because of using
+ a cache OJB show a dramatic better performance when doing a "lookup by primary key
+ (by Identity)".
</p>
<p>
- If we now enable prepared statement pooling (for OJB and the JDBC layer) and batch
- statements (for OJB only - unfair game but adding all these features to the sample
- JDBC-layer is too complex) the result will be completely different.
+ If we now enable batch statements (for OJB only - unfair game but adding all
+ these features to the sample JDBC-layer is too complex) the result will be
+ completely different.
<br/>
- The JDBC-layer show about 50% better performance because of the prepared statement
- pooling. OJB with prepared stament pooling and enabled batch mode shows about five
- times better performance for insert, update and delete operations.
+ The JDBC-layer show the same performance because nothing changed.
+ OJB with enabled batch mode shows about 4-11 times better performance
+ for insert, update and delete operations.
</p>
<source><![CDATA[
....
@@ -233,11 +293,11 @@
[ojb] API Total Insert Fetch Fetch 2 by Id Update Delete
[ojb] [%] [msec] [msec] [msec] [msec] [msec] [msec]
[ojb] ------------------------------------------------------------------------------------------------
-[ojb] PB 100 2176(100%) 41(100%) 45(100%) 8(100%) 311(104%) 52(100%)
-[ojb] ODMG 117 2428(111%) 80(195%) 70(155%) 18(225%) 297(100%) 182(350%)
-[ojb] JDBC 417 4078(187%) 69(168%) 65(144%) 1432(17900%)4224(1422%) 1110(2134%)
+[ojb] ODMG 100 1396(100%) 24(120%) 19(126%) 4(133%) 102(100%) 66(108%)
+[ojb] PB 105 1453(104%) 23(115%) 24(160%) 3(100%) 132(129%) 61(100%)
+[ojb] JDBC 386 2530(181%) 20(100%) 15(100%) 398(13266%) 2450(2401%) 814(1334%)
[ojb] ================================================================================================
-[ojb] PerfTest takes 139 [sec]]]></source>
+[ojb] PerfTest takes 86 [sec]]]></source>
<p>
Now OJB trounce the JDBC-layer when running a mass test.
</p>
@@ -250,12 +310,14 @@
a few objects per transaction.
<br/>
If we chose a more realistic scenario e.g. 30 threads handle 20 objects per thread
- (same configuration settings as above, OJB batch mode enabled) nevertheless the result
- is near-balance:
+ the overhead of the O/R layer become more and more important, because the time of the
+ network traffic is drastic reduced (compared to handle 500 objects).
+ With the same configuration settings as above - OJB batch mode enabled - nevertheless
+ the result is near-balance:
</p>
<source><![CDATA[
[ojb] ================================================================================================
-[ojb] OJB PERFORMANCE TEST SUMMARY, Fri Feb 17 13:08:27 CET 2006
+[ojb] OJB PERFORMANCE TEST SUMMARY, Mon Oct 30 17:06:29 CET 2006
[ojb] ------------------------------------------------------------------------------------------------
[ojb] 30 concurrent threads, handle 20 objects per thread
[ojb] 20 INSERT operations per test instance
@@ -269,11 +331,11 @@
[ojb] API Total Insert Fetch Fetch 2 by Id Update Delete
[ojb] [%] [msec] [msec] [msec] [msec] [msec] [msec]
[ojb] ------------------------------------------------------------------------------------------------
-[ojb] PB 100 135(100%) 14(280%) 11(183%) 3(100%) 19(100%) 11(100%)
-[ojb] ODMG 123 151(111%) 11(220%) 14(233%) 4(133%) 43(226%) 16(145%)
-[ojb] JDBC 170 137(101%) 5(100%) 6(100%) 35(1166%) 124(652%) 25(227%)
+[ojb] ODMG 100 16(145%) 1(100%) 1(100%) 0(0%) 4(100%) 2(100%)
+[ojb] PB 107 19(172%) 2(200%) 1(100%) 0(0%) 4(100%) 2(100%)
+[ojb] JDBC 159 11(100%) 1(100%) 1(100%) 6(600%) 10(250%) 10(500%)
[ojb] ================================================================================================
-[ojb] PerfTest takes 144 [sec]]]></source>
+[ojb] PerfTest takes 73 [sec]]]></source>
<p>
Even if we disable the OJB batch mode to make the test fair, the result is near-balance:
</p>
@@ -282,81 +344,25 @@
[ojb] API Total Insert Fetch Fetch 2 by Id Update Delete
[ojb] [%] [msec] [msec] [msec] [msec] [msec] [msec]
[ojb] ------------------------------------------------------------------------------------------------
-[ojb] JDBC 100 174(100%) 10(100%) 8(100%) 51(5100%) 196(175%) 39(100%)
-[ojb] ODMG 126 384(220%) 15(150%) 11(137%) 0(0%) 124(110%) 69(176%)
-[ojb] PB 158 510(293%) 18(180%) 19(237%) 7(700%) 112(100%) 91(233%)
+[ojb] JDBC 100 12(100%) 1(100%) 1(100%) 6(600%) 13(118%) 9(100%)
+[ojb] PB 142 36(300%) 2(200%) 1(100%) 0(0%) 11(100%) 11(122%)
+[ojb] ODMG 156 34(283%) 3(300%) 2(200%) 0(0%) 18(163%) 11(122%)
[ojb] ================================================================================================
-[ojb] PerfTest takes 215 [sec]
- ]]></source>
+[ojb] PerfTest takes 117 [sec]]]></source>
<p>
- As you can see OJB show a overall good performance compared with a JDBC-layer
+ As you can see OJB show an overall good performance compared with a JDBC-layer
against a RDMS.
+ <br/>
Hence the interesting result: if you have an application that has a lot of object lookups,
OJB can be faster than a native JDBC application (without caching extensions) or if
- the JDBC-layer doesn't use batch statements, OJB can overall show a better performance.
+ the JDBC-layer doesn't use batch statements, OJB can overall show a much better
+ performance.
</p>
<note>
- The <em>performance test</em> output is written to console and in a
- file called <em>OJB-Performance-Result.txt</em>.
- <br/>
- <br/>
This simple test only compares the power of OJB and a JDBC-layer
relating to a simple "flat" POJO object. Dealing with complex object graphs
could give different results.
</note>
- <p>
- If you want to play with different test settings, e.g. settings conform to
- your requirement, modify the ant target for this test.
- <br/>
- To change the test properties go to target
- <code>perf-test</code>
- in the
- <code>build.xml</code> file and change the program parameter.
- <br/>
- The test needs five parameter:
- <br/>- A comma separated list of the test implementation classes (no blanks!)
- <br/>- The number of test loops
- <br/>- The number of concurrent threads
- <br/>- The number of managed objects per thread
- <br/>- The desired test mode.
- <code>false</code> means run in
- performance mode,
- <code>true</code> means run in stress mode
- (useful only for developer to check stability).
- </p>
- <source><![CDATA[
-<target name="perf-test" depends="prepare-testdb"
- description="Simple performance benchmark and stress test for PB- and ODMG-api">
- <java fork="yes" classname="org.apache.ojb.performance.PerfMain"
- dir="${build.test}/ojb" taskname="ojb" failonerror="true" >
- <classpath refid="runtime-classpath"/>
- <!-- comma separated list of the PerfTest implementations -->
- <arg value=
- "org.apache.ojb.compare.OJBPerfTest$JdbcPerfTest,
- org.apache.ojb.compare.OJBPerfTest$PBPerfTest,
- org.apache.ojb.compare.OJBPerfTest$ODMGPerfTest"
- />
- <!-- test loops, default was 6 -->
- <arg value="6"/>
- <!-- performed threads, default was 12 -->
- <arg value="12"/>
- <!-- number of managed objects per thread, default was 500 -->
- <arg value="500"/>
- <!-- if 'false' we use performance mode, 'true' we do run in stress mode -->
- <arg value="false"/>
- <!-- if 'true' all log messages will be print -->
- <arg value="true"/>
- <jvmarg value="-Xms128m"/>
- <jvmarg value="-Xmx256m"/>
- </java>
- <!-- do some cleanup -->
- <ant target="copy-testdb"/>
-</target>]]></source>
- <p>
- It's easy to change target database. Please
- refer to this
- <a href="site:platform/select-profile">document for details</a>.
- </p>
</section>
</section>
@@ -502,23 +508,23 @@
[jdbc] .[performance] INFO: Test for JDBC
[jdbc] [performance] INFO:
- [jdbc] [performance] INFO: inserting 1500 Objects: 78 msec
- [jdbc] [performance] INFO: updating 1500 Objects: 47 msec
- [jdbc] [performance] INFO: querying 1500 Objects: 31 msec
- [jdbc] [performance] INFO: querying 1500 Objects: 31 msec
- [jdbc] [performance] INFO: fetching 1500 Objects: 16 msec
- [jdbc] [performance] INFO: deleting 1500 Objects: 15 msec
+ [jdbc] [performance] INFO: inserting 1500 Objects: 47 msec
+ [jdbc] [performance] INFO: updating 1500 Objects: 31 msec
+ [jdbc] [performance] INFO: querying 1500 Objects: 16 msec
+ [jdbc] [performance] INFO: querying 1500 Objects: 15 msec
+ [jdbc] [performance] INFO: fetching 1500 Objects: 0 msec
+ [jdbc] [performance] INFO: deleting 1500 Objects: 16 msec
....
[jdbc] Time: 8,75
[jdbc] OK (1 test)
[ojb] .[performance] INFO: Test for PB-api
[ojb] [performance] INFO:
- [ojb] [performance] INFO: inserting 1500 Objects: 93 msec
- [ojb] [performance] INFO: updating 1500 Objects: 94 msec
- [ojb] [performance] INFO: querying 1500 Objects: 16 msec
- [ojb] [performance] INFO: querying 1500 Objects: 16 msec
- [ojb] [performance] INFO: fetching 1500 Objects: 62 msec
+ [ojb] [performance] INFO: inserting 1500 Objects: 46 msec
+ [ojb] [performance] INFO: updating 1500 Objects: 63 msec
+ [ojb] [performance] INFO: querying 1500 Objects: 0 msec
+ [ojb] [performance] INFO: querying 1500 Objects: 15 msec
+ [ojb] [performance] INFO: fetching 1500 Objects: 31 msec
[ojb] [performance] INFO: deleting 1500 Objects: 32 msec
....
[ojb] Time: 5,672
@@ -526,12 +532,12 @@
[odmg] .[performance] INFO: Test for ODMG-api
[odmg] [performance] INFO:
- [odmg] [performance] INFO: inserting 1500 Objects: 188 msec
- [odmg] [performance] INFO: updating 1500 Objects: 250 msec
- [odmg] [performance] INFO: querying 1500 Objects: 531 msec
- [odmg] [performance] INFO: querying 1500 Objects: 516 msec
+ [odmg] [performance] INFO: inserting 1500 Objects: 78 msec
+ [odmg] [performance] INFO: updating 1500 Objects: 110 msec
+ [odmg] [performance] INFO: querying 1500 Objects: 0 msec
+ [odmg] [performance] INFO: querying 1500 Objects: 16 msec
[odmg] [performance] INFO: fetching 1500 Objects: 47 msec
- [odmg] [performance] INFO: deleting 1500 Objects: 171 msec
+ [odmg] [performance] INFO: deleting 1500 Objects: 62 msec
....
[odmg] Time: 13,75
[odmg] OK (1 test)]]></source>
@@ -545,13 +551,8 @@
This is caused by warming up effects of JVM and OJB.
</li>
<li>
- ODMG is much slower than PB or JDBC. This is due to the complex object level
- transaction management it is doing and the fact that ODMG doesn't have a specific
- method to lookup objects by it's identity. The second reason is responsible for
- slow <em>querying</em> results, because in test always a complex query is done for
- each object. It is possible to use the PB-api within ODMG, then the query by identity
- will be as fast as in PB-api - see
- <a href="#multithreaded-performance">results for multi-threaded test</a>.
+ ODMG is slower than PB or the JDBC layer. This is due to the complex object level
+ transaction management it is doing.
</li>
<li>
You can see that for HSQLDB operations like insert and update are faster with
@@ -562,8 +563,10 @@
is much faster than ordinary database servers and caching the persistent objects
when using a in-memory database is pure overhead.
<br/>
- If you work against Oracle or DB2 the percentual OJB overhead is going down a
- lot (to 10 - 15 %), as the database latency is much longer than the OJB overhead.
+ If you work against Oracle or DB2 the percentual overall OJB overhead is going down a
+ lot (to 10 - 20 %), as the database latency and network overhead is much longer than
+ the OJB overhead and when running OJB in batch mode it will beat a none optimized
+ JDBC layer as shown in <a href="#multithreaded-performance">results for multi-threaded test</a>
</li>
</ul>
<p>
@@ -592,27 +595,19 @@
<ul>
<li>
<p>
- The API you use, e.g. PB-api is in many cases faster then the ODMG-api. See
- <a href="site:faq/api-differences">which API</a> for more information.
+ The used API. The PB-api is in many cases faster then the ODMG-api (when using
+ simple, non-complex object hierarchies). See
+ <a href="site:faq/api-differences">which API</a> for more information. It's
+ also possible to combine both API.
</p>
</li>
- <li><p>The <em>autocommit</em> setting of used connections. For best performance
- it's recommended to set <em>autocommit</em> 'false' in the <em>jdbc-driver</em>
- or to use 'useAutoCommit="2"' setting in
- <a href="site:repository/jdbc-connection-descriptor">repository file database setting</a>
- to avoid <code>Connection.setAutoCommit(...)</code> calls by OJB.</p>
- </li>
- <li><p>Use of batch statements by enable <em>batch mode</em> (when supported by the DB) when
- insert/update/delete many objects of the same type (e.g. insert ProductGroup with 20 Article objects).
+ <li><p>Use of batch statements. Enable <em>batch mode</em> (if supported by the DB) when
+ insert/update/delete many objects of the same type (e.g. insert ProductGroup with
+ 20 Article objects).
See <a href="site:repository/jdbc-connection-descriptor"><em>jdbc-connection-descriptor</em></a>
<em>batch-mode</em> attribute for more information.</p>
</li>
- <li><p><a href="site:advanced-technique/persistent-field"><code>PersistentField</code> class
- implementation</a>. See <a href="ext:ojb.properties">OJB.properties section
- 'PersistentFieldClass'</a> to change the implementation.</p>
- </li>
- <li><p>The used <a href="site:object-cache">cache implementation</a>.</p></li>
- <li><p>The <em>JDBC driver</em> settings (e.g. statement caching on/off).</p></li>
+ <li><p>The <em>JDBC driver</em> settings (e.g. statement caching on/off, ...).</p></li>
<li><p>ConnectionFactory implementation / Connection pooling settings (e.g. prepared
statement caching if the jdbc-driver doesn't support this feature).
See <a href="site:faq">connection pooling</a> for more information.</p>
@@ -621,6 +616,17 @@
<a href="site:sequence-manager">sequence manager</a> for
more information.</p>
</li>
+ <li><p>The <em>autocommit</em> setting of used connections. Some databases show better
+ performance when <em>autocommit</em> is set 'false' in the <em>jdbc-driver</em>
+ or 'useAutoCommit="2"' setting is used in
+ <a href="site:repository/jdbc-connection-descriptor">the jdbc-connection-descriptor</a>
+ to avoid <code>Connection.setAutoCommit(...)</code> calls by OJB.</p>
+ </li>
+ <li><p>The <a href="site:advanced-technique/persistent-field"><code>PersistentField</code> class
+ implementation</a>. See <a href="ext:ojb.properties">OJB.properties section
+ 'PersistentFieldClass'</a> to change the implementation.</p>
+ </li>
+ <li><p>The used <a href="site:object-cache">cache implementation</a>.</p></li>
<li><p>PersistenceBroker pool size. See
<a href="ext:ojb.properties">OJB.properties</a> for more information.</p>
</li>
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/sequencemanager.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/sequencemanager.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/sequencemanager.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/docu/guides/sequencemanager.xml Mon Nov 13 15:30:53 2006
@@ -136,9 +136,9 @@
<p>
The mandatory
<em>className</em> attribute needs the <strong>full-qualified class name</strong>
- of the desired sequence-manager implementation or the OJB-shortcut name (since OJB 1.0.5, all
- shipped implementations can be declared via a shortcut name - more details see description
- of the implementation).
+ of the desired sequence-manager implementation or the <strong>OJB-shortcut name</strong>
+ (since OJB 1.0.5, all shipped implementations can be declared via a shortcut
+ name - more details see description of the implementation class).
<br/>
If a implementation needs configuration properties you pass them using
<a href="site:repository/custom-attribute">custom attribute</a> tags with
@@ -505,11 +505,11 @@
<a href="site:repository/jdbc-connection-descriptor">jdbc-connection-descriptor</a> or
<a href="site:repository/field-descriptor">field-descriptor</a>
(<a href="#per-field-sequence">since OJB 1.0.5</a>) and specifiy
- the <em>full class name</em> or the shortcut name (since OJB 1.0.5) <em>nextval</em>:
+ the <em>full class name</em> or the shortcut name (since OJB 1.0.5) <em>sequence</em>:
</p>
<source><![CDATA[
<!--<sequence-manager className="org.apache.ojb.broker.util.sequence.SequenceManagerNextValImpl">-->
-<sequence-manager className="nextval">
+<sequence-manager className="sequence">
<attribute attribute-name="seq.start" attribute-value="200000"/>
<attribute attribute-name="seq.autoNaming" attribute-value="true"/>
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/mail-archives.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/mail-archives.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/mail-archives.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/mail-archives.xml Mon Nov 13 15:30:53 2006
@@ -49,6 +49,18 @@
</tr>
<tr>
+ <td>MARC</td>
+ <td>
+ <a href="ext:ojb/archives/theaimsgroup/user">ojb-user</a>
+ </td>
+ <td>
+ <a href="ext:ojb/archives/theaimsgroup/dev">ojb-dev</a>
+ </td>
+ <td>yes</td>
+ <td>--</td>
+ </tr>
+
+ <tr>
<td>The Mail Archive</td>
<td>
<a href="ext:ojb/archives/mail-archive/user">ojb-user</a>
@@ -84,17 +96,6 @@
<td>--</td>
</tr>
- <tr>
- <td>MARC</td>
- <td>
- <a href="ext:ojb/archives/theaimsgroup/user">ojb-user</a>
- </td>
- <td>
- <a href="ext:ojb/archives/theaimsgroup/dev">ojb-dev</a>
- </td>
- <td>yes</td>
- <td>--</td>
- </tr>
</table>
</section>
</body>
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/site.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/site.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/site.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/site.xml Mon Nov 13 15:30:53 2006
@@ -38,7 +38,7 @@
<features label="Features" href="features.html"/>
<!-- faq label="FAQ's" href="site:faq" / -->
<status label="Status" href="status.html"/>
- <release-notes label="Release Notes" href="ext:release-notes"/>
+ <release-notes label="Release Notes" href="release-notes.html"/>
<references label="References" href="references.html"/>
<wiki label="Wiki" href="ext:ojb/wiki-page"/>
<mail-lists label="Mailing Lists" href="mail-lists.html"/>
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/status.xml?view=diff&rev=474575&r1=474574&r2=474575
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/status.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/doc/forrest/src/documentation/content/xdocs/status.xml Mon Nov 13 15:30:53 2006
@@ -28,7 +28,7 @@
</p>
<p>
Any known issues, including for the parts of OJB that are <em>stable</em>,
- can be found in <a href="ext:release-notes">release-notes.txt</a>.
+ can be found in <a href="site:release-notes">release-notes</a>.
</p>
<table class="ojb">
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.