안녕하세요. 고수님들의 의견을 여쭙고자 글을 씁니다. 많은 조언 부탁드립니다.
1) 상황 : SMS(문자)를 발송하는 프로젝트인데요, 월 발송은 약 100~200만건 정도로 예상합니다.
발송 에이전트 회사에서 제공하는 기본 테이블 즉 입력테이블, 로그 테이블이 존재합니다.
이 로그 테이블은 월(YYYYMM)별로 자동 생성되도록 되어 있습니다.
2) 기능
2-1) 발송내역 리스트를 확인할 수 있어야 합니다.
2-2) 검색이 가능해야 합니다. 보낸번호, 받는번호, 보낸내용, 날짜 검색이 가능해야 합니다.
3) 질문
위와 같은 상황에서 리스트를 보여줄 때나 검색시 속도 면에서 최고의 성능을 보여줄 수 있는 테이블 설계에 대해
조언을 구합니다.
제가 구성할려는 방법은 아래와 같습니다.
3-1)
-고객이 문자를 발송하면 발송내역 테이블에 등록
발송내역 : 번호(KEY), 보낸번호, 받는번호, 내용, 건수, 성공, 실패, 구분(SMS,LMS), 날짜
-고객이 문자 발송하면 등록되는 발송내역 테이블의 키 값을 에이전트사 테이블에 등록
(에이전트사 발송 테이블은 여분 필드가 있습니다. 이 여분 필드(5개 존재) 에 들어간 데이터는
자동으로 로그 테이블에도 들어옵니다.
위와 같은 프로세스로 구성을 하고 조회시에 발송내역 테이블을 보여주면 될거 같습니다.
(이 발송내역 테이블은 최근 3개월 이후는 삭제할 계획입니다.)
발송내역 테이블을 조회할 경우에는 큰 문제는 없을거로 생각됩니다(본인)
그런데 문제는 검색시 받는번호가 문제입니다.
만약 발송시 '안녕하세요' 내용으로 100명에게 보냈다면, 각 100명의 받는번호 가운데서
하나의 받는번호로만 검색이 가능해야 합니다.
위와 같은 설계대로면, 발송내역 과 에이전트로그 테이블(월별)을 조인하여 검색해야 될거로 보이구요,
더 문제는 기간을 3개월 이런식으로 하게 되면, 테이블이(월별) 다르기 때문에 또 문제가 될거 같습니다.
여러 테이블을 조인해야 되는 문제...등으로 느려질거 같습니다.
물론 성공/실패는 데몬이나 다른 방법으로 업데이트를 하면 되고, 검색시 내용이나 보낸 번호는 발송내역
테이블을 검색하면 별 문제는 없을거 같은데... 받는번호 검색시가 참 난감합니다.
발송내역 테이블과 더불어 발송상세 테이블을 별도로 하나 더 만들어서 조회를 하도록 해야하는지..
고수님들의 의견과 조언을 구합니다.
(발송내역이던 발송상세이던 3개월을 기준으로 데이터를 삭제할 예정인데, 이 부분도 데몬으로 하는게
좋을지 DB스케쥴로 하는게 좋을지도 궁금하네요..)
더불어 위와 같은 리스트를 보여줄 때 더 효과적인 페이징 쿼리가 있다면 조언 부탁드립니다.