본문 바로가기

Project

[간단한 퀴즈 서비스] 퀴즈 데이터 DB 이관

 

 1차 개발 당시 퀴즈 데이터 세트를 서버 map 자료구조에 저장해서 썼었다.

메모리에 있으니 DB에 있는 것보다는 응답이 빠르겠지만 서버를 띄울 때마다 정제해 놓은 퀴즈 세트 excel 파일을 읽어서 메모리에 올려서 하는 방식을 계속 지속하기에는 데이터 관리 영구적으로 되는 것도 아니고 그렇다고 같은 메모리에 저장되지만 문제가 Redis처럼 관리되는 형태도 아니었기에 RDBMS 혹은 in-memory cache로 넘어가야 할 일이라 생각하였다.

 

 기존 회원 데이터, 퀴즈 점수 등은 mysql로 관리되고 있었기에 퀴즈 데이터도 RDBMS로 관리하기로 하였다.

Redis를 쓰면 빠르겠지만 AWS freetier유저라 작고 소박한 1GB짜리 EC2 서버에 여러 서비스를 띄우기에 서버에 지장이 되지 않을까 하여 가급적 안 띄우기로 하였다.

Redis와 같은 in-memory cache의 적용 여부는 추후에 성능 테스트 이후 서비스 이용자 수와 서버에서 감당할 수 있는 정도, 서버 비용에 얼마나 더 지불할 수 있는지 등을 본 다음에 결정하는 것이 좋겠다 판단하였다.

 

퀴즈 api에서 사용하는 응답 값 항목을 바탕으로 아래와 같이 quiz 테이블을 정의하였다

현재는 국어 어휘 문제만 있지만 추후에 다른 유형의 퀴즈들이 추가될 수 있으므로 quiz_type 필드를 주었다.

단어와 뜻 그리고 초성을 저장해 두었다.

초성의 경우 힌트로 제공된다.

 

excel파일에 정제해 두었던 3,200여 개의 퀴즈 데이터 셋을 mysql table로 추가하였다.

 

 

기존 노드 서버에 map으로 만든 데이터에서 퀴즈 데이터를 랜덤으로 가져오도록 하였던 것을

DB에서 가져오도록 코드를 수정하였다.



DB 퀴즈 세트르 넣은 뒤에도 퀴즈 데이터들을 잘 가져온다.

 

 

이번에는 다행히 꽤나 순조로웠다.

언제 지금 설계한 테이블 구조가 부족하게 느껴질지는 모르지만 말이다.