RDBMS와 NoSQL 차이

JiHun Song·2022년 11월 17일
0
post-thumbnail

RDBMS(Relational Database Management System)

모든 데이터를 2차원 테이블 형태로 표현한다.
2차원 구조 모델을 기반으로 수평적 구조로 구조를 사용한다.
데이터 중복을 최소화 하며, 일관성, 무결성, 보안성을 유지합니다.
데이블 간의 관계를 가질 수 있다.
정규화를 통해 기본키, 외래키 등을 사용하여 테이블들은 관계를 맺고 여러개의 테이블에 분산됩니다.
정해진(엄격한) 데이터 스키마에 따라 데이터를 저장합니다.
트랜잭션 및 조인이 가능하다.

RDBMS - 확장

성능을 확장 시키기 위해서는 수직적 확장(scale-up)만 지원한다.
수직적 확장이란 데이터베이스의 서버를 확장 시키는 것이다.(CPU 성능 업그레이드)

RDBMS - 속도

  • [Update] 중복된 데이터가 없기에 Update를 한번만 수행함으로 상대적으로 빠르다.
  • [Read] 정해진 데이터 스키마에 따라 저장되있는 데이터를 재조립하여 데이터를 읽어오는 속도가 상대적으로 느리다.

NoSQL(Non-relational Database)

모든 데이터가 스키마가 없고, 관계가 없다.
이러한 특징때문에 데이터가 중복되기 때문에 불안정한 측면이 있다.
트랜잭션 및 조인이 불가능하다.

NoSQL - 확장

성능을 확장 시키기 위해서는 수직적(scale-up), 수평적(scale-out) 확장을 지원한다.
수평적 확장이란 기존의 데이터 서버를 두고 동일한 데이터 서버를 확장 및 분산하는 것이다.

NoSQL - 속도

  • [Update] 데이터가 여러 컬렉션에 중복되어 있어 있다면, Update를 해야하는 경우 모든 컬렉션에서 수행해야하므로 느리다.
  • [Read] 데이터는 사용자가 필요로하는 형식으로 저장하기에 읽어오는 속도가 상대적으로 빠르다.

언제 사용하는 것이 좋을까?

RDBMS은 언제 사용하는 것이 좋을까?

스키마가 변경될 여지가 없고, 데이터를 자주 수정해야하는 경우
데이터를 사용자의 필요에 따라 조건 또는 정렬이 필요한 경우
데이터 처리의 정확성이 필요한 경우(트랜잭션)

NoSQL은 언제 사용하는 것이 좋을까?

정확한 데이터 구조가 없거나 변경 또는 확장이 잦은 경우
데이터 수정하는 경우가 거의 없고, 읽기만 하는 경우
데이터베이스를 수평으로 확장해햐하는 경우(막대한 양의 데이터를 다뤄야 하는 경우)

NoSQL 종류 3가지

Key-Value Store

Key값으로 Value를 즉시 찾을 수 있도록 Hash 데이터 구조를 사용한다.
Memcached, Redis와 같은 Cache 솔루션이 여기에 속한다.

Column Oriented Store

MySQL과 같은 RDB는 행 단위로 저장하는 Row Oriented Store다.
그에 반면, 열(column) 단위로 정보를 저장해놓는 구조를 말한다.
HBase, Cassandra와 같은 제품이 여기에 속한다.

Document Oriented Store

데이터를 JSON 형태로 저장하는 구조. 그래서 스키마를 바꾸기 쉽다.
MongoDB, Elasticsearch와 같은 제품이 여기에 속한다.

profile
클린코드를 좋아하는 개발자

0개의 댓글