Issue Details (XML | Word | Printable)

Key: OPENJPA-263
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: Daniel Lee
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

Introducing getAll(List) method for data cache to be called by loadAll() will allow data cache plug-ins to leverage the advantage of any third-party cache that provides a way to get multiple object in one call by providing a list of keys (oids).

Created: 22/Jun/07 10:56 PM   Updated: 07/Aug/07 05:03 PM
Return to search
Component/s: datacache
Affects Version/s: 1.0.0
Fix Version/s: 1.0.0

Time Tracking:
Not Specified

File Attachments:
  Size
Text File Licensed for inclusion in ASF works OpenJPA-263.patch 2007-07-20 08:31 PM Daniel Lee 14 kB
Microsoft Word Licensed for inclusion in ASF works OpenJPAJIRA.doc 2007-06-22 11:07 PM Daniel Lee 28 kB

Resolution Date: 07/Aug/07 05:03 PM


 Description  « Hide
OpenJPA: 5 files to be donated to OpenJPA: (changed, no new file)
There are changes to the following 5 files which will be donated to OpenJPA to be able to leverage ObjectGrid map agent to improve the performance on getting the relationship loaded.
(the donation is upon the approval of OpenJPA committee)

- org.apache.openjpa.datacache:
o AbstractPCData:
 toField: calling toNestedFields(new) instead of looping thru all elements in the field
(Implements the Collection only for now, may need to apply it to Map and Array)
 toNestedFields: (new)
 toRelationFields: (new) calls findAll()
- org.apache.openjpa.datacache:
o DataCacheStoreManager: enhance loadAll() to issue getAll() instead get()
o AbstractDataCache: add getAll() to abstract as default
o DataCache: add getAll() to interface
o DelegatingDataCache: add getAll() delegation

(Please see detail information in the attached Word document.)

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Daniel Lee added a comment - 22/Jun/07 11:07 PM
OpenJPAJIRA.doc describe in detail of this feature.
datacache.patch contains the changes to datacache package in support of this feature
kernel.patch contains the changes to kernel package in support of this feature

Please provide any comments on this feature implementation.

The implementation to handle relationship of Map type will be provided later. Currently it handles only Collection type.

Daniel Lee added a comment - 20/Jul/07 08:28 PM
The result of performance measurement which has been done on a smaller data set (1 customer with 10 orders, each order has 100 orderitems) has shown 96% performance gain (please refer to the result below). This is on a standalone environment without network overhead. It is sure that the performance improvement will be much greater if the data cache is on a separate machine.

Test scenario:
reload the customer which has 10 orders, each order has 100 orderitems. All relationship are EAGER. DataCache is turned on with plug-in to an IBM caching products.

Performance result:
- average time without the new (getAll) implementation: 11.38 sec.
- average time with this (getAll) implementation: 5.8 sec.

Please refer to the final patch (OpenJPA-263.patch) for the complete changes.

Daniel Lee added a comment - 20/Jul/07 08:30 PM
attach the same patch with granting license to ASF...

Daniel Lee added a comment - 20/Jul/07 08:31 PM
The result of performance measurement which has been done on a smaller data set (1 customer with 10 orders, each order has 100 orderitems) has shown 96% performance gain (please refer to the result below). This is on a standalone environment without network overhead. It is sure that the performance improvement will be much greater if the data cache is on a separate machine.

Test scenario:
reload the customer which has 10 orders, each order has 100 orderitems. All relationship are EAGER. DataCache is turned on with plug-in to an IBM caching products.

Performance result:
- average time without the new (getAll) implementation: 11.38 sec.
- average time with this (getAll) implementation: 5.8 sec.

Please refer to the final patch (OpenJPA-263.patch) for the complete changes.

Patrick Linskey added a comment - 20/Jul/07 08:36 PM
> The implementation to handle relationship of Map type will be provided later.
> Currently it handles only Collection type.

Does this mean that objects with Map fields will not be supported at all, or that they will go through the existing (less-efficient) pathways?