CS전공지식 노트/5. DB

데이터베이스 #3 : RDBMS 와 NoSQL

berryberries 2023. 7. 29. 17:43

1) 데이터 베이스 종류

RDBMS 

  • 행과 열을 가지는 표형식의 데이터를 저장하는 형태의 데이터베이스
  • 탐색속도가 빠름
  • SQL로 데이터를 다룰 수 있다.
  • 스키마 구조에 따라 데이터를 저장하는 형식이 고정된다.
  • 데이터 처리부하 발생시 처리하기 어렵다.
  • 대표적으로 MySQL, ORACLE, PostgreSQL 등이 있다

NoSQL - Not only SQL

  • 데이터간 관계가 정의되지 않는다
  • 복잡도가 적기 떄문에 대용량 데이터를 저장,관리가 쉽다
  • 데이터 저장이 자유롭다 -> 스키마 구조가 아니기 떄문에
  • KEY값에 대한 입출력만 가능하다
  • 데이터의 규격화가 안된다.
  • 대표적으로 MongoDB 등이 있다.

2) RDBMS

MySQL

  • 가장 많이 사용하는 DB
  • C, C++로 만들어짐
  • MyISAM 인덱스 압축기술, B-트리 기반의 인덱스, 스레드 기반의 메모리 할당, 매우 빠른 조인, 최대 64개의 인덱스 지원
  • 대용량 DB를 위해 설계됨

PostgreSQL

  • 디스크 조각이 차지하는 영역을 회수할 수 있는 장치인 VACUUM이 특징
  • 최대 테이블 크기는 32TB
  • SQL + JSON을 이용해 데이터 접근 가능
  • 지정시간에 복구하는 기능, 로깅 ,접근제어 ,중첩 트랜잭션, 백업할 수 있음

3) NoSQL

MongoDB

  • JSON을 통해 데이터 접근가능 - Binary JSON형태로 데이터 저장
  • Wiredtiger엔진이 기본으로 장착된 키-값 데이터 모델에서 확장된 도큐먼트 기반 데이터베이스
  • 확장성이 뛰어나며 빅데이터를 저장할 떄 성능이 좋다
  • 고가용성과 샤딩, 레플리카셋을 지원한다.
  • 스키마를 정해두지 않고 데이터를 삽입하기 떄문에 다양한 도메인의 데이터베이스를 기반으로 ㅂㄴ석하거나 로깅 등을 구현할 떄 강점을 보인다.
  • 도큐먼트 생성할 때, Object ID가 생성된다 - 유니크값 중복X

*Object ID : 타임스탬프 (4Byte), 랜덤값 (5Byte), 카운터(3Byte)로 이루어져 있다 - 유닉스 시간 기반

 

4) 스토리지 엔진

MyISAM

  • MySQL의 기본 스토리지 엔진 - 8.0이후에는 Inno DB
  • 구조가 단순해 속도가 빠르다
  • 데이터 저장에 제한이 없으며 효율적으로 저장한다
  • 테이블 작업시, 락이 걸리기 떄문에 다른사람이 작업할 수 없다. - Table-rock
  • 트랜잭션에 대한 지원을 하지 않아서 조회기능이 많을 떄 좋다.

 

Inno DB

  • 저장비율이 MySQL보다 낮다
  • 데이터 속도가 느리다
  • Table-rock이 아니라 row가 락이 걸리기 떄문에 insert, update, delete속도가 빠르다
  • Inno DB는 트랜잭션 처리를 하기 때문에 대용량 데이터를 다루기 좋다.

 

Wiredtiger

  • JSON을 통해 Data에 접근하기때문에 Binary JSON형태로 데이터를 저장한다
  • 체크포인트를 생성하고 이것을 이용해서 오류를 복구한다
  • 모든 컬렉션 및 인덱스에 대한 압축지원한다
  • 도큐먼트 생성시 Object ID를 생성한다.