여름의 서재
[DB] RDBMS & NoSQL & CAP 이론 본문
💡 RDBMS 란?
: 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스 . RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다. SQL에 의해 저장되고 있으며 정해진 스키마에 따라 데이터를 저장.
💡 NoSQL 이란?
: 유연한 데이터 모델을 갖춘 고성능 비관계형 데이터베이스. 초고용량 데이터 처리 등 성능에 특화된 목적을 위해, 비관계형 데이터 저장소에, 비구조적인 데이터를 저장하기 위한 분산 저장 시스템
📌 BASE
1. 기본적인 가용성 (Basically Avaliable)
: 부분적인 고장은 있을 수 있으나, 나머지는 사용이 가능하다.
2. 소프트 상태 (Soft State)
: 노드의 상태는 외부에서 전송된 정보를 통해 결정됨.
3. 결과적 일관성 (Eventually Consistent)
: 일시적으로 비일관적인 상태가 되어도 언젠가는 일관성이 있는 상태가 되는 성질
💡 NoSQL과 관계형 데이터베이스의 차이점
1. 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음
2. 직접 프로그래밍을 하는 등의 비SQL 인터페이스를 통한 데이터 엑세스
3. 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 테이터베이스를 구성
4. 유연한 스키마 제공
💡 NoSQL의 장점
1. 유연성: 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 함. -> 반정형, 비정형 데티어에 이상적
2. 확장성: 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장. -> 스케일 아웃
3. 고성능: 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 데이터베이스보다 더 뛰어난 성능을 얻게 해줌.
4. 고가용성: 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공.
💡 NoSQL 데이터 모델 유형
1. 키-값
: 키와 값의 쌍으로 데이터가 저장되는 가장 단순한 형태. 분할성이 커서 다른 유형의 데이터베이스로는 불가능한 범위까지 수평 확장을 가능.
2. 문서
: 문서 전체를 컬렉션이라 불리는 그룹으로 구성하여 키-값 데이터베이스의 개념을 확장. 문서 데이터베이스는 중첩된 키-값 쌍을 지원하며, 문서 내에 있는 모든 속성에 대한 쿼리를 허용.
3. 열 형식
: 희소 데이터 행에 걸쳐 데이터와 쿼리를 효율적으로 저장하며 데이터베이스의 특정 열에 대한 쿼리 실행 시 이점을 제공
4. 그래프
: 노드 및 에지 기반 모델을 바탕으로 상호 연결된 데이터(예: 소셜 네트워크를 사용하는 사용자들 간의 관계)를 표현하고 복잡한 관계를 간단하게 스토리지하고 살펴볼 수 있도록 지원
💡 CAP이론
: 어떠한 분산 시스템도 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance) 중에 3가지를 모두 만족 시킬 수 없다는 이론.
- 일관성(Consistency) : 데이터를 저장하는 장비가 1대 든 100대든 모든 장비에서 동일한 데이터가 저장되어 있어야 한다는 것이다.
- 가용성(Availablity) : 가용성은 죽지 않은 상태의 모든 서버는 클라이언트에게 항상 정상 처리 응답을 보내주어야 한다는 것을 의미한다. 클라이언트가 읽기, 쓰기 요청을 하면 제대로 읽고 쓰는 작업을 해야한다. 현재 시스템에 문제가 있어서 읽을 수 없다고 보내면 가용성이 보장되지 않는 것을 뜻한다.
- 분할 내성(Partition tolerance) : 분할 내성은 클러스터가 여러 대 동작하고 있을 때, 해당 클러스터 사이에 접속이 단절되어 서로 통신을 할 수 없는 상황에서도 시스템이 잘 동작해야 한다는 것이다.
'CS > DB' 카테고리의 다른 글
[DB] Redis (REmote DIctionary Server) (0) | 2022.01.19 |
---|---|
[DB] 데이터 베이스 기초 (0) | 2021.10.02 |
[DB] SQL with django ORM (0) | 2021.10.01 |