DataNucleus Performance Summary
The following charts show the performance of DataNucleus (in green) relatively to other JPA/DBMS combinations (in gray).Position #1 on the X-Axis (the fastest) is about 100 times faster than position #32 (the slowest).
The configurations in which DataNucleus has been tested are listed in the following table:
|Database + JPA Provider||Normalized Score|
100 - Best, 0 - Worst
1 - Best, 32 - Worst
|1||DataNucleus with Derby embedded||7.4||15 (out of 32)||14|
|2||DataNucleus with PostgreSQL server||5.6||19 (out of 32)||6|
|3||DataNucleus with H2 embedded||5.1||22 (out of 32)||5|
|4||DataNucleus with HSQLDB embedded||4.3||24 (out of 32)||13|
|5||DataNucleus with Derby server||2.7||29 (out of 32)||15|
|6||DataNucleus with MySQL server||2.6||30 (out of 32)||5|
|7||DataNucleus with H2 server||1.3||32 (out of 32)||7|
DataNucleus Access Platform (formerly JPOX) is a data management framework that implements the JPA and JDO specifications. It is more than just an object-relational mapping (ORM) because it can also map and manage data from sources other than relational databases (e.g. DB4O). DataNucleus also serves as the Java persistence layer in Google App Engine.
DataNucleus is available under the Apache open source license.
In this benchmark DataNucleus 2.1.1 (which was released in 2010) has been tested.
DataNucleus Performance Tuning
The DataNucleus default configuration is far from being optimized. For example, unlike other JPA implementations, in DataNucleus connection pooling is disabled by default.
To get the best possible performance out of DataNucleus we followed the DataNucleus Performance Tuning instructions and applied the following optimizations:
- A connection pool (DBCP) was enabled.
EntityManagerFactorywas created only once per test.
Every thread had its own private
- Database schema generation was completed before time measurement started.
- Database schema validation was disabled.
- A discriminator was defined in the base class of a class hierarchy.
datanucleus.autoStartMechanismproperty was set to
datanucleus.rdbms.initializeColumnInfoproperty was set to
datanucleus.persistenceByReachabilityAtCommitproperty was set to
datanucleus.manageRelationshipsproperty was set to
- Logging was disabled.
All the entity classes have been enhanced by DataNucleus, by running
the tests with a Java Agent
Class enhancement time was completely excluded from the test time measurement.