I want to generate a report which can have a million records pulled from the database. I want to display the report in synchronous ( if the user asks for the report, I should show it on the screen) and asynchronous way (we can send an email or any other notification after we generate the report in the background).
My questions are:
1) What is the good strategy to do this task?
2) What considerations I need to make for it in terms of database and other resources.
Well firstly if your report can return up to a million rows, I'd certainly look at making sure that performs well, especially if you are planning on offering the result synchronously!
In order to have the report generated asynchronously and made available to several other requesters you'll want to look at kicking off a separate thread to perform the work and store the result somewhere for later retrieval.