Home [BoostCamp AI Tech / Final] Day77 - 더미데이터 제작 및 GCP 세팅
Post
Cancel

[BoostCamp AI Tech / Final] Day77 - 더미데이터 제작 및 GCP 세팅

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를 받아온 것으로 해야함

    • ipconfigifconfig로 나온 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인 uidlogin을 기본적으로 담고 있음
  • 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)
  • topicslanguages는 각각 리스트랑 dictionary인데, MySQL은 이것들을 저장할 수 있는 type이 없기 때문에 전부 문자열로 변경해서 저장함
    • 이 경우 데이터를 불러오고 eval로 전환할 필요가 있음
    • 일반적으로 데이터베이스를 구축할 때 리스트나 딕셔너리는 어떻게 관리하는지 찾아볼 필요가 있을듯

repo_user table

  • 특정 repository를 star한 user 목록을 저장한 일종의 user와 repository를 연결하는 테이블
  • star_user_list는 user테이블에 있는 user들의 uid 리스트가 문자열로 저장되어 있음
  • uidrid는 특정 repository의 rid와 소유자의 uid를 갖고 있음
This post is licensed under CC BY 4.0 by the author.

[BoostCamp AI Tech / Final] Day76 - 프로젝트 개요

[Airflow] 1.데이터 파이프라인과 Airflow

Comments powered by Disqus.