티스토리 뷰
RDB (Relation DataBase)
관계형 모델을 기반으로 하는 데이터 베이스를 의미한다. 이를 유지, 관리하기 위한 시스템을 RDBMS(Relation DataBase Management System)이라 한다.
RDBMS의 목표
데이터 무결성을 높이는 것이다. 데이터 무결성은 아래 세 종류가 있다. 데이터 무결성에 대한 자세한 내용은 여기를 참고하기 바란다.
- 엔터티 무결성
- 참조 무결성
- 도메인 무결성
특징
- 상호 관련성을 가진 테이블 집합
- 테이블 사이의 관계를 외래 키로 표현
- 2차원 데이터(행과 열)로 표현
- SQL을 사용해 질의
- ACID 성질
- 스키마 변경이 어려움
- 수직적 확장이 쉽고 수평적 확장이 어려움
스키마 변경의 어려움
RDB는 테이블 사이에 서로 의존성이 있고 서로 맞물려있기에 데이터 타입을 바꾸거나 새로운 열을 추가하는 등의 작업들은 실제 프로덕션 환경에서 사실상 불가능하다.
수직적 확장이 쉽고 수평적 확장이 어려움
수직적 확장은 하드웨어 스펙의 확장을 의미하고, 수평적 확장은 양적 확장을 의미한다. RDB가 수직 확장이 더 용이하고 수평 확장이 어려운 이유는, 데이터가 여러 테이블에 의존해있기 때문이다.
ACID 성질
ACID(원자성 Atomicity, 일관성 Consistency, 고립성 Isolation, 지속성 Durability)는 데이터베이스 트랜잭션의 성질을 나타낸다. 이 글에 잘 정리되어 있다.
NoSQL (Not only SQL)
NoSql은 관계형이 아닌 다양한 데이터 모델을 총칭한다.
특징
- 다양한 방식으로 데이터를 표현
- 컬렉션에 특별히 명시된 제약 및 규칙이 없음
- 스키마가 고정적이지 않음
- 연산이 빠르고 빅데이터 및 실시간 연산에 적합
다양한 방식의 데이터 표현
- 도큐먼트 모델은 레코드 하나를 오브젝트(도큐먼트) 형식으로 표현한다. 자유로운 스키마 구조를 가지며 구조가 확정되지 않은 데이터를 밀어 넣고, 자유롭게 작업하기 좋다. 몽고 DB나 아랑고 DB가 있다.
- 그래프 모델은 데이터를 노드와 엣지로 그래프에 표현하는 방식이다. 데이터 사이의 유기적인 관계를 표현하기에 적합하다. Neo4j, ArangoDB, Gremlin 등이 있다.
- 키/값 모델은 하나의 키에 값을 맵핑하는 해시 구조의 데이터 모델이다. 빠르게 데이터에 접근할 수 있는 장점이 있다. 대표적으로 Redis가 있다.
- 와이드 칼럼 모델은 테이블 형태를 취하지만 행마다 갖는 칼럼의 형태가 고정되어 있지 않은 데이터 모델이다.
언제 사용해야 할까?
RDBMS
- 데이터 구조가 변경될 여지가 없으며 명확한 스키마가 중요한 경우 사용
- 중복된 데이터가 없어(데이터 무결성) 변경이 용이
- 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합
NoSQL
- 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 경우에 사용
- 중복된 데이터가 발생할 수 있어, 수정이 많이 이루어지지 않는 시스템이 좋음
- 막대한 데이터를 저장해야 해서 Database를 Scale-Out를 해야 되는 시스템에 적합
참조
'CS > DB' 카테고리의 다른 글
DB의 Lock (0) | 2022.10.08 |
---|---|
트랜잭션 (Transaction) (0) | 2022.10.08 |
MySQL 아키텍처 (0) | 2022.08.04 |
조인 수행 원리 (0) | 2022.08.02 |
이상현상, 함수종속성, 정규화 (0) | 2022.07.28 |
댓글