3주차이다. 프로젝트가 힘들었다…
단순 DB구현 프로젝트라고 생각했는데, 설계가 문제였다.
학습으로는 DB파트에서 프로시져, 펑션, 트리거, DCL, 모델링(ERD, 개념, 논리, 물리)을 배웠다.
리눅스에서는 간단한 명령어들과 vim 사용법, 데이터타입, 정규표현식, 쉘, 레플리카 등을 배웠다.
처음에는 되게 쉽게 진행할 수 있겠다는 생각을 했다.
이전에 학교에서 DB관련 프로젝트를 했을 때는 아무래도 라포가 형성이 되어있던 관계들이기에, 말을 좀 더 편하게 할 수 있었던 것 같다. 그래서 의견 같은 경우도 서로 교류가 많았는데, 이번 프로젝트는 아직 라포가 형성이 되어있지 않았기 때문에 서로의 의견이 활발하게 공유되지 않은 점이 아쉬웠다.
하지만 이를 통해서 서로가 프로젝트를 바라보는 추상화된 시각을 구체화시키는 과정이 프로젝트에서 중요하다는 것을 느낄 수 있었다. 이걸 요구사항 명세서를 만들면서 구체화 시키는 것이다. 아직 부족한 부분이 많은 프로젝트이기에, 이번에 끝난 이후에도 현재 프로젝트를 개선해 볼 생각이다.
아래 내용은 강사님의 피드백과 내 생각을 기반으로 작성했다.
ERD 설계시 각 이름이 구분이 잘 되도록 작성해야한다. 그래서 우리 프로젝트의 ERD상의 이름을 의미가 잘 드러나도록 수정해야겠다고 생각했다.
현재 간단한 SELECT문을 통해 가상 시나리오를 구현했다. 그러므로 function과 procedure, 그리고 trigger를 사용하여 추가적인 기능을 구현해보자.
pagination을 어떻게 구현할 지, JAVA로 구현하는지, DB로 구현하는지 고민해보자.
⇒ 일반적으로 DB에서 구현하고, JAVA에서는 전체페이지를 조회해서 개수정도만
⇒ LIMIT을 사용하든 말든 어차피 DB단에서는 성능 차이가 크지 않다.
그러나, 예를들어 200개의 게시글이 있을 때, 200개의 게시글을 보내는가, 10개의 게시글만 보내느냐는 차이에서
데이터 I/O와 네트워크 비용에서 성능차이가 크게 벌어진다.
결론. DB에서 구현하고, JAVA에서는 전체페이지 개수만 조회하자.
+) 4팀의 요구사항 명세서에는 구체적으로 어떻게 구현할 것인지 잘 나와있으니 참고해보자.
개추