[Redis] NoSQL, Redis

2020. 10. 4. 17:09Database/Redis

1. NoSQL

1) NoSQL

RDBMS가 관계형 데이터베이스라면, NoSQL은 비관계형 데이터베이스이다. 보통 NoSQL은 키-값, 컬럼, 문서 형식의 데이터 모델을 이용한다. NoSQL을 사용하는 이유는 아주 많은 양의 데이터를 효율적으로 처리가 필요할 때, 데이터의 분산처리, 빠른 쓰기 및 데이터의 안정성이 필요할 때 사용한다. 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 형태의 구조이기 때문에 NoSQL을 사용한다.

2) NoSQL 종류

항목 종류
키-값 스토리지형 Redis, memcached, Oracle, Coherence
열 지향 와이드 컬럼 스토어 Cassandra, HBASE, Cloud Database
문서형 MongoDB, Couchbase, MarkLogic, PostgresSQL, MySQL, DynamicDB MS-DocumentDB
그래프형 Neo4j

※ MongoDB는 bson 데이터 구조로 저장하는 문서형 데이터베이스이다. 문서를 기본 저장 단위로 이용하면서 내장 문서와 배열을 이용해서 복잡한 계층구조를 하나의 열로 표현한다. 스키마가 없으며 필드 추가 제거는 자유로우며 필요할 때마다 자유자재로 변경이 가능하다. RDBMS보다 몇백배 빠른 고성능이다. 조인과 트랜잭션을 지원하지 않으며 여러 제약조건에 대한 처리도 없다.

 

 

 

2. Redis

1) Redis

Redis란 REmote Dictionary Server의 약자로, 메모리 기반의 키-값 구조 데이터 관리 시스템이며, 모든 데이터를 메모리에 저장하고 조회하기에 빠른 Read, Write 속도를 보장하는 비관계형 데이터베이스이다. Redis는 크게 String, List, Set, Sorted Set, Hash의 데이터 형식을 지원한다.

 

Redis는 빠른 오픈 소스 인 메모리 키-값 데이터 구조 스토어이며, 다양한 인 메모리 데이터 구조 집합을 제공하므로 사용자 정의 애플리케이션을 손쉽게 생성할 수 있다.

3) Redis 주요 특징

순서 내용
1 Redis는 영속성을 지원하는 인메모리 데이터 저장소이다. 명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다. '.rbs' 파일 형식으로 스냅샷 기능을 지원한다.
2 읽기 성능 증대를 위한 서버 측 복제를 지원한다.
3 쓰기 성능 증대를 위한 클라이언트 샤딩(파티셔닝의 개념으로 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법)을 지원한다.
4 5가지의 다양한 데이터형을 지원한다. List, Array 같은 데이터를 처리하는데 유용하다. 키-값 형태에서 값으로 여러 데이터 형식을 지원하기에 다양한 방식으로 데이터를 활용할 수 있다. (List형 데이터 입력과 삭제가 MySQL에 비해 10배정도 빠르다.)

3) 데이터베이스 비교

데이터베이스 비교

4) Memcached 비교

다양한 데이터베이스들 중에서 Memcached는 Redis와 유사하다. Memcached는 데이터가 디스크를 거치지 않고 메모리에만 저장되기에 속도가 빠르며 프로세스가 죽거나 장비가 종료되었을 때 데이터가 사라진다. 만료일을 지정하여 만료가 되면 자동으로 데이터가 사라진다. 보통 대형 포털에서 정적인 페이지 또는 검색 결과 등을 캐쉬하는데 많이 사용한다.

항목 Memcached Redis
처리 속도 디스크를 거치지 않고 메모리에만 저장되기에 속도가 빠르다. 디스크와 메모리에 저장되는데도 Memcached 처리 속도와 차이가 없다.
데이터 저장 데이터가 메모리에만 저장되기에 프로세스나 장비가 죽을 경우 데이터가 사라진다. 데이터는 메모리와 디스크에 저장되기에 불의의 경우에 데이터 복구가 가능하다.
만료일 지정 만료일을 지정하여 만료 시 데이터는 캐시처럼 영원히 사라진다.
메모리 재사용 저장소 메모리를 재사용한다. 만료전에도 더 이상 데이터를 넣을 메모리가 없을 경우 LRU 알고리즘에 따라 데이터는 사라진다. 저장소 메모리 재사용이 없으며 명시적으로 데이터 제거가 가능하다.
지원하는 데이터 타입 String String, Set, Sorted Set, Hash, List

[참고] medium.com/@jyejye9201/%EB%A0%88%EB%94%94%EC%8A%A4-redis-%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-2b7af75fa818

728x90