DB 선택 과정 - boostcampwm2023/iOS04-HeatPick GitHub Wiki
🖼️ 배경
선택할 수 있는 DB 타입은 크게 RDB와 NoSQL로 나뉘었습니다. 프로젝트에서 팔로잉, 팔로워 같은 관계가 복잡한 곳에서는 부분적으로 NoSQL를 사용하는게 좋을 듯 싶었고 이 외에 부분에는 여러 모델이 복잡히 얽히게 될 것을 예상하고, RDB가 적합하다고 판단했습니다.
✅ 결정
- RDB(MySQL)만 사용하기로 결정
🤷🏻 이유
SNS 시스템이기 때문에 '유저'라는 테이블과 스토리, 댓글, 프로필 이미지, 유저끼리 등 다양한 정보와 연관 관계를 맺게 됩니다. 따라서 이를 표현하고, 필요에 맞게 데이터를 가공하기 위해서는 RDB가 가장 적합하다고 생각하였습니다. 또한 데이터 스키마의 일관성을 유지하여 항상 설계된 형태의 데이터가 들어온다는 확신을 바탕으로 효과적으로 관리할 수 있다고 판단하였습니다. 또한 팔로잉, 팔로워의 복잡한 연관 관계 오직 하나를 위해서 NoSQL까지 도입하는 것은 비용이 많이 드는 작업이라 생각하였기에 배제하였습니다.
🤔 우려되는 점
예상하지 못한 모델이나, 모델 간의 관계가 형성될 수 있기 때문에 유동적으로 문제를 해결해 나갈 예정입니다.