그동안 개인프로젝트를 진행하며 파일업로드/삭제는 DB에서 아래와 같이 구현해왔다.
업로드
- 사용자가 업로드 한다.
- DB에는 파일이름을 INSERT하고 서버는 파일을 저장.
삭제
- 사용자가 파일을 선택, 삭제버튼 클릭
- DB에서 관련된 정보를 DELETE하고 서버에서는 파일을 삭제하는 로직을 돔
그런데.. 파일을 삭제하는 사용자가 많아지면 서버에서는 잦은 I/O연산을 하게된다.
책에서 본것을 조금 응용해서... 파일 삭제여부를 나타내는 컬럼을 하나 둔 다음에
사용자가 파일 삭제를 클릭하면, 바로 DB에서 정보를 삭제하고, 서버에서 파일삭제 로직을 도는것이 아닌
단순히 삭제여부 컬럼에 표시를 하는것이다.
당연히 사용자에게 뿌려줄 파일업로드 목록의 WHERE 조건에는 삭제여부 컬럼이 들어가겠지.
select * from fileAttach
where DelFlag <> Y;
그리고 삭제대상이된(DelFlag가 Y인) 파일들은 사용자가 적은 시간대에 서버에서 파일삭제 + DB에서 목록삭제 하는 배치파일을 돌려서 정리하면 좋을것 같다.
'Today I learned' 카테고리의 다른 글
form에서 파라미터를 전송하는데도 request.getParameter()에 실패할때 (0) | 2019.07.03 |
---|---|
자바로 배우는 리팩토링 입문 1 (0) | 2019.07.02 |
쿼리 결과가 없는 상태에서의 isnull (혹은nvl) 함수의 동작 (0) | 2019.06.10 |
iamroot 커널스터디 5월 25일 1주차 (0) | 2019.05.25 |
버디할당자의 페이지할당과정 및 물리메모리할당 코드분석 (0) | 2019.05.22 |
댓글