boostcampaitech6 / level2-3-cv-finalproject-cv-01

level2-3-cv-finalproject-cv-01 created by GitHub Classroom
0 stars 1 forks source link

feat: Airflow 배치 서빙 및 Mysql 주기적 업데이트 #131

Closed classaen7 closed 5 months ago

classaen7 commented 5 months ago

Overview

Change Log

To Reviewer

Issue Tags

2018007956 commented 5 months ago

DB 관련 변경 사항의 3번째 항목에 대한 코멘트입니다. 참조 테이블이 존재하는 테이블을 flush 하는 방법으로 다음과 같은 방법들이 있습니다.

  1. 단일 튜플 삭제: 데이터를 튜플(행) 단위로 삭제하는 방법. 가장 단순하고 안전하지만, 대량의 데이터를 삭제해야 할 때는 시간이 많이 걸릴 수 있음.
  2. 외래키 제약 조건 무시: 일부 데이터베이스 관리 시스템(DBMS)에서는 외래키 제약 조건을 일시적으로 무시하고 데이터를 삭제할 수 있는 기능 제공. MySQL에서는 SET FOREIGN_KEY_CHECKS=0;을 실행하여 외래키 검사를 일시적으로 비활성화할 수 있음. 이 후 데이터를 삭제하고, SET FOREIGN_KEY_CHECKS=1;을 실행하여 다시 활성화함. 이 방법을 사용할 때는 데이터 무결성에 주의 필요.
  3. CASCADE 옵션 사용: 외래키 제약 조건을 설정할 때 ON DELETE CASCADE 옵션을 사용하면, 주 테이블의 데이터가 삭제될 때 참조하는 테이블의 관련 데이터도 자동으로 삭제됨.
  4. 임시적으로 외래키 제약조건 제거: 데이터를 삭제하기 전에 외래키 제약조건을 임시적으로 제거하고, 데이터 삭제 후 다시 제약조건을 추가하는 방법. 데이터의 무결성을 유지하기 위해 주의 필요.

저희가 제공받은 Naver Cloud Platform (ncp) 서버에서는 DB 용량을 크게 신경쓰지 않아도 될 것 같은데, NCP 서버 회수 후 AWS로 서비스를 운영하게 되면 스토리지 비용이 나가기 때문에 krx 테이블에 history가 쌓이는 것보다 flush되는 구조가 더 적절할 것 같습니다.

classaen7 commented 5 months ago

DB에 대한 코멘트에 대해 의견 남깁니다.

처음에 Airflow에서 krx 테이블을 관리하던 방식은 모든 데이터를 삭제하고 dag이 실행되는 날짜에 대한 상장 종목만을 테이블에 업데이트하는 방식으로 작동했습니다. 이 경우 테이블이 삭제되고 업데이트되는 시간 동안 krx 테이블에 데이터가 공백이 되는 시간이 발생합니다. 우리 서비스의 경우 krx 테이블에 있는 종목만을 사용자에게 제공하기 때문에 해당 테이블이 비어있는 시간동안은 서비스를 정상적으로 운용할 수 없습니다. 따라서 이러한 공백을 없애고자 krx 테이블에 주가 종목이 갱신되는 날짜인 date 열을 추가하여 테이블이 삭제되지 않는 방식으로 변경하였습니다. 열이 추가됨에 따라 db 용량이 커질 수 있지만 제공하는 주가 종목이 2천~3천개이며 이 크기의 데이터 수는 db 용량에 큰 영향을 주지 않을거라 보았습니다. 하지만 AWS로 서비스를 운용하게 되면 운용 비용에 대한 측면도 고려해야하기 때문에 추후 DB 구성 방식의 변경이 필요해 보입니다.

현재 생각되는 방식은 다음과 같습니다. Airflow를 통해 모든 테이블을 삭제하고 업데이트하는 형식이 아닌 미리 서비스할 주가 종목들을 필터링 한 뒤에 서비스에서 제외할 종목만을 삭제하는 형식으로 변환하는 방식이 가장 좋을 것 같습니다. 이때 위의 코멘트의 여러 삭제방법 중 하나를 적용하면 좋을 것 같습니다.

또한 DB 테이블 용량에 대해서는 krx 테이블 보다 계속해서 쌓이고 있는 모델 예측 테이블들의 경우 가장 큰 고려대상이라고 생각됩니다. 다른 테이블을 수정하면서 krx 테이블 또한 영향을 받을 수 있기 때문에 현재 테이블 업데이트 방식은 유지하되, AWS로 서비스를 운영하기 전까지 모든 테이블에 대한 재구성이 필요하다고 생각됩니다.

classaen7 commented 5 months ago

Further Task

2018007956 commented 5 months ago