Dynamic POJO Data Persistence: A unified persistence and query
manager for local J2SE and distributed J2EE environments which is
completely transparent to the object and does not require the modification
of the bytecode of the object.
Dynamic Object to Relational Mapping tool is specifically
designed to manage the impedance mismatch between an object oriented
system such as the Java platform and a relational database management
system such as the Oracle or DB2 Relational databases. The main
challenge here is to manage the process of bringing the data out
of and saving application changes back to the database (i.e. persist
the data) efficiently. The POJO based business objects must be accessible
by applications in a manner that both performs rapidly and scales
to a high volume of transactions for a complex model of information.
This is a very challenging problem set for engineers to hand-code
especially when dealing with the complexities of the typical enterprise-level
application with modern business requirements. CocoBase® successfully
generates the POJO objects and manages the persistence thus solving
this challenge with a simple to use tool based on a powerful persistence
architecture that is unequalled in the industry.
BASE LEVEL POJO PERFORMANCE - "Speed is twice as fast as raw
perception is that an additional persistence layer providing O/R
Mapping between the object and the database layer will reduce performance.
For most all O/R tools this is true with an average slow down of
15 - 25%. CocoBase® actually increases performance to twice
that of raw JDBC with identical JDBC driver and SQL. It is on average
125% faster than most all other O/R tools at the base level.
advantage is not a 'trick' of adding caching or making CocoBase®
use optimizations not used in the JDBC code - instead it's an apples
to apples comparison. In this comparison no caching enabled, same
SQL, same JDBC driver, same transaction settings and same prepared
statement handling is used. This is accomplished through optimized
code that in combination with the Java just in time compiler produces
a faster 'executable' when running. After years of working with
the Java JIT, CocoBase® has evolved itself to execute highly
optimized code thus creating a solution unique to CocoBase®.
As a result of this optimization, raw SQL operations with CocoBase®
execute on average twice as fast as they do with JDBC.
ADDITIONAL PERFORMANCE GAINS
provides the fastest Java caching architecture currently available.
Our patent pending implementations include performance improvements
as much as 400-500 times that of raw SQL loads. This is a 40,000-50,000%
increase! The CocoBase® caching implementation is on average
10-100 times faster than other typical caching architectures available
in Java and provides a unique level of performance and scalability.
Good Use of
supports advanced SQL optimizations such as Cartesian and combined
SQL loads that can reduce SQL traffic and database querying. Batch
Inserts, stored procedure support, optimization of SQL (including
support for database hints and proprietary syntax) all provide a
dynamic ability to support complex and optimized solutions for loading
and persisting POJO object models.
object graph performance is 'linear'. The performance cost of managing
1 object or 10,000 objects which have changed is the same per object
cpu-wise. We know of no other Object to Relational Mapping tool
that retains linear performance for complex models. The last time
we did analysis on one of the common Open Source solutions for instance,
a model of 500 objects performed 2-3 times slower per object than
a model of 50 objects. This is but one example of scalability issues
that plague o/r tools other than CocoBase®.
By default CocoBase®
generates SQL based on the context of the operation. So for instance
if an update of only a single column is required, that's what's
issued. If database custom syntax such as hints or proprietary SQL
are required, the admin facilities allow the developer to edit SQL
mapping and create this custom syntax.
Out of the box,
the CocoBase® runtime uses best practices for managing JDBC
connections, prepared statements, cursors, and SQL generation and
execution. As a result, the application runs in an optimized and
high performance fashion that generally outperforms equivalent hand
coded applications by 2-3 times often with orders of magnitude of
section briefly describes the results obtained with the CocoBase
Runtime Performance Test. The initial run of the test used the following
test platform and test settings;
Oracle 8i database
running on the following computer; Dual AMD Athalon
1800, 12 MB RAM, ATA-133 RAID HD, Windows 2000 SR3.
Test client running on
the following computer; Dual Pentium III 1000MHz, 512 MB RAM, ATA-133 HD, Windows 2000 SR3, JRE 1.4.1_01.
access over 100 Base-T LAN, running 10000 records, averageOver set to 1 and
averageType set to averageIndividually.
Here are the results in
graph form of that test:
Where the red bars represent
the time required (ms) for the CocoBase operation and the blue
bars represent the time required
(ms) for the equivalent JDBC operation. The in-house result
values are as follows:
results show that for the initial run, the CocoBase SELECTALL operation
time is approximately twice that of embedded
JDBC, while for the INSERT, SELECT, UPDATE and DELETE operations, the
CocoBase runtime shows a distinct performance advantage.
The results show that for the initial
run, the CocoBase SELECTALL operation time is approximately twice that of embedded JDBC, while
for the INSERT, SELECT, UPDATE and DELETE operations, the CocoBase runtime
shows a distinct performance advantage.
A second run with the same settings
results in the following graph:
The in-house result values are as follows:
The results of the second
run shows a significant improvement in CocoBase runtime
performance and fluctuations for the
JDBC implementation. The CocoBase performance
improvement results from reuse of
SQL statements generated from map definitions during the first run. CocoBase maps
are compiled just once per VM instance, when a map isrequired to perform an operation.
Once compiled, query arguments are bound as needed tothe buffered SQL strings.
The Performance Test Suite doesn’t delete test module instances between test runs, and the performance
advantages of using precompiled CocoBase maps is reflected in the test results after
the initial test run.
The CocoBase SELECTALL
operation, which reflects NULL value handling that
does not occur in the JDBC class, improves
significantly after the initial run. This operation will always appear slightly slower
than the analogous default JDBC implementation. The results
of a third run should reflect no significant improvement in CocoBase
runtime performance, however, any subsequent
run should always show a CocoBase performance advantage for four of the five operations
vs. equivalent JDBC operations.
Fluctuations may occur
in the results due to a combination of the following: Variations in
system speed, Number of tasks running, Garbage collections, Hotspot
compiler activation, JDBC driver implementation
and Fluctuating database load.
for building POJO Data Persistence based applications provides a
base performance increase to that of twice as fast as raw JDBC.
This speed is created based on the architecture and optimization
of the CocoBase® persistence runtime without caching, combined
calls or other tricks of O/R mapping tools. The result is a POJO
based application that can perform twice as fast than if coded by
hand or written with another O/R mapping tool. When you add in CocoBase®
Caching and other methods for increasing performance, the speed
can increase from 10 to 1,000 times than with just raw JDBC.
is the key to produce high performance POJO Data Persistence based
business applications. The top priority and challenge for business
software development is to meet high performance and scalability
requirements. Thus having a solution that can easily and consistently
deliver this for engineering teams is critical. That is why companies
such as United Airlines, CVS Pharmacy, Expeditors, State of Maine,
Social Security Services use CocoBase® for their mission-critical
NOTE - Please find the performance test suite on the download website. You need to request CocoBase to download and that will give you the information to access the download section of the website. Thanks.
This document is copyrighted and owned solely by THOUGHT Inc.®
2005. CocoBase® and THOUGHT Inc.® are registered trademarks
of THOUGHT Inc.®. Dynamic POJO Data Persistence, Dynamic
O/R Mapping, Dynamic Object to Relational Mapping, Dynamic
Universal Querying and Dynamic Transparent Persistence
are pending trademarks of THOUGHT Inc.®. CocoBase® technology
is based on US patent #5857197 as well as additional pending patents
directed to object navigation, object modeling, querying and caching.
All other trademarks are property of their respective company. This
publication is provided "as is" without warranty of any
kind, either express or implied, including, but not limited to,
the implied warranties of merchantability, fitness for a particular
purpose, or non-infringement, to also include any and all technical
inaccuracies or typographical errors.