본문 바로가기

db/NoSQL

2장 다양한 NoSQL 데이터 베이스

CAP 이론

분산 데이터베이스는 일관성(C), 가용성(A), 파티션 허용(P), 이 세 가지 속성을 동시에 가질 수 없다는 내용이다.

일관성 : 서버 간에 일관된 데이터를 유지함을 의미
가용성 : 질의에 대한 응답을 제공함 (실패하지 않음)
파티션 허용 : 둘 이상의 데이터베이스 서버가 연결된 네트워크에 문제가 생기더라도 이 서버들은 여전히 일관된 데이터를 갖고 있다는 것


'NO' ACID 'YES' BASE

  • BA(Basically Available) 기본적인 가용성

분산 시스템에서 부분적인 고장이나 실패는 있을 수 있지만 시스템의 나머지 부분은 계속 기능을 수행해야 한다.

  • S(Soft State) 소프트 상태

데이터가 더 최신 상태인 데이터로 덮여 쓰인다.

  • E(Eventually Consistence) 결과적 일관성

데이터베이스가 일관성이 없는 상태가 될 때가 있다.

서버 여러 대에 데이터 복사본을 두고 관리할 때, 여러 복사본 중에 어느 것은 특정 시간 동안에는 일치하지 않은 수도 있지만
결국은 일관성을 지키게 동작하는 것이다.


결과적 일관성 유형

1. 인과적 일관성(Casual Consistency)

갱신된 순서를 반영하는 것을 보장하는 것.
예를 들어 A가 데이터를 1000으로 변경하고 1분 후에 B가 다시 2000으로 변경하면 이 데이터의 모든 복사본은 먼저 1000으로 갱신되고 2000으로 갱신되는 것이다.

2. 최신 데이터 읽기 일관성(Read-your-writes Consistency)

특정 클라이언트가 레코드를 갱신하면 이 레코드에 대한 모든 질의(읽기)는 갱신된 값을 반환받는다는 뜻이다.
스스로 변경한 내역은 스스로에게는 반드시 반영되는 것

3. 세션 일관성(Session Consistency)

세션 안에서 발생한 모든 변경 사항에 대해서는 최신 데이터 읽기 일관성을 제공하는 것이다.

4. 단조 읽기 일관성(Monotonic Read Consistency)

질의를 해서 그 결과를 볼 때 해당 값의 이전 버전은 절대 볼 수 없다는 뜻
즉, 클라이언트가 시간이 지남에 따라 데이터를 읽으면, 이전에 읽은 것보다는 항상 최신 버전을 볼 수 있다

5. 단조 쓰기 일관성(Monotonic Write Consistency)

몇 개의 갱신 명령어를 실행했을 때 이 명령어들이 실행된 순서대로 처리됨을 뜻함.


NoSQL 유형

key-value

하나의 키와 하나의 밸류로 구성된 데이터 구조를 가지는 데이터 베이스
하나의 이름 공간에는 고유한 키값을 가진 데이터로 구성되어 있다.
키값은 이름 공간 안에서 고유하고 이름 공간이 다르다면 중첩이 가능하다.

  • 조인 x
  • SQL 같은 질의 언어 x
  • 간단한 구조에 적합

document

키-값 방식을 사용하지만 값에 문서를 입력이 가능한 데이터 베이스

문서란?

여러 속성을 지는 값으로 비정형화된 데이터이다.

특징

  • 값으로 json과 같은 비정형화된 문서를 입력할 수 있다.
  • 질의 언어를 제공한다. 여러 속성을 가진 개체에 대한 질의도 제공!
  • 문서 안에 문서를 중첩해서 사용이 가능하다.
  • 조인이 필요가 없다.

Column Family

컬럼 : 이름과 값으로 구성된 단위
로우 : 여러 컬럼이 속한 컬럼의 집합으로 RDB의 로우와 동일한 개념
컬럼 패밀리 : 연관관계가 깊은 컬럼을 뭉친 덩어리 ex) 사무실 번호, 사무실 전화번호 > 사무실 정보

  • 조인이 필요 없음 > 모든 정보를 매우 너비가 넓은 단일 로우에 넣음
  • 각 로우마다 다른 컬럼의 집합을 가질 수 있다.
  • 일반적으로 비정규화되어 있다.

Graph

정점과 에지로 구성된 데이터 구조를 가진 데이터 베이스로 관계를 표현하는 데이터를 처리하는데 효과적이다.

 

REFERENCE

도서 - NoSQL 철저 입문

'db > NoSQL' 카테고리의 다른 글

[Mongo DB] 도규먼트 CRUD  (0) 2023.12.20