|
It is the DataNucleus projects' committed aim to provide the best performance possible, and to
publish benchmarks so that users can judge for themselves the performance of the persistence solution.
If anybody has a publically available benchmark of Java object persistence that they want to compare
DataNucleus on, we would be interested in contributing to the exercise so we can see how DataNucleus
performs.
Our attitude is that :-
-
Public benchmarks are there for a reason and provide valuable information for our users.
-
We will publish valid public benchmarks no matter if they show DataNucleus is deficient in some
area. Published benchmarks will show, wherever possible, all competing products so that you,
the user, can see how DataNucleus compares. Benchmarks are comparative so you have to have other
products to compare against. This is in stark contrast to competing persistence technologies which
do not publish benchmarks maybe in the fear that it may make them look bad.
-
If DataNucleus is found lacking in performance in a particular area, we will strive to remedy
the problem so that you always have a competitive product.
-
If any group wishes to make a comparison of DataNucleus with other persistence solutions we are
willing to aid them in finding an optimum DataNucleus configuration.
|
What is a benchmark?
This is simply a series of persistence operations performing particular things
e.g persist
n
objects, or retrieve
n
objects. If those operations are
representative of your application then the benchmark is valid to you.
|
To find (or create) a benchmark appropriate to your project you need to determine the
typical persistence operations that your application will perform. Then when you have
a benchmark appropriate for that operation, compare the persistence solutions. And please
let us know if DataNucleus comes out slower so we can have a chance to do something about it.
There, you won't get that offered by groups such as Hibernate.
For performance of DataNucleus Access Platform, please refer to the
Performance Tuning Guide
The PolePosition benchmark is a project on SourceForge
to provide a benchmark of the write, read and delete of different data structures using the
various persistence tools on the market. JPOX was run against this benchmark just before
being renamed as DataNucleus and the results are found
in the DataNucleus Wiki.
The input data used for that benchmark run is found
in JPOX SVN.
Some comments on the PolePos benchmark :-
-
It is essential that tests for such as Hibernate and DataNucleus performance comparable
things. Some of the original tests had the "delete" simply doing a "DELETE FROM TBL" for Hibernate
yet doing an Extent followed by delete each object individually for a JDO implementation. This is
an unfair comparison and in the source tree in JPOX SVN this is corrected
-
It is essential that schema is generated before the test, otherwise the test is no longer
a benchmark of just a persistence operation. The source tree in JPOX SVN assumes the schema
exists
-
Each persistence implementation should have its own tuning options, and be able to add
things like discriminators since that is what would happen in a real application. The source
tree in JPOX SVN does this for JPOX running. Similarly a JDO implementation would tune the
fetch groups being used - this is not present in the SourceForge project but is in JPOX SVN
-
DataNucleus performance is considered to be significantly improved over JPOX particularly
due to batched inserts, and due to a rewritten query implementation that does enhanced fetching.
|
|