SQL(RDBMS)
- 관계형 데이터베이스 특징
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
- 관계에 따라 여러 테이블에 분산된다.
- 데이터의 중복을 피하기 위해 관계를 이용
- 구조
- 필드의 이름
- 데이터의 유형
NoSQL
- 비관계형 데이터베이스 사용
- 스키마와 관계 사용 X
- documents(도큐먼트) : SQL의 record
- JSON과 비슷한 형태
- ex. SQL : ORDER_TB, USERS_TB, PRODUCT_TB
- ex. NoSQL : ORDER_TB에 모두 저장 -> JOIN을 하지 않는다.(데이터의 중복)
- NoSQL은 다른 구조의 데이터를 같은 컬렉션에 추가 가능 <-> SQL는 정해진 스키마를 따라야 데이터 추가 가능
- 대량의 분산 데이터를 저장하고 조회에 특화
- 메모리나 임시 파일에 저장 후 클라이언트에 먼저 응답하는 방법을 지원. 스케일 아웃 지원
- 가용성을 보장하기 위해 데이터 복제(Replication) 사용
- 동일한 데이터를 다중 노드에 중복 저장하고, 다른 노드가 고장나도 데이터가 유실되지 않게 하는 방법
- Master slave, Peer to Peer
SQL, NoSQL
- 수직적 확장 : 물리적 서버 성능 향상(CPU 업그레이드) -> SQL
- 수평적 확장 : 분산된 데이터베이스와 서버 추가 -> NoSQL
- SQL 장단점
- 장점 : 명확한 스키마, 데이터 무결성, 관계 사용으로 데이터 중복 X
- 단점 : 유연성 X, 번거로운 스키마 정의, 복잡한 JOIN문 발생 위험, 수직적 확장의 한계
- NoSQL 장단점
- 장점 : 스키마가 없어서 유연함, 빠른 데이터 조회, 수직 및 수평 확장 가능
- 단점 : 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있다. 데이터 중복을 계속 업데이트 해야 한다. 데이터 수정 시 모든 컬렉션에서 수행
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] JOIN, UNION (1) | 2022.09.30 |
---|---|
[데이터베이스] KEY - 후보키, 외래키, 기본키, 슈퍼키, 대리키 (1) | 2022.09.30 |
[데이터베이스] 트랜잭션(Transaction) - lock, ACID, 교착상태 (1) | 2022.09.30 |
[데이터베이스] 정규화 Normalization (0) | 2022.09.30 |
[데이터베이스] 인덱스 Index, B tree (0) | 2022.09.30 |