Final Project : 더미데이터 제작 및 GCP 세팅
목차
- Dummy data 제작
- GCP 세팅 및 인프라 구축
Dummy data 제작
- github에서 데이터 수집용 API를 제공해서 그것을 활용해서 데이터를 수집함
- 모델의 간이 학습 결과 및 데이터 분석을 위해 팀원 사이언티스트 팀에서 더미 데이터를 요청함
- awesome-nodejs repository의 readme를 기반으로 repository를 선정함
- 각 repository의 star user list를 1000명 수집
- 약 480여개의 repository data와 2~3만여명의 user data를 수집함
- 데이터를 확장하는데, awesome list에서 Deno, Angular 등 일부 javascript 기반의 repository를 선정하기로 함
- 현재 github api가 5000/시간 제한이 있어서 제한에 걸리면 저장하고 이후부터 이어서 저장하는 방식을 고려하는 중
- Airflow를 통해 자동화를 생각중이지만 일단 태스크 분리부터 해야 할 것으로 보임
- 무엇보다 airflow가 익숙하지가 않음
GCP 세팅 및 인프라 구축
- 데이터베이스를 firestore로 구축할 필요성을 크게 못 느껴서 RDB로 선정
- GCP 상에 데이터베이스를 올리고 MySQL을 사용하기로 함
- 과거에 서버에 MySQL 직접 올리다가 보안 문제 발생한 안 좋은 기억이 있어서 Cloud SQL을 사용
- 매우 편리함 ^^
- 현재 팀원들 upstage IP 주소 입력해서 보안 세팅도 끝난 상태
Cloud SQL (MySQL 8)
- Cloud SQL 설정 자체는 매우 간단함
- [GCP] MySQL 환경 구축 블로그를 참고해서 세팅함
- 보안 IP 설정 부분에서만 조금 다르게 해야함
curl ipconfig.io
위 커맨드를 터미널에 입력해서 ip를 받아온 것으로 해야함
ipconfig
나ifconfig
로 나온inet
ip주소는 GCP 연결때 오류가 남
- Dummy dataset에 대해서는 MySQL에 업데이트 해놓은 상태
- DB 수업을 들은지 좀 지나서 제대로 짰는지는 가물가물하지만… 대략적으로 테이블 구조를 짰음
user table
- user table은 기본적인 구조는 user를 구분하는
uid
와 user의 login id인login
repository table
- item 역할을 하는 repository table
- repository의 고유 id인
rid
와 소유자의 user id인uid
와login
을 기본적으로 담고 있음 star_pages
는 star한 user list를 api로 받아오기 위해 필요한 정보라 따로 계산 $\rightarrow$ 문제는 github api는 page를 최대 400 page까지 불러올 수 있음category_L
은 Node.js, Deno, Angular 등 큰 아이템 분류값 (awesome 카테고리가 있는 것으로)category_M
은 오히려 backend나 frontend 처럼 직군으로 분류category_S
는 특정 awesome 내부에 분류된 카테고리 (ex. Node.js $\rightarrow$ Logging)topics
와languages
는 각각 리스트랑 dictionary인데, MySQL은 이것들을 저장할 수 있는 type이 없기 때문에 전부 문자열로 변경해서 저장함- 이 경우 데이터를 불러오고
eval
로 전환할 필요가 있음 - 일반적으로 데이터베이스를 구축할 때 리스트나 딕셔너리는 어떻게 관리하는지 찾아볼 필요가 있을듯
- 이 경우 데이터를 불러오고
repo_user table
- 특정 repository를 star한 user 목록을 저장한 일종의 user와 repository를 연결하는 테이블
star_user_list
는 user테이블에 있는 user들의uid
리스트가 문자열로 저장되어 있음uid
와rid
는 특정 repository의rid
와 소유자의uid
를 갖고 있음
Comments powered by Disqus.