이로

201222 쓰레드 다중처리 본문

컴퓨터/개발일기

201222 쓰레드 다중처리

利路 2020. 12. 22. 21:22
반응형

주어진 상황

  • 스프링 부트, 그래들, 마이바티스를 사용하는 프로젝트이다.
  • '관리시스템 설정 테이블'은 1200만개의 데이터가 존재하며, 해당 데이터들은 수시로 데이터 내용이 변경된다.
  • 00시00분 시점의 '관리시스템 설정 테이블'에 있는 데이터를 txt 파일로 저장하려한다.
  • 하나의 텍스트 파일은 1000개의 라인으로 구성해야한다.
  • 데이터는 시간순으로 순차정렬해야하며, 파일명은 각 파일의 첫 데이터와 마지막 데이터의 시간으로 한다. [첫 시간 - 마지막 시간.txt]
  • 로그파일 생성은 사용자가 웹 페이지에서 "로그 생성" 버튼을 클릭한 순간 진행되며, 서버에서 비동기로 파일생성 작업을 진행해야 하며, 사용할 수 있는 Thread는 10개이다.
    • 사용자가 웹 페이지에서 로그생성을 누르지않으면 로그파일이 생성되지 않는 날도 존재한다.

 

내가 생각한 로직

1. DB에서 생성해야 할 데이터의 총 개수를 파악

2. 게시판의 페이징처리와 같게 1000개 단위로 페이징을 한다.

3. Queue에 페이징 번호를 쌓는다.

4. 10개의 각 쓰레드에서 Queue에 접근하여 페이징 번호를 가져가 각 쓰레드별로 DB에서 데이터를 1000개씩 받아 파일을 생성한다.

 

발생할 수 있는 이슈

1. 1200만개의 데이터에 rownum을 부여해 1000개 단위로 페이징 처리를 하는게 맞는 선택인가?

반응형
Comments