Final Project : 데이터베이스 변경 및 설계
목차
- 데이터베이스 변경
- 데이터베이스 설계
데이터베이스 변경
앞서서 MySQL로 데이터베이스를 선정했으나 너무 비효율적인 문제가 있기 때문에 다시 NoSQL로 데이터베이스를 변경하기로 했습니다. 익숙하게 사용했던 MongoDB를 다시 꺼냈고 GCP를 사용하는 클라우드 데이터베이스인 MongoDB Atlas를 사용했습니다.
데이터베이스 설계
user_info
collection
- 유저의 정보를 저장하는 collection
- 저장 정보
uid
: user unique idlogin
: user github id (login id)star_pages
: user starpage count
- Collection 설계
1
2
3
4
5
6
{
"uid": int,
"login": string,
"star_pages": int,
"star_in_item": list
}
repostiory
collection
- repository 정보 저장 collection
- 저장 정보
rid
: repository unique iduid
: repository owner user unique idlogin
: repository owner github idrepo_name
: repository namestars
: star countstar_pages
: star page by 100topics
: repository topic taglanguages
: repository configuration languagescategory
category_L
: job type (eg. front-end)category_M
: platform or language (eg. React.js)category_S
: Criteria classified by awesome
updated_at
: repository update date
- Collection 설계
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"rid": int,
"uid": int,
"login": string,
"repo_name": string,
"stars": int,
"star_pages": int,
"topics": list,
"languages": dict,
"category": {
"category_L": string,
"category_M": string,
"category_S": string
},
"updated_at": datetime
}
similarity
collection
- 아이템별 top k 유사도를 저장하는 collection
- item별 유사도별로 저장
- 저장 정보
rid
: repository unique idsimn
: 특정 유사도 기준 top k개rid
리스트
- Collection 설계
1
2
3
4
5
6
{
"rid": int,
"sim1": list,
...
"simn": list
}
repo_user
collection
- repository와 user의 star linking collection
$\rightarrow$repository
collection에star_user_list
를 편입하는게 나은가? - 저장 정보
rid
: repository unique idlogin
: repository owner github idrepo_name
: repository namestar_user_list
: starred userrid
list
- Collection 설계
1
2
3
4
5
6
{
"rid": int
"login": string
"repo_name": string,
"star_user_list": list
}
model
collection
- 지속적으로 훈련하는 model의 정보를 저장하는 collection
- 가장 score가 높은 모델이 최근에 저장됨
- 저장 정보
name
: model namemodel.pt
: model.pt informationtime
: save timescore
: model score metric
- Collection 설계
1
2
3
4
5
6
{
"name": string,
"model.pt": dict,
"time": datetime,
"score": float
}
Comments powered by Disqus.