{DB} - Redis란?
DB의 종류
RDBMS(관계형 데이터 베이스)
- HDD 혹은 SSD같은 보조기억 장치에 데이터를 저장한다.
- 행과 열이 존재한다, 쉽게 생각해서 엑셀과 같다.
- 데이터를 저장하는 공간의 형식이 정해져있다.
- 관계라는 것을 통하여 데이터와의 연결고리를 만든다.
- 중복되는 데이터가 없고, 관계를 통하여 관련된 값을 한번에 변경할 수 있다.
- SQL이라는 언어를 사용해야만 데이터에 접근할 수 있다.
- 관계라는 속성때문에 성능을 향상시키기 위해서는 하드웨어의 스펙이 상승되어야만한다.
샤딩이라는 것을 통해서 분리를 할 수는 있지만, 매우 어렵다. - 대표적으로 MySQL, Oracle, PostgreSQL가 있다.
NoSQL
- HDD 혹은 SSD같은 보조기억 장치에 데이터를 저장한다.
- Key-Value의 방식으로 데이터를 저장한다.
- 테이블이라고 부르는 것이 아니라 문서(Document)라고 부른다.
- 데이터의 형식이 정해져있지 않아 구조 변경이나 데이터의 형식 변경이 쉽다.
- SQL을 사용하지 않는다.
- 확장성이 좋아서 RDBMS와는 다르게 하드웨어의 개수를 늘리는 것으로 성능 향상을 이룰 수 있다.
- 대표적으로 MongoDB, Elasticsearch가 있다.
- 사람마다 NoSQL의 정의가 다르다.
** IN-Memory DB
|
https://www.digitaltoday.co.kr/news/articleView.html?idxno=212904
쿠팡 오류 원인은 오픈소스 '레디스 DB' 때문 - 디지털투데이 (DigitalToday)
쿠팡의 서비스 오류 원인이 ‘레디스 DB’ 문제인 것으로 드러났다.24일 오전 7시경부터 쿠팡 판매 상품의 재고가‘0’으로 표시돼, 소비자는 관련 상품의 주문 및 구매할 수 없었다. 이에 쿠팡
www.digitaltoday.co.kr
Redis란?
Redis는 이번 19년 쿠팡 재고 0 사건을 계기로 개발자들에게 많이 알려졌습니다. 그렇다면 Redis가 뭐냐?
Redis는 Remote Dictionary Server의 약자로 key-value 구조의 비정형 데이터를 관리하기위한 비관계형 데이터베이스 관리시스템이다. Redis를 한마디로 정의한다면 '고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식의 데이터를 지원하는 NoSQL이다'라고 정의할 수 있습니다.
주요 특징
- 영속성을 지원하는 인메모리 데이터 저장소
- 읽기 성능 증대를 위한 서버 측 복제를 지원
- 쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding) 지원
- 다양한 서비스에서 사용되며 검증된 기술
- 문자열(String), 리스트(List), 해시(Hash), 셋(Set), 정렬된 셋(Sorted Set)과 같은 다양한 데이터형을 지원. 메모리 저장소임에도 불구하고 많은 데이터형을 지원하므로 다양한 기능을 구현
Redis 사용 이유?! --> Cache Server
많은 사용자가 매번 DB에 접근하여 정보를 가져온다면 부하가 많아져서 느려진다. 이 경우 캐시 서버를 이용한다면 이러한 과부하를 해결할 수 있다. 캐시는 한번 읽어온 데이터를 임의의 공간(메모리)에 저장하고 다음 동작시 DB까지 가지않고 빠르게 결과값을 리턴한다. 그렇기 때문에 많은 사용자들이 사용하더라도 부하를 줄여줄 수 있다.
**Redis는 데이터를 디스크에 읽어 메모리에 올릴 수 있기 때문에 서버를 내렸다 올려도 메모리 안의 데이터가 유실되지 않도록 스냅샷을 디스크에 저장할 수 있다.
Redis의 데이터 보존 방법
1. SnapShot
메모리에 있는 데이터를 디스크에 옮겨 담는 방식이다. 스냅샷 방식은 메모리 상태를 그대로 본 뜬것이기 때문에 특정 시점으로의 백업 및 복구에 유리하고, AOF방식보다 더 빠르게 메모리에 올릴 수 있다.
2. AOF(Append Only File)
AOF방식은 Redis의 모든 write/update 연산들 모두 log파일 형태로 저장하는 것이다. 서버가 실행되면 저장된 로그를 읽어 순차적으로 연산을 재실행하여 데이터를 복구한다. 하지만 모든 log를 저장하기 때문에 데이터의 양이 매우 크고, 서버 재시작시 모든 연산을 재수행하기 때문에 재시작 속도가 느리다.