DB의 핵심 3가지
- 무결성 : 정확, 일관성(누가 보더라도 동일)
- 안전성 : 고장x
- 확장성 : scale-up 코어, 메모리 등을 확장 / scale-out 기기를 여러개
- 크기를 키울건지 : 한 사람만 조회, 모노리식
- 기기를 늘릴건지 : 여러 사람이 조회, stateless면 분산도 가능, CDN
관계형 DB
- 테이블 사이에 관계를 맺어서 중복데이터 줄임
- ↔ laterncy가 많이 소모 & 예전에는 메모리가 비싸서 주로 사용했음- 중복된 데이터를 없애고 메모리 비용을 아낌
- 데이터 수정 시 관련된 여러 테이블을 변경해야 하기 때문에 시간이 오래 걸릴 수 있음
row-oriented : 읽는 양이 적은 경우, 많은 데이터 삽입에 적합
- row뒤에 바로 row가 붙어서 삽입이 쉬움
column-oriented : 읽는 것이 빨라서 데이터 분석에 사용
- 각 칼럼끼리 모아두는 구조 ⇒ 삽입이 많으면 부적합
NOSQL
- 서로 다른 종류의 데이터를 저장할 수 있고, 유연한 스키마를 가지고 있어서 데이터 구조를 동적으로 변경
- key-value : redis
- graph : 촌 수 같은 관계 표현하기에 유리, 한국에서는 덜 사용함
- Document : json 데이터 넣기 좋음
CAP 이론
- 분산 시스템에서 일관성, 분산 저장 가능성, 가용성(항상 데이터에 접근 가능성) 중 두 가지만 선택할 수 있다는 이론
선택지
- 높은 가용성을 제공하면서 일부 일관성을 희생하는 NoSQL 데이터베이스
- 높은 일관성을 제공하면서 가용성을 희생하는 관계형 데이터베이스
'Spring > DB' 카테고리의 다른 글
[DB] 트랙잭션과 인덱스 (0) | 2023.08.28 |
---|---|
[DB] PostgreSQL과 MySQL (0) | 2023.08.08 |
[멋사] DB 연동 (0) | 2023.04.06 |
DB(MySQL) & Spring 오류 (0) | 2023.03.08 |