반응형
RDB(Relational DataBase)
관계형 데이터베이스, RDB는 관계형 데이터 모델을 기반으로 하는 데이터베이스이다.
RDB는 다음의 두 특징을 가진다.
- 사용자에게 데이터를 관계 로서 표현한다. → 행과 열의 집합으로 구성된 테이블의 묶음 형식으로 데이터를 제공
- 테이블 형식의 데이터를 조작할 수 있는 관계 연산자를 제공한다.
위에서 말하는 관계란 1:1, 1:N, M:N 관계와 같은 foreign key로 맺어지는 관계를 말한다.
또한 트랜잭션 시, 강력한 ACID를 지원한다.
ACID란?
- 원자성(Atomicity) : 트랜잭션은 실행되다가 중단되지 않음
- 일관성(Consistency) : 트랜잭션 수행 후에도 도메인 유효범위, 무결성 제약조건 등을 위배하지 않음
- 독립성(Isolation) : 트랜잭션 수행 시 다른 트랜잭션 연산은 끼어들 수 없음
- 지속성(Durability) : 성공한 트랜잭션은 영원히 반영되어야함
정리하자면 RDB란
- 데이터를 행과 열로 이루어진 테이블로 제공
- 각각의 테이블끼리 관계를 맺을 수 있음
- 데이터를 조작하기 위한 SQL(Structured Query Language)라는 구조화 질의어를 제공
- 트랜잭션 시 ACID가 강력하게 지켜짐
RDB에는 대표적으로 MySQL, Oracle, MSSQL 등이 있다.
NoSQL
NoSQL이라는 이름이 No SQl, SQL이 아니라는 것을 의미하는 것은 아니다.
기존 DB가 제공하던 특성 대신 다른 특성을 제공한다는 점에서 Not Only SQL이라고 많이 쓴다고 한다.
NoSQL은 기존의 관계형 데이터 모델 대신 크게 4가지의 다른 모델을 사용한다.
- Key-Value (ex: Redis, Amazon Dynamo DB)
- Document (ex: MongoDB)
- Column-family (ex: HBase, Cassandra)
- Gragh (ex: Amazon Neptune)
위의 4가지 모델 중 어떤 모델을 사용하냐에 따라 서로 다른 특징을 가지며 각각의 장단점이 있다.
하지만 공통적으로
- 빠른 속도
- 스키마가 없는 자유로운 데이터 모델
- 약화된 ACID
- Scale Out이 가능한 분산 아키텍처
와 같은 특징을 가진다.
최근 RDB와 NoSQL의 차이가 무엇이냐는 질문을 받았는데 NoSQL은 그렇다 치더라도 RDB는 오랫동안 사용해왔는데도 명확하게 대답을 못했다.
반성하는 마음을 담아 블로그를 다시 시작하는 첫 글로 간단하게나마 정리를 해본다.
반응형