본문 바로가기
DataBase

RDBMS & NoSQL

by orioncsy 2023. 3. 1.

RDBMS & NoSQL

개념

RDBMS

  • 관계형 데이터베이스 관리 시스템
  • 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스
  • 다른 테이블들 간의 관계를 맺고 모여 있는 집합체

NoSQL

  • Not only SQL
  • RDBMS와 달리 테이블들 간의 관계를 정의하지 않고 구조화되지 않아 자유롭게 데이터 처리
  • 분산형 데이터 베이스를 지원
  • 종류
    • key-value model
      • 키- 값의 형태로 데이터를 저장
      • 고속으로 읽고 쓰기가 가능
      • redis가 대표적
    • document model
      • 하나의 키에 구조화된 문서를 저장하고 조회
      • 문서 id에 대한 인덱스를 형성하여 O(1) 시간으로 조회 가능
      • B tree 인덱스를 사용하기 때문에 데이터를 입력, 삭제할 때 성능이 떨어진다.
      • 중앙 집중식 로그 저장, 타임라인 저장, 통계 정보 저장에 사용
      • mongoDB
    • column model
      • 하나의 키에 여러 개의 컬럼 이름과 칼럼 쌍으로 이루어진 데이터를 저장 및 조회
      • key는 키 값과 column-family, column-name을 가지고 속성이 계층적인 구조를 가진다.
      • 쓰기에 더 특화되어 있어 쓰기가 많은 서비스 및 대량 데이터 입력 및 조회하는 서비스에 사용
      • 채팅 내용, 실시간 분석을 위한 저장에 사용
      • Hbase
    • graph model
      • 데이터를 그래프 형태로 저장
      • Neo4J

CAP

개념

  • noSQL 같은 분산형 데이터베이스에서 consistency, availabilty, partition tolerance를 모두 성립할 수 없다는 이론

Consistency - 일관성

  • 여러 데이터베이스에게 요청을 해도 같은 데이터를 받을 수 있는 상태

Availability - 가용성

  • 언제 어느 순간에도 요청에 대한 응답을 받을 수 있는 상태

Partition tolerance - 분할 허용성

  • 데이터베이스 간 통신이 끊긴 상태에서 시스템이 동작하는 상태

특징

  • 분할이 이루어졌을 때 일관성을 가지면 가용성을 희생하고, 가용성을 가지면 일관성을 희생해야 한다.
  • 데이터베이스간 통신이 끊기면, 같은 데이터를 제공하기 위해 통신이 재연결될 때까지 기다려 가용성 희생
  • 데이터베이스간 통신이 끊기면, 즉시 대응하기 위해 일관성을 희생하고 가지고 있는 데이터를 제공

Reference

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Database

'DataBase' 카테고리의 다른 글

Elastic Search  (0) 2023.03.03
Redis & Memcached  (0) 2023.03.02
Normalization  (0) 2023.02.28
Transaction  (0) 2023.02.27
Index  (0) 2023.02.26