
백엔드
대용량 데이터 등록
두줄요약
대용량 메타데이터 등록 시간을 줄이기 위해 saveAll, 배치 인서트, 비동기 병렬 처리를 단계적으로 적용했습니다. 그 결과 등록 시간을 2분 내외로 단축했습니다.
문제 상황
- monolithic + SQL mapping 구조에서 XML SQL을 파싱해 메타데이터로 저장할 필요
- 프로젝트당 5만 건 이상, 클라우드 등록 10분 소요, 프로젝트 수 증가 시 시간 예측 어려움
- 기존 save 기반 중첩 등록으로 커넥션, 인덱싱, 커밋 비용 증가
해결 방법
- saveAll 적용으로 여러 save 호출을 하나의 트랜잭션으로 묶어 등록 비용 절감
- 연관 ID를 미리 발행하는 채번 방식과 Cdo의 genId 도입으로 선등록 구조 전환
- Persistable와 creation 플래그로 isNew 검사 생략, 배치 인서트와 배치 사이즈 설정으로 추가 개선
- @Async와 CompletableFuture, ExecutorService를 활용한 병렬 배치 등록으로 최종 속도 개선
