-
프로젝트 데이터베이스 설계(RDBMS vs NoSQL 선정기준 + 특정 RDBMS 선정이유)프로젝트/게시판 프로젝트 2022. 3. 29. 22:36반응형
1. 요구 사항 분석
데이터베이스를 사용할 주요 사용자의 범위 결정
배달비를 절약하고 싶은 사용자
사용자가 수행하는 업무 결정
회원가입, 로그인, 로그아웃, 배딜개최, 채팅 사용
톡딜 예시(https://store.kakao.com/) 사용자의 업무와 관련해 필요한 데이터 결정
로그인(회원가입, 로그아웃)에 필요한 데이터 (닉네임, 아이디, 비밀번호, 이름, 주소, 휴대폰 번호, 비밀번호 찾기)
음식점 데이터(음식점 식별 번호, 음식점 이름, 음식점 사진, 음식점 주소, 음식점 위치)
배딜개최에 필요한 데이터 (배딜번호, 음식점 데이터, 배달비, 모집글, 모집인원, 작성 시간, 작성자)
채팅 사용에 필요한 데이터 (채팅 번호, 채팅 참여자, 채팅 내용, 채팅 시간) = 채팅에 대해 잘 모르기 때문에 추후 수정될 가능성 多
Ant Hill의 데이터베이스를 위한 요구 사항 명세서
① Ant Hill에 회원으로 가입하려면 (닉네임, 회원 아이디, 비밀번호, 이름, 주소, 휴대폰 번호, 비밀번호 찾기)를 입력해야 한다.
② 가입한 회원에게는 배딜을 개최할 수 있는 권한이 주어진다.
③ 회원은 회원 아이디/닉네임(으)으로 식별한다.
④ 음식점에 대한 음식점 번호, 음식적 이름, 음식점 사진, 음식점 위치를 제공해야 한다.
⑤ 음식점은 음식점 번호로 식별한다.
⑥ 회원은 여러 톡딜을 개최할 수 있다.
⑦ 회원이 톡딜을 개최하면 채팅방이 생성됩니다.
⑧ 회원/비회원 모두 채팅방에 참여할 수 있습니다.
⑨ 배딜에 대한 배딜 번호, 음식점 데이터, 배달비, 모집글, 모집인원, 작성 시간, 작성자를 제공해야 한다.
⑩ 배딜은 배딜번호로 식별합니다.
⑪ 채팅에 대해 채팅 번호, 채팅 참여자, 채팅 내용, 채팅 시간을 제공해야 합니다.
⑫ 채팅은 채팅 번호로 식별합니다.
⑬ --
⑭ --2. 데이터베이스 선택 ( RDBMS vs NoSQL)
RDBMS와 NoSQL 정리(+ 차이점, 언제 무엇을 사용해야 할까)
RDBMS란? RDBMS란(Relational DataBase Management System)의 약자로 관계형 데이터베이스를 수정하고 관리할 수 있는 소프트웨어입니다. 관계형 데이터베이스란 무엇일까요? 데이터를 열(Column)과 행(row)으로..
junuuu.tistory.com
데이터베이스 선택을 위해 RDBMS와 NoSQL의 차이점과 특징들을 공부하여 보았습니다.
이를 기반으로 프로젝트에 알맞은 데이터베이스를 선택해보고자 합니다.
가장 유명한 채팅 애플리케이션인 카카오톡 은 대부분 MySQL을 사용한다고 합니다. (해당 글에는 왜 MySQL을 사용하는지에 대한 내용은 존재하지 않습니다)
https://tech.kakao.com/2020/08/28/2021-kakao-newkrew-2/
2020 신입 개발자 Oli가 말하는 "내가 DBA를 선택한 이유"
다양한 서비스에 맞춰진 국내 최대 규모의 데이터베이스를 효율적으로 관리하는 경험을 할 수 있는 카카오 DBA Oli의 이야기 안녕하세요. 2020 신입 개발자 블라인드 공채로 입사한 Oli입니다. 컴퓨
tech.kakao.com
고려사항
조회를 많이 하는 데이터
사용자 로그인을 유지하기 위한 세션에는 특별한 목적이 존재합니다.
데이터가 변경될 일도 없으며 검색을 위해 복잡한 쿼리를 수행할 필요가 없고 고속 읽기와 쓰기에 적합한 NoSQL가 유리합니다.
이처럼 특별한 목적이 있을 때 NoSQL을 사용합니다.
현재 채팅 시스템을 설계하기 위해서는 조금 더 공부가 필요할 것 같습니다.
https://velog.io/@jay/software-architecture-chat
채팅 시스템 설계
가상 면접 사례로 배우는 대규모 시스템 설계 기초 챕터 12 스터디
velog.io
채팅 데이터에는 읽기와 쓰기가 모두 중요합니다.
또한 채팅 데이터는 변경될 수 있고 변경되지 않을 수 있습니다(애플리케이션의 요구사항에 따름)
채팅 데이터가 변경된다고 해서 다른 데이터에 영향을 미치지는 않습니다.(단, 사용자끼리 무분별하게 채팅 데이터를 변경할 경우 의사소통에 혼란을 야기할 순 있습니다.)
채팅방이 고유한 식별 값을 가지며 사용자는 여러 개의 채팅방을 소유할 수 있습니다.
사용자가 소유한 채팅방의 식별값을 통해 채팅 데이터들을 불러옵니다.
-- 추후 업데이트 예정--
2021.09.12 개발 일지 (채팅 자동 스크롤 되는 시점 수정, DB 구조 추가)
현재 채팅이 자동 스크롤되도록 구현된 상태인데 이것은 Firebase Realtime Database의 onValue 메소드를 이용해서 새로운 채팅이 등록될 때마다 스크롤이 되는 것이었다. 평소에 카톡을 이용해보면 1. 채
askges20.tistory.com
RDBMS는 어떤 것을 사용해야 할까요?
MySQL, Oracle, PostgreSQL, MariaDB 등 유명한 RDBMS들이 존재합니다.
다음 사이트에서는 데이터베이스 엔진의 순위를 제공합니다.
https://db-engines.com/en/ranking_definition
DB-Engines Ranking - Method
Ranking > Method Method of calculating the scores of the DB-Engines Ranking The DB-Engines Ranking is a list of database management systems ranked by their current popularity. We measure the popularity of a system by using the following parameters: Number
db-engines.com
https://db-engines.com/en/ranking 웹사이트에서 시스템에 대한 언급 수, 시스템에 대한 일반적이 관심, 시스템에 대한 기술 토론의 빈도, 시스템이 언급된 채용 제안의 수, 시스템이 언급된 전문가의 프로필 수, 소셜 네트워크들을 반영하여 점수가 선정됩니다.
Oracle, MySQL이 압도적이네요..
그러면 Oracle, MySQL, PostgreSQL, MariaDB에 대해서 간단하게 알아보겠습니다.
지원하는 운영체제와 언어
4개 모두 대부분의 운영체제와 프로그래밍 언어를 지원합니다.
가격(License)
https://www.youtube.com/watch?v=N6MqIVAz_kM 대용량으로 DB를 사용해본 사람들의 후기 비교
https://www.youtube.com/watch?v=N6MqIVAz_kM 결론
명확한 스키마가 필요하고 join이 필요한 RDBMS가 적합한 곳 = 회원 데이터, 톡딜 데이터에는 RDBMS를 사용하자.
RDBMS는 많은 기업들이 사용하고 협업하는 팀원과 내가 다루어본 MySQL로 선정하였습니다.
데이터가 변경될 일도 없으며 검색을 위해 복잡한 쿼리를 수행할 필요가 없고 고속 읽기와 쓰기에 적합한 NoSQL가 유리한 사용자 로그인 유지를 위한 세션에는 NoSQL을 사용하자.
번외
휴대전화 또는 이메일 인증은 Firebase를 사용한다면 편리하게 구현할 수 있습니다.
하지만 AWS와 같은 다른 클라우드보다 가격이 비싸다는 단점이 존재합니다.
출처
https://terms.naver.com/entry.naver?docId=3431221&cid=58430&categoryId=58430
데이터베이스 설계 단계
조직 구성원들의 다양한 요구 사항을 모두 만족시키는 데이터베이스를 구축하는 일은 쉽지 않은 작업이다. 특히, 정부 기관이나 기업과 같이 데이터베이스에 저장해야 하는 데이터의 양이 많고
terms.naver.com
[네이버 지식백과] 요구 사항 분석 (데이터베이스 개론, 2013. 6. 30., 김연희)
https://stackoverflow.com/questions/3423193/why-nosql-say-traditional-rdbms-is-not-good-at-scalable
Why NoSQL say traditional RDBMS is not good at scalable
I've read some article say that RDBMS such as MySQL is not good at scalable,but NoSQL such as MongoDB can shard well. I want to know which feature that RDBMS provided make itself can not shard well.
stackoverflow.com
https://stackoverflow.com/questions/8729779/why-nosql-is-better-at-scaling-out-than-rdbms
Why NoSQL is better at "scaling out" than RDBMS?
I have read the following text in a technical blog discussing the advantages and disadvantages of NoSQL: "For years, in order to improve performance on database servers, database administrators
stackoverflow.com
https://benlee73.tistory.com/178
MySQL & Oracle & MariaDB & PostgreSQL 비교
관계형 데이터베이스 관리 시스템(RDBMS) 중 4가지를 살펴보자. MySQL SQL 문법 기반 거의 모든 운영체제에서 사용 가능 MySQL 데이터베이스는 무료 처리 속도가 빠르고 대용량 데이터 처리에 용이 설
benlee73.tistory.com
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