목록프로그래밍 (91)
코딩하는 문과생
개인 프로젝트를 하던 도중에 여러 분석 기법들을 이용해 데이터를 분석하는 코드를 작성해야 했다. [처음 도입한 방식 : 공통 테이블] 추후 추가될 가능성을 생각해 코드의 일반화가 필요했고, 하드코딩을 줄이고 순수 로직만을 코드에 녹여내기 위해서 분석 기법을 관리하는 테이블을 생성하기로 결정했다. 설계한 테이블은 아래와 같다. trade_cls_cd분석기법코드trade_cls_nm분석기법명timing_period분석기간safe_degree기법 신뢰도batch_name분석 배치명use_yn사용유무 해당 테이블을 배치에서 조회해 for을 돌리는 방식으로 구성해, 최대한 수정을 줄일 수 있는 방향으로 코드를 작성하고자 했다.(몇 가지 기법을 나중에 추가해도 테이블에 데이터만 넣으면 된다.) - timingDay..
[개요] API로 호출한 데이터를 DB에 저장할 일이 생겼다. 약 16,000개 기업에 대해, API로 조회한 약 5년치 주가를 테이블에 저장하는 것인데, 데이터의 양은 대략 16,000 * 5년 * 약 200일(주가시장 거래일) = 약 1,600만 정도다. (절대로 무시할 양이 아니다...) [이전 코드] 처음엔 생각나는 대로 코드를 작성했는데, 결론적으로 처음 작성한 코드는 사용이 불가했다. 그 이유는 시간이 오래걸려서 인데, 한 회사의 주가를 가져와 저장하는 데 약 1분정도 소요되었다. 작성했던 코드를 간략히 설명하자면 1. API를 호출해 DataFrame에 담는다. 2. 테이블의 최신날짜를 조회한다. 2-1. 데이터가 없다면 from_date을 2016년 1월 1일로 설정 2-2. 데이터가 있다..
[Enum클래스 장점] 문자열과 비교해, IDE의 적극적인 지원을 받을 수 있습니다. 허용 가능한 값들을 제한할 수 있습니다. 리팩토링시 변경 범위가 최소화 됩니다.(내용의 추가가 필요하더라도, Enum 코드외에 수정할 필요가 없습니다. -> 공통코드라 생각하면 될 듯 하다.) [개발 시 Enum클래스 사용하는 이유] 1. 데이터들 간의 연관관계 표현 가능 - 1,0 or true, false 처럼 동일한 의미를 다르게 처리하는 경우, Enum 클래스를 이용해 단일한 의미로 변경해 처리할 수 있다. ex) GUEST라는 Enum 상수 내에 동일한 의미를 가진 값을 넣어 참조가 가능하다. @Getter @RequiredArgsConstructor public enum Role { GUSET("손님", fa..
1. 옵티마이저와 실행계획 - 옵티마이저 : 데이터 딕셔너리에 있는 통계정보를 활용해 예상되는 비용을 산정, 최저비용의 계획을 선택해 SQL을 실행시킨다. * 힌트를 부여해 실행계획을 변경시킬 수 있다. * PLAN_TABLE을 조회해 실행계획을 볼 수 있다. - 종류: 규칙기반 or 비용기반(default)으로 실행계획 수립 - 옵티마이저 엔진 Query Transformer: sql문을 효율적으로 실행하기 위해 옵티마이저가 변환한다. Estimator: SQL실행비용을 계산 Plan Generator: 실행계획 수립 2. 인덱스 - 특징 인덱스는 정렬되어 있다. 여러 개의 칼럼으로 구성 인덱스 구조는 Root Block, Branch Block, Leaf Block으로 구성되어 있다. Leaf Blo..