-
프로젝트 데이터베이스 설계(RDBMS vs NoSQL 선정기준 + 특정 RDBMS 선정이유)프로젝트/게시판 프로젝트 2022. 3. 29. 22:36728x90
1. 요구 사항 분석
데이터베이스를 사용할 주요 사용자의 범위 결정
배달비를 절약하고 싶은 사용자
사용자가 수행하는 업무 결정
회원가입, 로그인, 로그아웃, 배딜개최, 채팅 사용
사용자의 업무와 관련해 필요한 데이터 결정
로그인(회원가입, 로그아웃)에 필요한 데이터 (닉네임, 아이디, 비밀번호, 이름, 주소, 휴대폰 번호, 비밀번호 찾기)
음식점 데이터(음식점 식별 번호, 음식점 이름, 음식점 사진, 음식점 주소, 음식점 위치)
배딜개최에 필요한 데이터 (배딜번호, 음식점 데이터, 배달비, 모집글, 모집인원, 작성 시간, 작성자)
채팅 사용에 필요한 데이터 (채팅 번호, 채팅 참여자, 채팅 내용, 채팅 시간) = 채팅에 대해 잘 모르기 때문에 추후 수정될 가능성 多
Ant Hill의 데이터베이스를 위한 요구 사항 명세서
① Ant Hill에 회원으로 가입하려면 (닉네임, 회원 아이디, 비밀번호, 이름, 주소, 휴대폰 번호, 비밀번호 찾기)를 입력해야 한다.
② 가입한 회원에게는 배딜을 개최할 수 있는 권한이 주어진다.
③ 회원은 회원 아이디/닉네임(으)으로 식별한다.
④ 음식점에 대한 음식점 번호, 음식적 이름, 음식점 사진, 음식점 위치를 제공해야 한다.
⑤ 음식점은 음식점 번호로 식별한다.
⑥ 회원은 여러 톡딜을 개최할 수 있다.
⑦ 회원이 톡딜을 개최하면 채팅방이 생성됩니다.
⑧ 회원/비회원 모두 채팅방에 참여할 수 있습니다.
⑨ 배딜에 대한 배딜 번호, 음식점 데이터, 배달비, 모집글, 모집인원, 작성 시간, 작성자를 제공해야 한다.
⑩ 배딜은 배딜번호로 식별합니다.
⑪ 채팅에 대해 채팅 번호, 채팅 참여자, 채팅 내용, 채팅 시간을 제공해야 합니다.
⑫ 채팅은 채팅 번호로 식별합니다.
⑬ --
⑭ --2. 데이터베이스 선택 ( RDBMS vs NoSQL)
데이터베이스 선택을 위해 RDBMS와 NoSQL의 차이점과 특징들을 공부하여 보았습니다.
이를 기반으로 프로젝트에 알맞은 데이터베이스를 선택해보고자 합니다.
가장 유명한 채팅 애플리케이션인 카카오톡 은 대부분 MySQL을 사용한다고 합니다. (해당 글에는 왜 MySQL을 사용하는지에 대한 내용은 존재하지 않습니다)
https://tech.kakao.com/2020/08/28/2021-kakao-newkrew-2/
고려사항
조회를 많이 하는 데이터
사용자 로그인을 유지하기 위한 세션에는 특별한 목적이 존재합니다.
데이터가 변경될 일도 없으며 검색을 위해 복잡한 쿼리를 수행할 필요가 없고 고속 읽기와 쓰기에 적합한 NoSQL가 유리합니다.
이처럼 특별한 목적이 있을 때 NoSQL을 사용합니다.
현재 채팅 시스템을 설계하기 위해서는 조금 더 공부가 필요할 것 같습니다.
https://velog.io/@jay/software-architecture-chat
채팅 데이터에는 읽기와 쓰기가 모두 중요합니다.
또한 채팅 데이터는 변경될 수 있고 변경되지 않을 수 있습니다(애플리케이션의 요구사항에 따름)
채팅 데이터가 변경된다고 해서 다른 데이터에 영향을 미치지는 않습니다.(단, 사용자끼리 무분별하게 채팅 데이터를 변경할 경우 의사소통에 혼란을 야기할 순 있습니다.)
채팅방이 고유한 식별 값을 가지며 사용자는 여러 개의 채팅방을 소유할 수 있습니다.
사용자가 소유한 채팅방의 식별값을 통해 채팅 데이터들을 불러옵니다.
-- 추후 업데이트 예정--
RDBMS는 어떤 것을 사용해야 할까요?
MySQL, Oracle, PostgreSQL, MariaDB 등 유명한 RDBMS들이 존재합니다.
다음 사이트에서는 데이터베이스 엔진의 순위를 제공합니다.
https://db-engines.com/en/ranking_definition
웹사이트에서 시스템에 대한 언급 수, 시스템에 대한 일반적이 관심, 시스템에 대한 기술 토론의 빈도, 시스템이 언급된 채용 제안의 수, 시스템이 언급된 전문가의 프로필 수, 소셜 네트워크들을 반영하여 점수가 선정됩니다.
Oracle, MySQL이 압도적이네요..
그러면 Oracle, MySQL, PostgreSQL, MariaDB에 대해서 간단하게 알아보겠습니다.
지원하는 운영체제와 언어
4개 모두 대부분의 운영체제와 프로그래밍 언어를 지원합니다.
가격(License)
대용량으로 DB를 사용해본 사람들의 후기 비교
결론
명확한 스키마가 필요하고 join이 필요한 RDBMS가 적합한 곳 = 회원 데이터, 톡딜 데이터에는 RDBMS를 사용하자.
RDBMS는 많은 기업들이 사용하고 협업하는 팀원과 내가 다루어본 MySQL로 선정하였습니다.
데이터가 변경될 일도 없으며 검색을 위해 복잡한 쿼리를 수행할 필요가 없고 고속 읽기와 쓰기에 적합한 NoSQL가 유리한 사용자 로그인 유지를 위한 세션에는 NoSQL을 사용하자.
번외
휴대전화 또는 이메일 인증은 Firebase를 사용한다면 편리하게 구현할 수 있습니다.
하지만 AWS와 같은 다른 클라우드보다 가격이 비싸다는 단점이 존재합니다.
출처
https://terms.naver.com/entry.naver?docId=3431221&cid=58430&categoryId=58430
[네이버 지식백과] 요구 사항 분석 (데이터베이스 개론, 2013. 6. 30., 김연희)
https://stackoverflow.com/questions/3423193/why-nosql-say-traditional-rdbms-is-not-good-at-scalable
https://stackoverflow.com/questions/8729779/why-nosql-is-better-at-scaling-out-than-rdbms
https://benlee73.tistory.com/178
https://blog.siner.io/2021/10/11/rdbms-comparison/
https://www.youtube.com/watch?v=N6MqIVAz_kM
'프로젝트 > 게시판 프로젝트' 카테고리의 다른 글
@Builder 제대로 알고 사용해보기 (0) 2022.04.30 JPA로 CRUD 해보기 + 테스트코드 (0) 2022.04.28 Spring Boot + MySQL 연동(feat. Spring initializr) (0) 2022.04.26 테이블의 PK는 어떤값으로 잡아야 할까? (0) 2022.04.21 로그인 기능 구현 시 고려 사항(쿠키, 세션, 로컬 스토리지, 인증과 인가, 토큰, Oauth) (0) 2022.03.24