CSV로 내보내기
이 문서는 GitLab 코드베이스에서의 CSV 내보내기의 다양한 구현을 나열합니다.
내보내기 유형 | 작동 방식 | 장점 | 단점 | 기존 예시 |
---|---|---|---|---|
Streaming | - 쿼리하여 데이터를 배치로 응답 스트림에 생성합니다. - 다운로드가 즉시 시작됩니다. | - 즉시 보고서 사용 가능 | - 진행 상황 표시 없음. - 신뢰할 수 있는 연결이 필요함 | 내보내기 감사 이벤트 로그 |
다운로드 | - 일시적 파일에 데이터를 배치로 쿼리하고 작성합니다. - 파일을 메모리로 로드합니다. - 파일을 클라이언트에게 보냅니다. | - 즉시 보고서 사용 가능 | - 대량의 데이터는 요청 시간 초과를 일으킬 수 있음. - 메모리 집약적. - 사용자가 다른 페이지로 이동하면 요청이 만료됨 | - Chain of Custody 보고서 내보내기 - 라이선스 사용 파일 내보내기 |
이메일 첨부 파일로 | - 백그라운드 작업을 사용하여 쿼리를 비동기적으로 처리합니다. - 이메일은 내보낸 것을 첨부 파일로 사용합니다. | - 비동기 처리 | - 사용자가 CSV를 다운로드하기 위해 다른 앱(이메일)을 사용해야 함. - 이메일 제공업체가 첨부 파일 크기를 제한할 수 있음 | - 이슈 내보내기 - 병합 요청 내보내기 |
이메일 내의 다운로드 가능한 링크로 (*) | - 백그라운드 작업을 사용하여 쿼리를 비동기적으로 처리합니다. - 이메일은 내보내기 링크를 사용합니다. | - 비동기 처리함. - 이메일 제공자 첨부 파일 크기 제한 우회 | - 사용자가 다른 앱(이메일)을 사용해야 함. - 추가 저장 공간 및 정리가 필요함 | 사용자 권한 내보내기 |
폴링 (비영속 상태) | - 백그라운드 작업을 사용하여 쿼리를 비동기적으로 처리합니다. - 프론트엔드(FE)는 CSV 파일이 준비되었는지를 확인하기 위해 몇 초마다 폴링합니다. | - 비동기 처리함. - 완료되면 로컬 기기로 자동 다운로드됨. - 앱 내 솔루션 | - 비지속 가능한 요청 - 사용자가 다른 페이지로 이동하면 요청이 만료됨. - 각 폴링 요청에 대해 API가 처리됨 | 취약점 내보내기 |
폴링 (영속 상태) (*) | - 백그라운드 작업을 사용하여 쿼리를 비동기적으로 처리합니다. - 백엔드(BE)는 내보내기 상태를 유지합니다. - FE는 CSV 파일이 준비되었을 때 ‘다운로드 링크’를 표시합니다. - 사용자는 다운로드하거나 새 보고서를 생성할 수 있습니다. | - 비동기 처리함. - 폴링 요청 중에 데이터베이스 호출 없음 (내보내기 상태가 변경될 때까지 HTTP 304 상태가 반환됨). - 사용자가 내보내기가 완료될 때까지 페이지에 머물 필요 없음. - 앱 내 솔루션. - 대시보드/CSV API와 같은 일반 CSV 기능으로 확장 가능 | - DB에서 내보내기 상태를 유지해야 함. - CSV 내보내기를 자동으로 로컬 기기로 다운로드하지 않음, ‘다운로드’를 선택해야 함 | 병합 커밋 보고서 내보내기 |
참고: *로 표시된 내보내기 유형은 현재 진행 중입니다.