본문 바로가기
CS/Database

RDB vs NoSQL

by jeounpar 2023. 4. 2.

RDBMS

MySQL, PostgreSQL, Oracle, ...

 

특징

1. 데이터를 테이블 형태로 관리하고 데이터 간의 관계가 있음

2. 데이터의 일관성과 무결성을 보장하기 위해 ACID(원자성, 일관성, 고립성, 지속성)을 가지고 있음

 

MySQL vs PostgreSQL

1. 데이터 타입

PostgreSQL이 더 많은 데이터 타입을 지원함 ex) 배열(ARRAY), 네트워크 주소(INET, CIDR), JSON, XML 등

2. 데이터 처리

MySQL은 빠르고 간단한 설치와 설정이 가능하며, 대규모 트랜잭션 처리에 적합하다. 반면, PostgreSQL은 데이터 무결성을 중시하며, 대규모 데이터베이스 처리, 복잡한 쿼리 및 고급 기능이 필요한 경우 적합하다.

3. 인덱스

PostgreSQL : B-tree, Hash, GiST, SP-GiST, GIN, BRIN

MySQL : B-tree, Hash, R-tree, Inverted-Indexes

 

복잡한 쿼리 및 대규모 데이터베이스를 다룰 수 있는 기능이 풍부한 데이터베이스가 필요? -> PostgreSQL

설치와 관리가 비교적 쉽고, 빠르고, 안정적이며 사용이 간단한 데이터베이스 -> MySQL

 

NoSQL

, Redis,, Neo4j, Cassandra, HBase, Amazon DynamoDB, ...

 

특징

1. key-value, graph, column, document 다양한 형태로 데이터를 관리

2. 수평적 확장을 용이하게 하기 위해 분산 시스템 구조를 가지며 대규모 데이터 처리에 적합

3. ACID 지원 하지 않음(일부 NoSQL은 지원함), 일관성이나 무결성에 대한 보장이 상대적으로 약함

 

종류

1. key-value store

데이터를 key- value 쌍으로 관리

예시 : 캐시, 세션 저장소, 사용자 프로필 및 인증데이터 등 간단한 데이터에 대한 높은 읽기/쓰기 처리량이 필요한 경우 사용

- Redis, Amazon DynamoDB

2. graph store

데이터(Entity)가 저장되어 있는 Node와 데이터 개체 간의 관계를 나타내는 Edge로 구성된 그래프 형태로 데이터를 관리

RDB보다 복잡한 쿼리 작성(다량의 테이블 조인)에 유리함

ACID 지원

예시 : 소셜 네트워크, 추천 시스템, 트래픽 분석, 지리 공간 데이터, 생물학 및 네트워크 보안 분야에서 사용

- Neo4j

3. column store

데이터를 로우 대신 컬럼 기반으로 저장하므로 특정 컬럼에 대한 집계 작업이 빠름, 2차원 key-value 스토어 라고 불림

대규모 데이터 처리에 적합

예시 : 데이터 분석 및 데이터 웨어하우징(기업 내부의 다양한 소스에서 추출한 데이터를 한 곳에 집계하고 저장하여, 의사 결정 지원 시스템에서 활용할 수 있도록 하는 기술)

- Cassandra, HBase

4. document store

JSON 또는 BSON과 같은 문서 형식으로 데이터를 저장하며, 데이터 구조가 유연하므로 스키마 변경이 간단

예시 : 사용자 프로필, 제품 카탈로그, 블로그 게시물 등과 같은 복잡한 데이터 구조에 적합

- MongoDB, CouchDB