1 minute read

NoSQL

NoSQL 데이터베이스의 종류

1. Document-Oriented 데이터베이스

  • 문서 형태로 데이터를 저장
  • 각 문서는 고유한 식별자를 가지며, 문서는 일반적으로 JSON이나 XML 형식으로 구성
  • MongoDB

2. Key-Value 데이터베이스

  • 각 데이터를 고유한 키와 값의 쌍으로 저장
  • 데이터를 빠르게 쓰고 읽을 수 있으며, 데이터 분산 처리에도 용이
  • Redis

3. Column-Family 데이터베이스

  • BigTable 아키텍처를 기반으로 함
  • 컬럼 그룹으로 데이터를 저장하며, 각 그룹은 다른 그룹과는 다른 스키마를 가질 수 있다
  • Apache Cassandra

4. Graph 데이터베이스

  • 데이터 사이의 관계를 그래프 형태로 저장
  • 네트워크와 관련된 데이터 처리를 위해 설계
  • Neo4j

NoSQL의 개념

  • 비관계형 데이터베이스를 의미
  • 대량의 분산된 데이터를 저장하고 조회하는 데 특화되어 있다.
  • 스키마 없이 사용 가능하거나 느슨한 스키마를 제공

RDB vs NoSQL

RDBMS NoSQL
데이터는 테이블에 저장 데이터는 다양한 형태로 저장 (그래프, 열 지향, 문서 지향, 키-값 저장소 등)
테이블은 열과 행으로 구성 데이터 구조는 유연하고 사전에 스키마를 정의하지 않아도 됨
모든 열과 그와 관련된 데이터 유형은 사전에 파악되어야 함 데이터 작성 및 반복이 빠르고 쉽게 가능
여러 테이블 간의 관계 형성 관계가 없거나, 비정형적인 데이터 구조
수직적 확장 수평적 확장
트랜잭션 지원 트랜잭션 지원이 일부 NoSQL에는 없음
ACID 준수 NoSQL 중 일부는 ACID 준수하지 않음
  • RDBMS와 NoSQL은 각각 장단점이 있기 때문에, 적합한 사용 사례가 각기 다르다.
    • RDBMS는 일관성과 정확성이 중요한 데이터에 적합하며, NoSQL은 비정형적이거나 대규모 데이터를 처리하는 데 적합하다.
    • 데이터 요구 사항과 비즈니스 목표에 따라 데이터베이스를 선택해야 한다.

Redis

  • Key-value 저장소
    • 다양한 데이터 자료 구조를 지원하는 NoSQL 데이터베이스
  • 메모리 내에서 데이터를 저장 및 관리
    • 매우 빠르고 대용량 데이터 처리가 가능
  • 세션 관리, 캐싱, 메시지 브로커 등 다양한 용도로 사용

특징

  • 데이터 저장 방식: 메모리 기반 데이터 저장
  • 데이터 구조: key-value 스토어 + 다양한 데이터 구조(문자열, 리스트, 해시, 셋, 정렬된 셋 등)
  • 높은 성능: 모든 데이터를 메모리에 저장하므로 빠른 읽기/쓰기가 가능
  • 지속성: 스냅샷 및 AOF(Append Only File) 로그를 사용하여 데이터 유실 방지
  • 확장성: 클러스터링을 통한 수평적 확장 지원
  • 대안적 용도: 캐싱, 메시지 브로커, 세션 관리, 분산 락 등

주요 용도

  • 캐싱: 데이터베이스나 파일 시스템 등 느린 속도의 리소스에 대한 요청을 최소화하기 위해 데이터를 저장하고 관리하는 기능
  • 메시지 브로커: pub/sub 구조를 통해 메시지를 전달하고 처리하는 기능
  • 세션 관리: 로그인 정보나 사용자 정보 등의 세션 데이터를 관리하는 기능
  • 분산 락: 여러 대의 서버에서 동시에 같은 자원에 접근하지 못하도록 제어하는 기능
  • 실시간 분석: 실시간으로 발생하는 데이터를 저장하고 처리하여 다양한 분석에 활용하는 기능

Leave a comment