Evaluating different types of CSV exports
Problem Statement
The past couple of CSV export functionalities has shown performance degradation (read #246742 (closed) and #236000)
The goal of this issue is to evaluate the different types of CSV exports and come up with a solution that is query performant and provides a frictionless user experience in the export journey.
Export type | How does it work | Advantages | Disadvantages | Existing examples |
---|---|---|---|---|
Streaming Download | Queries and generates the csv synchronously when a request is made |
|
|
Audit Events export and Chain of Custody export |
CSV as email attachment | Background job processes the query and emails the export |
|
|
Export Issues to CSV |
CSV downloadable link in email | Background job processes the query and emails an export link |
|
|
Proposal for User permissions export |
Polling (non-persistent state) | Asynchronously processes the query in the background. FE polls every few seconds to check if csv file is ready |
|
|
Export Vulnerabilities |
Polling (persistent state) | Asynchronously processes the query in the background. BE maintains the export state. FE polls every few seconds to check status. FE shows 'Download link' when export is ready. User can download or regenerate a new report |
|
|
POC |
Decision factors
We should choose the option that is the most:
- Simple
- Reliable
- Re-usable in various contexts throughout the app
Edited by Aishwarya Subramanian