IndexInfo vs IndexData
IndexInfo (지수 기본 정보):
- 내용: 지수의 이름, 식별자, 카테고리(코스피/코스닥 등), 기준 시점 등 변하지 않거나 거의 변하지 않는 메타데이터
- 역활: “이 지수가 무엇인가?”를 정의하는 기준 정보
IndexData (지수 시세 데이터):
- 내용: 특정 날짜의 시가, 종가, 고가, 저가, 등락률, 거래량 등 매일 변하는 수치 데이터
- 역활:
IndexInfo에 연결된 구체적인 날짜별 가격 기록
OpenAPI로 데이터 수집
IndexInfo (지수 기본 정보) 처리 과정
- 목표: 지수의 목록(이름, ID) 관리 (예: 코스피, 코스닥, KRX 100 등)
- API 수신 (Fetch): 매일 7,000개 (전체 목록)를 받아옵니다.
- DB 저장 (Save): 0개 (대부분의 날)
- 이유: 코드는 데이터를 하나씩 돌면서 “이 지수가 우리 DB에 이미 있나?” 확인합니다.
- 어제 “코스피”를 저장했으면, 오늘 들어온 “코스피”는 중복이므로 저장하지 않고 건너뜁니다(Skip).
- 만약 오늘 “코스피 200 신규 지수”가 새로 생겼다면, 그 1개만 새로 저장됩니다.
- 예시 시나리오
- 1월 1일: API에서 7,000개 옴 → DB가 비었으므로 7,000개 모두 저장.
- 1월 2일: API에서 7,000개 옴 → DB에 이미 다 있음 → 0개 저장 (전부 Skip).
- 1월 3일: API에서 7,001개 옴 (신규 지수 1개 추가됨) → 기존 7,000개는 Skip, 신규 1개만 저장
IndexData (시세 데이터) 처리 과정
- 목표: 우리가 “관심 지수”로 등록한 지수들의 오늘자 가격 저장
- API 수신 (Fetch): 매일 7,000개 (전체 목록의 오늘자 가격)를 받아옵니다.
- DB 저장 (Save): 사용자가 활성화한 개수만큼 (예: 5개 ~ 10개)
- 이유: 코드에
filter 로직이 있습니다. 받아온 7,000개 중에서 내가 “수집하겠다”고 설정(Enable)한 지수 이름과 일치하는 데이터만 남기고 나머지는 버립니다.
- 예시 시나리오
- 상황: 나는 “코스피”, “코스닥” 딱 2개만 추적하고 싶어서 활성화해둠.
- 동작:
- API가 7,000개의 오늘 가격 정보를 줍니다. (코스피, 코스닥, 섬유의복, 화학, 건설업 등등…)
- 코드에서 필터링을 돌립니다.
- “섬유의복 지수” → 활성화 안 됨 → 버림.
- “코스피” → 활성화 됨 → 저장.
- “코스닥” → 활성화 됨 → 저장.
- 결과적으로 DB에는 오늘 날짜로 **2개 행(Row)**만
INSERT 됩니다.