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 디자인을 잘해야함. (구조가 없는게 장점이자 단점 )
참고자료
'공부기록 > Data Engineering' 카테고리의 다른 글
[PostgreSQL] macOS에 PostgreSQL 설치 및 설정 (2) | 2022.05.01 |
---|---|
[ELK] elastic stack 이란 / 개념 / 구성 요소 / 용도 (0) | 2022.04.23 |
[neo4j] variables 변수 이해하기 (0) | 2021.06.05 |
[neo4j] Cypher Query 튜토리얼 (0) | 2021.06.04 |
[My SQL] Error Code 1175 해결 방법 (0) | 2020.10.15 |