_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

TIL | 1.26.목 [CS 기초지식 | RDB / NoSQL]
woncoding/TIL

TIL | 1.26.목 [CS 기초지식 | RDB / NoSQL]

2023. 2. 1. 14:30

RDB

- RDB 정의

RDB(Relational Database)란 관계형 데이터 모델에 기초를 둔 데이타베이스이다.

관계형 데이터 모델이란 데이타를 구성하는데 필요한 방법 중 하나로 모든 데이터를 2차원의 테이블 형태(속성-값)로 표현한다.

관계형 데이터 모델의 개념은 표현 개체의 외부개념 관례를 적용한 것으로, 데이터 간의 상관관계에서 개체간의 관계를 표현한 것이라고 할 수 있다. 

RDB는 데이터의 독립성이 높고, 고수준의 데이터 조작언어(DML-Data Manipulation Language)을 사용하여 결합, 제약, 투영 등의 관계 조작에 의해 비약적으로 표현능력을 높일 수 있고, 또한 이들의 관계 조작에 의해 자유롭게 구조를 변경할 수 있다는 것이 RDB의 특징이다.

 

그렇다면 RDBMS(Relational Database Management System) 란?

: RDBMS는 관계형 데이터베이스를 생성하고 수정하고 관리할 수 있는 소프트웨어이다.

 

 

- RDB 장단점

☞ 장점

  • 명확하게 정의된 스키마, 데이터 무결성 보장
  • 관계를 통해 각 데이터를 중복없이 한번만 저장 가능

☞ 단점

  • 상대적으로 덜 유연, 데이터베이스 스키마를 미리 알고 계획해야한다. (나중에 수정하는 것이 어렵거나 불가능)
  • JOIN문이 많은 매우 복잡한 쿼리가 만들어질 수 있음
  • 수평확장이 어렵고 보통 수직확장만 가능, 즉 어느 시점에서 처리량/처리 능력과 관련하여 약간의 성장 한계에 직면할 수 있음

 


 

NoSQL

- NoSQL 정의

Not Only SQL의 의미로, 데이터 저장 기술, 테이블 간 관계를 정의하지 않는다.

데이터 테이블은 그냥 하나의 테이블이며 따라서 일반적으로 테이블 간 Join 불가능, 데이터의 일관성은 포기하되 비용을 고려하여 여러 대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장. 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용하는 것이 좋다. update가 많이 이루어지지 않는 시스템에 좋다. 막대한 데이터를 저장해야 되는 시스템에 적합하고, JSON 파일을 빠르게 저장한다. 

 

 

- NoSQL 장단점

☞ 장점

  • 유연성 높음. 즉 저장된 데이터를 언제든지 조정하고 새로운 필드 추가 가능
  • 데이터는 애플리케이션에서 필요한 형식으로 저장. (조회 속도 향상)
  • 수직 및 수평확장이 가능하므로 데이터베이스가 애플리케이션에서 발생시키는 모든 읽기 쓰기 요청을 처리할 수 있음

☞ 단점

  • 유연성 때문에 데이터 구조 결정이 늦어질 수 있음 (바로 계획 결정하는 것이 아니기 때문)
  • 복사된 데이터가 변경되면 여러 컬렉션(테이블)과 문서를 수정해야함

 


 

RDB / NoSQL 사용 예

- RDB를 사용하면 좋은 예)

 

  • RDB는 데이터 구조가 명확하여 변경될 여지가 없는 경우, 또 데이터 중복이 없으므로 데이터 update가 잦은 시스템에서 사용하면 좋다.
  • 명확한 스키마가 중요하며, 데이터 구조가 극적으로 변경되지 않는경우
  • 데이터의 일관성, key를 기준으로 쿼리를 작성하는게 중요, join, FK, index 체크 시

 

- NoSQL를 사용하면 좋은 예)

 

  • NoSQL은 정확한 데이터 구조가 정해지지 않은 경우, 데이터 update가 자주 이루어지지 않고, 조회가 많은 경우, 또 scale-out이 가능하므로 데이터 양이 매우 많은 경우에 사용하면 좋다.
  • 정확한 데이터 요구사항을 알 수 없는 경우
  • 읽기(read)처리를 자주하지만, 데이터를 자주 변경하지 않는 경우
  • 구매 내역, 게임 로드 등 수정될 일이 거의 없는 경우

 


RDB vs NoSQL

 

 

저작자표시 비영리 변경금지 (새창열림)

'woncoding > TIL' 카테고리의 다른 글

TIL | 1.30.월 [CS 기초지식 | DB JOIN]  (0) 2023.02.01
TIL | 1.27.금 [CS 기초지식 | TCP(3-Way Handshake)]  (0) 2023.02.01
TIL | 1.25.수 [CS 기초지식 | Stack / Queue / Array / Linked List]  (0) 2023.01.26
TIL | 1.24.화 [CS 기초지식 | Semaphore / Mutex / Cookie]  (0) 2023.01.25
TIL | 1.23.월 [CS 기초지식 | CORS]  (0) 2023.01.25
    'woncoding/TIL' 카테고리의 다른 글
    • TIL | 1.30.월 [CS 기초지식 | DB JOIN]
    • TIL | 1.27.금 [CS 기초지식 | TCP(3-Way Handshake)]
    • TIL | 1.25.수 [CS 기초지식 | Stack / Queue / Array / Linked List]
    • TIL | 1.24.화 [CS 기초지식 | Semaphore / Mutex / Cookie]
    _won_
    _won_
    Coding Practice blog

    티스토리툴바