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를 생성한다.