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]