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)