NoSQL과 RDBMS의 특징과 차이점에 대해서 장, 단점 은 개발자 면접에서 자주 나오는 질문 중의 하나!
RDBMS (관계형 데이터베이스 관리 시스템)
SQL에 의해 저장된다
어떤 테이블이 다른 테이블들과 관계를 맺고 모여있는 집합체
Databse
(일반적으로) 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 or 데이터의 체계적인 집합
DBMS (DataBase Management System)
사용자와 DB 사이에서 사용자의 요구에 따라 정보 생성 & DB 관리해 주는 소프트웨어
SQL (Strucured Query Language)
- RDBMS(관계형 데이터베이스 관리 시스템)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
- RDBMS 에서 자료의 검색/관리, 데이터베이스 스키마 생성/수정, 데이터베이스 객체 접근 조정 관리를 위해 고안
스키마
- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합
- 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.
정해진 스키마에 따라 데이터를 저장하기 때문에, 명확한 데이터 구조를 보장
관계는 각 데이터를 중복없이 한 번만 저장 가능
테이블 간 관계를 맺고 있기 때문에, 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어질 수 있다.
성능 향상을 위해서는 서버의 성능을 향상 시켜야하는 Scale-up만을 지원
스키마로 인해 데이터가 유연하지 X
빅데이터의 등장으로 인해 데이터와 트래픽이 기하급수적으로 증가
Scale-Up / Scale-Out ?
Scale-Up
Scale-Out
Key-Value Database 는 데이터가 Key와 Value의 쌍으로 저장된다.
따라서, 정형화되지 않은 데이터 저장에 유리
분산 처리 및 저장 된다.
따라서, 용량 大 데이터 저장에 유리
간단한 API 를 제공하기 때문에, 속도가 굉장히 빠른 편
대표적인 NoSQL Key-Value Model
단, 메모리 사용량이 높은 단점
Documnet Database 데이터는 Key 와 Document 의 형태로 저장된다.
검색에 최적화되어 있음
대표적인 NoSQL Document Model
단, 사용이 번거롭고 쿼리가 SQL 과는 다르다.
Column-family Model 기반의 Database
저장된 데이터는 하나의 커다란 테이블로 표현이 가능
대표적인 NoSQL Column-family Model
데이터를 Node 와 Edge, Property 와 함께 그래프 구조를 사용하여 데이터를 표현하고 저장하는 Database
적합한 경우
대표적인 NoSQL Graph Model
스키마가 없기 때문에, 유연하며 자유로운 데이터 구조를 가질 수 있다
데이터 분산이 용이
성능 향상을 위한 Saclue-up 뿐만이 아닌 Scale-out 또한 가능
데이터 중복 발생 위험
스키마가 존재하지 않기 때문에, 명확한 데이터 구조를 보장하지 X
데이터 구조가 명확하며 변경 될 여지가 없는 경우
명확한 스키마가 중요한 경우
관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템의 경우
정확한 데이터 구조를 알 수 없는 경우
데이터가 변경/확장이 될 수 있는 경우
데이터 중복이 발생할 수 있는 경우
Update 가 많이 이루어지지 않는 시스템의 경우
막대한 데이터를 저장해야 해서 Database 를 Scale-Out를 해야 되는 시스템의 경우
참고: [Database] RDBMS와 NoSQL의 차이점
참고: [DB기초] 스키마란 무엇인가?
참고: Key value 자료구조