안녕하세요.
제가 DB 설계는 초보라 많은 어려움이 있네요. 모델링 관련 책도 보고 여러군데 찾아보고 했지만 아직은 잘 감이 안옵니다.
먼저, 대략의 시나리오는 이렇습니다.
광고 관련 통계를 구해야함.
WEB_로그 라는 테이블은 아래와 같습니다.
WEB_로그
------------------------
로그번호 (key)
고객ID
접속자IP
업체코드
광고코드
PAGE_ID
PAGE레벨
URL
시간
위의 로그 테이블에서 아래와 같은 결과가 필요합니다.
가입자수, 노출수, 순노출수, 중복노출비율, 반응수, 순반응수, 중복반응비율
위 항목들의 결과값의 산정은:
가입자수: 고객ID의 unique한 합
노출수: 광고코드들의 합
순노출수: 노출수/가입자수
중복노출비율: (1 - 순노출수 / 노출수) x 100
반응수: PAGE레벨이 1인 항목들의 합
순반응수: 반응수 / 가입자수
중복반응비율: (1 - 순반응수 / 반응수) x 100
위의 산정 수식들을 보시면 아시겠지만, 어떤 항목들은 이전의 결과값을 알아야 계산이 가능한 항목들로 이루어져있습니다.
그리고 이 로그는 1달~ 1년 정도 계속 쌓여서 상당한 양의 로그가 쌓일거구요.
제가 궁금한거는
1. DB 설계할때 이런 통계는 따로 요약 테이블을 만들어 프로시져나 트리거로 날짜별로 저장한다고들 하는데요. 저 같은 경우는 날짜별이 아닌 10분 단위까지의 통계들이 필요하고, 더구나 저 위의 통계들이 고객ID별, 광고업체별, 광고별 등의 그룹별 통계또한 필요한 상황입니다. 이럴때는 어떻게 DB를 설계해야하는지요. 좀 자세하게 설명을 해주시면 감사하겠습니다.
2. VIEW 를 사용할수도 있을까요? 있다면 어떻게 하는게 효율적일까요?
3. 이전의 항목이 있어야 다음 항목의 결과를 산출할수있는데 이 경우는 쿼리로 어떠케 해결할수 있을까요?
단순히 select count distinct 고객ID, count 광고코드, (count 광고코드)/(count distinct 고객ID) .......
이런식의 쿼리 말고 다른 방법이 있는지 궁금합니다.
4. 어떠한 방법도 좋습니다. 위 테이블 하나를 쿼리로만 통계를 내는 방식 말고 모델링 측면에서 좋은 방법이있는지 알고싶습니다. OLAP이나 DW 는 쓸 상황도 아니고, 어쩜 오라클로 안갈지도 모르겠네요.
경험이 있으신분 모두 작은 답글이라도 주시면 정말 도움이 될것같습니다.
감사합니다.