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"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]