안녕하세요. 개발은 오래 해왔지만 DB는 잘 모르는 개발자입니다.
이번에 주식 차트 어플리케이션을 개발하게 되었습니다.
사람들이 봉차트라고 하는 것입니다.
캔들스틱 차트라고도하죠.
데이터는 구조는 매우 단순합니다만 어떻게 스키마를 구성해야 성능에 지장이 없을지 몰라 이 곳에 문의 올립니다.
원 소스 데이터는
[종목코드, 시간(분), 시가,고가,저가,종가,거래량]
이렇습니다. 주식 종목별로 매 분마다 하나의 레코드가 추가되는 상황입니다.
그리고 어플리케이션에서는 1분, 5분, 15분, 30분, 1시간, 4시간, 1일, 1주일, 1달 단위로 봉차트를 보여줍니다.
그리고 성능이 매우 중요하다는 고객 요구사항입니다.
질문은 이렇습니다. 원 소스 테이블만 가지고 실시간으로 1분, 5분, 15분, 30분, 1시간, 4시간, 1일, 1주일, 1달 집계를 처리하는 것은
미친 짓인가? (그럴 것이라 생각됩니다만 경험해본 적이 없어서 묻는 것입니다.)
그렇다면 성능을 위해 스키마를 어떻게 구성하는 것이 좋을까요?
일단 제 생각에는
원 소스 데이터 이외에 추가로 1시간, 1일 단위로 각각 집계 테이블 만들어 데이터를 쌓아 놓는다.
(이렇게 하면 1시간 배치랑 1일 배치를 돌려야겠군요.)
이정도로 충분할까요?
그리고 또 궁굼한 것은 종목별로 집계 테이블을 나누는 것이 좋을까요?
예를 들어 A종목 1시간 테이블, A종목 1일 테이블, B 종목 1시간 테이블, B종목 1일 테이블 이런 식으로요.
아무래도 종목 코드는 분포도가 매우 안 좋기 때문에 집계 쿼리를 처리할 때 실행 계획이 효율적으로 안 나오지 않을까 우려되네요.
아무튼 이런 요건을 처리 하기 위해 테이블 구성을 어떻게 하는 것이 좋을지 의견을 주시면 정말 고맙겠습니다.
아무 의견이라도 좋으니 얘기 주실만한 것이 있으면 꼭 알려주세요~
감사합니다.~