[MGP] 프로젝트 1. DB에 대한 고민

Seungeun·2024년 8월 31일
post-thumbnail

정부에서 제공하는 착한가게 업소 공공데이터를 활용하기로 했다.
https://www.data.go.kr/data/3045247/fileData.do

첫번째 고민

오픈 API를 활용해 프론트앤드에서 매번 오픈 API를 불러올 것인가?

총 가게의 개수는 약 8000개 정도로

1) 첫 화면에서 페이지네이션을 구현한다고 해도 매번 사용자가 접속할 때마다 오픈 API를 호출하는 것과

2) 차라리 우리 DB에 한번에 데이터를 저장후 필요한 API를 보내주는 것

두개 방법이 존재했고 어떤 것이 더 적합한지 고민했다. 결국 두번째 방법을 선택하게 되었다.

2번을 선택한 이유는

  • 제공되는 데이터가 빈번하게 변한다면 1번 방법이 맞다고 생각하지만 한달에 한번 변경되며
  • 데이터가 많이 변경되지않고 서비스에서 사용하기 위한 데이터 전처리과정도 어렵지 않다고 생각해
  • 또한, 위도-경도 데이터를 추가해야하며 여러 필드 데이터를 변경시켜야했으므로
    : 물론 오픈 API를 불러와 데이터를 가공할 수 도 있지만 더 번거로울 것 같았다.

우리 DB에 데이터를 모두 저장하기로 했다.

두번째 고민

어떤 데이터베이스를 사용할 것인가?

  1. 많은 레퍼런스가 존재하고 이전에 사용해봤던 MYSQL
  2. NOSQL사용해보기 + 불규칙한 데이터 이용에 적합한 몽고 DB

먼저 이용한 공공데이터를 보여주자면

필드가 이런식으로 구성되어있다

시도-구-업종-업소명-주소-연락처-메뉴1-가격1-메뉴2-가격2-메뉴3-가격3

그런데 이 필드가 모두 채워져있는 것이 아니고 가게마다 메뉴가 아예 없거나 1~3개 사이에서 다양하게 존재했다.

처음에는 메뉴를 배열로 묶어서 생각하지 않았고 이러한 데이터는 불규칙하다고 생각했기 때문에 몽고 디비를 선택했다. 경험이 부족해서 데이터가 불규칙한게 어디까지 불규칙한지, 관계형 디비와 NoSQL 디비에 불규칙이 어디까지 적용되는지 몰랐던 것 같다. 사실 이정도 데이터면 없는 데이터는 Null값으로 채우며 그냥 관계형을 써도 괜찮았을 것 같다.

그러나 이러한 선택으로 인해..
-> 한달이라는 시간동안 개발을 진행했는데 nest js도 처음인데 디비까지 처음인 것을 쓰다보니 공부+구현까지 시간이 오래 걸렸다. 다음에는 이러한 것도 고려해야겠다.

profile
Wonderland

0개의 댓글