NoSQL - Mongo? Redis?

류희수·2024년 11월 19일
0
post-thumbnail

NoSQL이란?

NoSQL(Not Only SQL)은 전통적인 관계형 데이터베이스(RDBMS)와는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스 유형을 말합니다. NoSQL은 스키마가 없는 데이터 구조, 수평적 확장성, 빠른 읽기/쓰기 성능 등을 제공하며, 다양한 형태의 데이터 모델을 지원합니다.

NoSQL 의 사전적 정의는 다음과 같다.
하지만 그냥 텍스트로 보니 잘 와닫지가 않았다.


NoSQL 데이터 베이스의 특징

1. 스키마 유연성:

NoSQL은 스키마리스(Schema-less) 또는 유연한 스키마 구조를 지원한다.
데이터를 저장할 때 사전에 엄격한 스키마 정의가 필요 없으며, 필요에 따라 데이터 구조를 변경할 수 있다.
예: JSON, BSON, Key-Value 형식.

2. 수평적 확장성 (Scalability):

NoSQL은 서버의 성능을 높이는 수직 확장(vertical scaling)이 아닌, 여러 서버를 추가하여 확장하는 수평 확장(horizontal scaling)을 지원한다.
빅데이터 환경에서 적합.
예: 1대의 Redis 서버로 처리 가능한 데이터 용량이 10GB라면, 10대의 서버를 추가하면 이론적으로 100GB 데이터를 저장 가능.

3. 빠른 읽기/쓰기 성능:

메모리 기반의 NoSQL(예: Redis)은 매우 빠른 데이터 읽기/쓰기 성능을 제공한다.
대규모 데이터를 병렬로 처리하기에 유리.

4.다양한 데이터 모델:

Key-Value: Redis, DynamoDB 등
Document: MongoDB, CouchDB 등
Column-family: Cassandra, HBase 등
Graph: Neo4j, ArangoDB 등
각 데이터 모델은 특정 유형의 애플리케이션에 최적화되어 있다.

(추후 추가)
5. CAP 이론:

NoSQL은 일관성(Consistency), 가용성(Availability), 파티션 허용성(Partition Tolerance) 중 두 가지를 주로 우선시함.
예: MongoDB는 가용성과 파티션 허용성을 우선시함.


Redis? Mongo?

Redis

장점

  1. Key-Value 기반 메모리 DB로 빠른 속도가 강점.
  2. 데이터는 주로 RAM에 저장되므로 초고속의 읽기/쓰기 성능을 제공.
  3. TTL(Time-to-Live) 지원: 자동으로 데이터를 만료하고 삭제 가능.
  4. 자주 조회되는 데이터를 캐싱으로 사용 가능.

단점

  1. 데이터 영속성 제한 - 기본적으로 메모리 기반이므로 서버 종료 시 데이터 손실 가능.
  2. Snapshot(RDB)이나 Append-only File(AOF)을 통해 영속성 지원 가능하지만 추가 설정 필요.
  3. 복잡한 쿼리나 관계형 데이터 모델이 필요한 경우 적합하지 않음.
  4. 메모리 기반이므로 데이터가 많으면 메모리 부족 문제가 발생.

MongoDB

장점

  1. 문서 기반 NoSQL DB로 JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장.
  2. 디스크에 데이터를 저장하며, 대규모 데이터 처리와 영속성에 적합.
  3. 영속성 보장
  4. 인덱싱 및 집계 기능 (복잡한 추천시스템에 적합)

단점

  1. Redis만큼 빠르지는 않음(메모리 기반이 아니기 때문).
  2. MongoDB도 TTL을 지원하지만, Redis만큼 효율적이지 않음.
  3. 데이터 스키마 설계가 필요할 수 있음. JSON 구조가 유연하지만, 구조적 일관성을 유지해야 관리가 쉬움.

선택 기준

profile
자바를자바

0개의 댓글