티스토리 뷰
1. 특징
SQL
- RDBMS에서 데이터를 저장, 수정, 삭제, 검색할 수 있다.
- 정해진 데이터 스키마에 따라 테이블에 저장된다.
- 데이터의 중복을 피하기 위해 관계를 이용해 데이터를 분산한다.
NoSQL
- 키-값DB, 도큐먼트DB, 그래프DB 등으로 구분할 수도 있다.
- Schema-less한 유연한 구조
- Scale-out에 의한 서버 확장 용이
- 대용량 데이터를 처리하는 고성능
- 여러 대의 백업 서버를 구성할 수 있는 가용성
2. Scaling(확장)
- 수직적 확장 : DB 성능을 향상시키는 것 (CPU 업그레이드)
- 수평적 확장 : 더 많은 서버와 데이터베이스의 분산을 의미
데이터가 저장되는 방식 때문에 관계형DB는 일반적으로 수직적 확장만을 지원한다. 수평적 확장은 NoSQL에서 용이하다.
3. 장단점
SQL
- 명확하게 정의된 스키마로 인해 데이터의 무결성을 보장한다.
- 데이터의 중복이 없다.
- 덜 유연하다.
- 관계라는 개념 때문에 조인이 필요하고 그 때문에 복잡한 쿼리가 만들어져서 성능저하로 이어진다.
- 대체로 수직적 확장만 가능하다.
NoSQL
- 언제든지 데이터를 조정하고 새로운 필드를 추가할 수 있는 유연함
- 데이터가 애플리케이션이 필요로 하는 형식으로 저장될 수 있어서 읽어오는 속도가 빠르다.
- 수직, 수평 확장 모두 용이하다.
- 데이터 중복을 계속 업데이트 해야 하고, 여러 컬렉션에 중복되어 있는 경우 수정 시 모든 컬렉션에서 이를 수행해야 한다.
4. 언제 무엇을 사용해야 할까?
SQL
- 데이터가 자주 변경되는 애플리케이션
- 테이블의 변경 여지가 없고 명확한 스키마가 중요한 경우
- 데이터의 무결성, 일관성이 중요한 트랜잭션 업무
- 복잡한 계산이나 실시간 데이터 정합성이 필요한 업무
- ex) 은행 시스템
NoSQL
- 정확한 데이터 구조를 알 수 없거나 변경/확장될 수 있는 경우
- 데이터 변경이 적고 읽기를 자주 하는 경우
- 막대한 양의 데이터를 다루어야 하는 경우(수평적 확장 필요한 경우)
- 초당 동시 처리가 중요한 업무
- 로그 및 이력 등의 단순 기록형 업무
- ex) 낮은 지연 시간, 가용성이 중요한 SNS 시스템
반응형
'개발냥이 > etc' 카테고리의 다른 글
프론트엔드에서의 UI/UX (0) | 2023.04.13 |
---|---|
REST API란? (REST 성숙도 모델) (1) | 2023.03.29 |
Obsidian으로 깃허브와 블로그 간편하게 관리하기 (3) | 2023.02.14 |
[자료구조/알고리즘] 다익스트라(dijkstra) & 플로이드워셜 알고리즘 (0) | 2023.02.09 |
[자료구조] Deque(덱 / 데크) (0) | 2023.02.07 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- java
- SQL
- 자바스크립트
- 알고리즘
- Algorithm
- dfs
- JPA
- CS
- JavaScript
- 정렬
- 타입스크립트
- 형변환
- Comparator
- 자바
- Spring
- 이분탐색
- 자바dp
- 프로그래머스
- 스프링부트
- Queue
- 스프링
- DP
- BFS
- 리액트
- 해시맵
- Nest
- 백준
- 자바bfs
- SQLD
- 자바트리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함