how to impove performance with a huge amount of dataset entries in BIRT report
Rafik Jaouani said that
"Using BIRT joint data sets to join two potentially large data sets will not scale in a real production environment as BIRT will fetch the two data sets in memory and then join them in memory. A better is to use tables and nested dynamic text to only fetch the required data."
But if there is still a task to join large data sets with each other (for instance thousands of them). If I'm using tables and nested dynamic text to fetch only the required data -- it will create a lot of javascript objects in the report. How will it influence on the performance? Could that javascript objects hung up the report? How much time will it take to process all the entries? How it could be solved?
But if there is still a task to join large data sets with each other (for instance thousands of them). If I'm using tables and nested dynamic text to fetch only the required data -- it will create a lot of javascript objects in the report. How will it influence on the performance? Could that javascript objects hung up the report? How much time will it take to process all the entries? How it could be solved?
One answer
Here is one I wrote a report for, and am still thinking about performance..
All projects on the server (or a defined list of projects) which have workitems linked to another project, where the workitems are still open.
show the projects, and (nested) the workitems, (which are sortable by date, sprint, release, priority, or some specific workitem attribute, some custom)
we have product teams, and a smaller set of 'solution' teams, who submit requirements down to the product teams.
The solution teams regularly want to know the status of the workitems they submitted.
the product teams want to know which requirements have come from solution teams.
today this only works when the projects are on the same server.
this report means
1. get all workitems which match a project
2. get all links (these do not store the workitem number, but a reference to the workitem)
3. find all links that have source or target that match each workitem
for this u need two table views over the links table.
we are over a million workitems.. and 400 projects.. some of the iteration data is not n the warehouse, so you have to run this against the runtime DB... very nasty performance impacts on folks trying to do scrum meetings when the DB is impacted.
All projects on the server (or a defined list of projects) which have workitems linked to another project, where the workitems are still open.
show the projects, and (nested) the workitems, (which are sortable by date, sprint, release, priority, or some specific workitem attribute, some custom)
we have product teams, and a smaller set of 'solution' teams, who submit requirements down to the product teams.
The solution teams regularly want to know the status of the workitems they submitted.
the product teams want to know which requirements have come from solution teams.
today this only works when the projects are on the same server.
this report means
1. get all workitems which match a project
2. get all links (these do not store the workitem number, but a reference to the workitem)
3. find all links that have source or target that match each workitem
for this u need two table views over the links table.
we are over a million workitems.. and 400 projects.. some of the iteration data is not n the warehouse, so you have to run this against the runtime DB... very nasty performance impacts on folks trying to do scrum meetings when the DB is impacted.
Comments
Clement Liu
Dec 30 '12, 12:43 p.m.Hi Denis, why do you have to join two large data sets? Can you let me know what report you want to produce? Thanks.
Denis Maliarevich
Jan 05 '13, 7:54 a.m.I need to collect all the timesheet entries for users from Jazz and display it in the report.
Thus I need to link timeSheetEntry to workitem. And then for each WI I need to find its parent to get required information.
So it's a huge amount of objects in js.
For small reports it works faster then "join tables" in datasets. But if the report has like 5000-10000 rows -- it is even slower then "join tables".
So I'm wondering if it could be speeded up somehow.
Rafik Jaouani
JAZZ DEVELOPER Jan 11 '13, 11:18 a.m.A report should not fetch more data than it needs to display. Are you trying to generate a report that displays a table with 10000 rows? That is too big. Try may be generating the report for each team instead of for all users.
2 votes