Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: [DB] RDB와 트랜잭션 #29

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions DB/RDB&NoSQL.md
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

디비를 공부하면 RDB랑 NoSQL 중에 무엇을 골라서 프로젝트에 참여해야하는지 고민되는 일이 많았는데, 혹시 고르는 기준 같은게 있을까요?

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# RDB와 NoSQL의 차이에 대해 설명해 주세요

### RDB

- RDB의 핵심적인 두 가지 특징
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다
- 데이터 무결성과 일관성 보장
- 테이터는 관계를 통해 여러 테이블에 분산된다
- 정규화되어 저장. 중복을 최소화, 참조 무결성 유지
- 테이블 간 관계는 외래키로 정의

### NoSQL

- 스키마도, 관계도 없다
- 데이터 중복을 허용한다

## NoSQL의 강점과, 약점이 무엇인가요?

- 장점
- 스키마가 없기 때문에 저장된 데이터를 조정하고, 새로운 필드를 추가하는 것에 유리함
- 데이터 자체가 각 애플리케이션에 필요한 형태로 저장되어, 데이터를 읽어오는 속도가 빠름
- 단점
- 데이터 중복을 계속 업데이트해야 함
- 수정 시 모든 컬렉션에서 수행

## RDB의 어떠한 특징 때문에 NoSQL에 비해 부하가 많이 걸릴 수 있을까요? (NoSQL이 무조건 RDB보다 빠르다는 것은 아닙니다)

1. 트랜잭션 처리
1. ACID 트랜잭션을 보장하며, 연산과 로그 관리가 필요하다
2. 관계 유지 - join
3. 스키마 변경

## NoSQL을 활용한 경험이 있나요? 있다면, 왜 RDB를 선택하지 않고 해당 DB를 선택했는지 설명해 주세요

- JWT - Redis
- 대규모 처리에서 속도
- Key-Value
- TTL 관리