어떤 데이터 베이스를 사용할까?
Iride-scent
는 현재 내가 속한 토이프로젝트 팀 PeachTri가 현재 기획하고 제작에 들어가려고 하는 향수 추천 어플리케이션이다. 이런 추천 서비스를 위해서는 향수의 노트나 제작에 들어가는 재료와 같은 여러가지 데이터의 입력을 필요로 한다. 그래서 우리 팀은 어떠한 DB가 우리 어플리케이션 특성에 맞춰서 적용할 수 있는 DB인지를 파악해보려고 한다.
저장을 필요로 하는 데이터는 어떤 것들이 있을까?
우리 어플리케이션 Iride-scent
는 향수 추천 어플리케이션으로 기본적으로 다음과 같은 정보들을 저장할 것을 목표로 했다
향수
- 이름
- 조향사
- 노트
- 재료
- 향수의 특성
일차원 적으로 이러한 향수의 정보들을 먼저 저장하고, 향수의 재료와 향수의 특성을 토대로 유사한 향수들을 추천하는 방식으로 어플리케이션을 디자인 하였다. 차후의 이런 어플리케이션에서 로그인을 통한
유저 정보
가 저장된다면 다음과 같이 확장되게 된다.유저
- 향수 리뷰
- 이용한 향수
- 추천도 (평점)
- 시향 후 선호도나 좋아요 정보 등등
아마도 이러한 정보를 비롯하여서 다른 이용자에게도 추천을 할 수 있도록 넘어가는 방식으로도 생각해 볼 수 있다. 일단 지금 당장의 기능은 위의 향수를 비롯한 유사 향수의 추천이며, 로그인을 이용한 유저기능은 또 다른 문제이기 때문에 핵심 기능인 향수추천에 대해서 먼저 집중하려고 한다.
RDB? NoSQL
RDB은 관계형 데이터 베이스로 전공에서 흔히 배우는 mySQL과 같은 데이터 베이스를 뜻한다. DB가 형태가 굉장히 견고하며, 열과 행이 애트리뷰트와 레코드를 나타내는 테이블 형식의 데이터 베이스인 RDB는 CRUD 명령어를 통해서 조작하며, 널리쓰이는 형태의 DB이다. 반면 NoSQL은 이름 그대로 SQL을 이용하지 않는 데이터 베이스이다. 고정되지 않은 테이블 스키마를 이용하며, RDB에 비해서 훨씬 커다란 용량의 데이터 베이스를 저장할 수 있는 형식이다.
RDB
- MySQL
- MariaDB
- Oracle
- PostgreSQL
NoSQL
- MongoDB
- Couchbase
- Cassandra
다음과 같이 DB들에 대한 조사를 마치고, 어떤 DB를 사용할지 팀원들이 함께 조율중이다.
#
선택은 항상 신중해야 한다
항상 고민되는건 테크스택이라고 생각한다. 오히려 개발할 때 보다 더 신경쓰이고 고민된다. 우리의 서비스에 어떤 방식이 어울릴지, 어떤 개발방식이 더 유연할지에 대해서, 즉, 미래에 대해서 고민하는 과정이라고 생각한다. 그래서 더 신경쓰인다고 생각이 든다. 단, 레거시는 항상 생긴다. 서비스는 유지보수되고 언젠간 낡은 것이 되어 고장난 곳을 고쳐야 한다. 생명체와도 같은 프로그램을 잘 설계하는 것도 중요하지만, 적절하게 설계를 끝마치고 추진력을 가지고 개발을 완료하고 잘 유지보수 하는 과정도 중요하다고 본다.