철학과 학생의 개발자 도전기

NoSQL과 Redis 본문

데이터베이스

NoSQL과 Redis

Younghun 2023. 11. 9. 14:07

1. NoSQL

NoSQL이란

  • Not Only SQL의 약자
  • 관계형 데이터베이스와 다른 형태의 데이터 저장 기술
  • 즉, 테이블이 존재하지 않고 고정된 스키마가 없다.

특징

  • 빅데이터 처리에 유용하다. (수평확장 / 고가용성)
    • 정형 데이터뿐만 아니라 반정형, 비정형 데이터도 처리 가능
    • 스키마가 없기 때문에 확장성이 좋음
    • 분산형 구조로, 데이터를 상호 복제하여 안정성을 높이고 서비스 중지에 대비한다.
  • RDB에 비해 읽기, 쓰기의 속도가 빠르다.
  • 읽기보다 쓰기가 더 빠르다.

유형

  • Key-Value 형태 (Redis)
  • 문서 형태 (MongoDB)
  • 그래프 형태 (Amazon Neptune)

2. Redis

Redis란

  • Remote Dictionary Server의 약자
  • 오픈 소스 기반, 인메모리 데이터베이스
  • Key-Value 쌍의 해시 맵과 같은 구조

특징

출처: https://devlog-wjdrbs96.tistory.com/374

  • 데이터는 메모리에 저장되어 대기 시간을 낮추고 처리량을 높인다. (평균 1ms의 읽기, 쓰기)
  • String, List, Set, Hash, JSON, Geospatial Indexes 등 다양한 데이터 타입을 지원한다.
  • 쿼리문이 없으며, 간단한 명령으로 데이터를 읽고 쓸 수 있다.
  • 영속성을 보장하기 위해 데이터를 디스크에 저장할 수 있다. (Snapshot, AOF 방식: 쓰기 및 수정 연산을 로그로 기록)
  • 싱글 스레드 방식을 사용하여 Race Condition을 방지한다.

사용 사례

  • 캐싱
  • 채팅, 메시징 및 대기열
  • 인증 토큰 저장
  • 위치기반 데이터 사용

3. NoSQL도 락을 사용할까?

  • RDBMS에 비해 제한적이지만 일부 데이터베이스에서 사용
  • MongoDB: 데이터베이스 락, 도큐먼트 락 등 여러가지 제공
  • Redis: 여러 Redis 인스턴스 간 동기화를 위한 분산 락 제공 (Redlock)

'데이터베이스' 카테고리의 다른 글

프로시저  (0) 2023.11.09
옵티마이저  (0) 2023.11.05
Lock과 MVCC  (0) 2023.11.05
트랜잭션  (0) 2023.10.29
인덱스  (0) 2023.10.28