CSV 내보내기

이 문서는 GitLab 코드베이스에서 CSV 내보내기의 다양한 구현을 나열합니다.

내보내기 유형 작동 방식 장점 단점 기존 예시
Streaming - 데이터를 일괄적으로 쿼리하고 응답 스트림으로 전송합니다.
- 다운로드가 즉시 시작됩니다.
- 즉시 보고 가능 - 진행률 표시 없음.
- 신뢰할 수 있는 연결이 필요합니다.
내보내기 감사 이벤트 로그
다운로드 - 데이터를 일괄적으로 쿼리하고 임시 파일에 기록합니다.
- 파일을 메모리로 로드합니다.
- 파일을 클라이언트에 보냅니다.
- 즉시 보고 가능 - 대량의 데이터는 요청 시간 초과를 초래할 수 있습니다.
- 메모리 부담이 큽니다.
- 사용자가 다른 페이지로 이동하면 요청이 만료됩니다.
- 감시 준수 위반 보고서 내보내기
- 라이선스 사용 파일 내보내기
이메일 첨부 파일로 - 배경 작업으로 쿼리를 비동기적으로 처리합니다.
- 이메일은 내보내기를 첨부 파일로 사용합니다.
- 비동기 처리 - CSV를 다운로드하려면 사용자가 다른 앱(이메일)을 사용해야 합니다.
- 이메일 제공업체는 첨부 파일 크기를 제한할 수 있습니다.
- 이슈 내보내기
- Merge Request 내보내기
이메일 내 다운로드 가능한 링크로 (*) - 배경 작업으로 쿼리를 비동기적으로 처리합니다.
- 이메일은 내보내기 링크를 사용합니다.
- 비동기 처리.
- 이메일 제공 업체 첨부 파일 크기 제한 우회
- 사용자가 다른 앱(이메일)을 사용해야 합니다.
- 추가 저장 공간 및 정리가 필요합니다.
사용자 권한 내보내기
폴링 (지속적 상태 없음) - 프런트엔드(FE)가 몇 초마다 CSV 파일 이용 가능 여부를 확인하기 위해 비동기적으로 쿼리를 처리합니다. - 비동기 처리.
- 완료 시 로컬 기계로 자동 다운로드.
- 앱 내 솔루션
- 지속적이지 않은 요청 - 사용자가 다른 페이지로 이동하면 요청이 만료됩니다.
- 폴링 요청마다 API가 처리됩니다.
취약점 내보내기
폴링 (지속적 상태) (*) - 배경 작업으로 쿼리를 비동기적으로 처리합니다.
- 백엔드(BE)가 내보내기 상태를 유지합니다.
- 프런트엔드(FE)가 몇 초마다 상태를 확인하여 ‘다운로드 링크’를 표시합니다.
- 사용자는 CSV 내보내기를 자동으로 다운로드하거나 새 보고서를 재생성할 수 있습니다.
- 비동기 처리.
- 폴링 요청마다 데이터베이스 호출이 이루어지지 않습니다(HTTP 304 상태가 내보내기 상태가 변경될 때까지 반환됨).
- 사용자가 내보내기가 완료될 때까지 페이지에 머물러 있지 않아도 됨.
- 앱 내 솔루션.
- 대시보드/CSV API와 같은 일반 CSV 기능으로 확장 가능
- DB에서 내보내기 상태를 유지해야 합니다.
- CSV 내보내기를 자동으로 로컬 기계로 다운로드하지 않습니다. 사용자가 ‘다운로드’를 선택해야 합니다.
Merge 커밋 보고서 내보내기
note
*로 표시된 내보내기 유형은 현재 진행 중인 작업입니다.