I want to know what is the best performing approach in the case of an overload of the system,
understood as large number of concurrent operations.
Each operation is a query that, in most cases, returns a large amount of data.
I am interested in the approach that not create bottlenecks and slow down, blocks for a long time the system.
The alternatives that I would like more information about are:
1) reports built with the JDBC (JNDI) specifying "java:jdbc/xxxxdatasource"
(taken from the oracle-ds.xml's jndi-name tag) as "Connection name (optional)"
with the query written into the rpt file and runned by Crystal Reports that I think makes a direct connection to DB
and integrated into Java with Java Reporting Component.
This approach has also threads limits, depending on the version of the report engine.
2) reports built with "Field definition only" with the query written and runned into the my application that call the report only through the resultSet to be displayed
(reportClientDoc.getDatabaseController().setDataSource(resultSet, tableName , tableName);)
My concern with this approach is that it seems to require loading all results into memory
and generating the report in one big step.
Is there a way to avoid this? Some-how to page through report data?
I've also read that Crystal Reports can work with any data provider that implements ResultSet.
Is this true? If so, could I create my own custom ResultSet implementation that would let me
page through my results without loading everything into memory at-once?
If possible, please point me to the documentation for this approach.
I haven't been able to find any examples.
If there is a better approach that I haven't mentioned, please let me know.
Thanks in advance