본문 바로가기

공부기록/Data Engineering

[NoSQL] Key Value Model / Redis - (1) 개념 , 장단점

반응형

0. WHAT

Key-Value Database 또는 Key-value store에서는 데이터가 Key와 Value의 쌍으로 저장된다. Key는 레코드를 고유하게 실별하며 데이터베이스 내에서 저장과 검색을 하는데 사용된다. Value에는 어떤 형태의 데이터든지 담을 수 있다.

1. WHY

RDB의 단점

1. 이미지나 오디오 데이터가 관계모델로 표현 x
2. 구조( 스키마) 가 존재, 스키마 구조가 고정되면 변경 x
: 구조가 정해져있기 때문에 RDB에선 SQL질의어만 잘 넣으면 어떤 정보도 찾을 수 있다는 것이 장점이자 단점이다.

Key Value Model Idea

구조를 정하지않고. key만 겹치지 않게 넣은 다음 최대한 flexible하게 value를 넣을 수있는 데이터베이스.
key로 value를 찾을 수 있지만. 구체적인 검색은 불가.

2. WHEN

응용 영역

  • 타임라인을 표시하는 웹 어플리케이션에서 사용
  • 배열 형식 데이터에 빈번한 추가/삭제가 일어나는 경우


[usecase 예시]
- 사용자 리뷰에 대한 좋아요 표시 및 취소
- 개별 이벤트 페이지 방문 횟수 저장
: 이벤트 클릭 횟수가 증가하면 성능이 저하되고, 이벤트가 종료되면 해당 필드가 사용 없는 경우 기존 관계데이터 베이스를 수정하지 않고 key value model을 사용하면 효율적이다.
- 모든 페이지의 방문 횟수 조회
- 쇼핑 카트 데이터
- 웹 앱에 세션 정보 저장

3. Redis

REmote DIrectory Sever

레디스 (Redis)는 key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반 nosql DBMS이다. 2009년에 살바토르 산필리포에 의해 개발되었고, 2015년부터는 Redis Labs가 지원하고있다.

An (in-memory) key value store.
모든 데이터를 메모리로 불러오는 메모리 기반 DBMS이다.
DB-Engins.com 월간 랭킹에서 2015년부터 가장 인기있는 key-value db이다.


Data Model

reidis 의 데이터 모델은 다음과 같다. value의 기본타입은 strings이며, container 타입의 데이터를 넣을 수 있다.

특징

  • 휘발성 : main memory에 저장
  • 연속성 : snapshot. 특정 시점의 메모리에 있는 데이터를 바이너리 파일로 저장

(단독 데이터 베이스로도 사용 가능)

장점

- 성능 향상.
1) In-Memory 저장
2)솔루션 자체가 c언어로 개발됨
3)데이터가 key-value형태이므로 조회 속도가 빠름
- 다양한 데이터 타입 지원
: string/list/set/ordered set/ hash / stream / binary file / 비트맵 / HyperLogLogs
- 배열 형식 데이터에 특화
: ex. 시간별로 갱신되는 데이터

단점

다른 NoSQL DB에 비해 도입사이트가 적음
구조가 없기때문에 value내에서 정교한 검색이 불가능. key값으로만 검색해야하므로 key 디자인을 잘해야함. (구조가 없는게 장점이자 단점 )


참고자료

반응형