본문 바로가기
Today I learned

파일업로드/삭제 로직개선

by soheemon 2019. 7. 2.

그동안 개인프로젝트를 진행하며 파일업로드/삭제는 DB에서 아래와 같이 구현해왔다.

 

업로드

  1. 사용자가 업로드 한다.
  2. DB에는 파일이름을 INSERT하고 서버는 파일을 저장.

삭제

  1. 사용자가 파일을 선택, 삭제버튼 클릭
  2. DB에서 관련된 정보를 DELETE하고 서버에서는 파일을 삭제하는 로직을 돔

그런데.. 파일을 삭제하는 사용자가 많아지면 서버에서는 잦은 I/O연산을 하게된다.

 

책에서 본것을 조금 응용해서... 파일 삭제여부를 나타내는 컬럼을 하나 둔 다음에

사용자가 파일 삭제를 클릭하면, 바로 DB에서 정보를 삭제하고, 서버에서 파일삭제 로직을 도는것이 아닌

단순히 삭제여부 컬럼에 표시를 하는것이다.

 

당연히 사용자에게 뿌려줄 파일업로드 목록의 WHERE 조건에는 삭제여부 컬럼이 들어가겠지.

 

select * from fileAttach

where DelFlag <> Y;

 

그리고 삭제대상이된(DelFlag가 Y인) 파일들은 사용자가 적은 시간대에 서버에서 파일삭제 + DB에서 목록삭제 하는 배치파일을 돌려서 정리하면 좋을것 같다.

댓글