#NoSQL과 Redis
##NoSQL 개념
데이터 저장 방식은 File System, RDBMS를 거쳐 현재의 NoSQL이 등장하였다 NoSQL은 기존의 시스템과 비교하면 많은 장점이 존재하는데, 이를 알아보자
###1) 클라우드 컴퓨팅 환경에 적합하다
최근 클라우드 컴퓨팅 환경이 적극적으로 도입되고 있다 개발 운영 플랫폼은 새로운 변화를 요구하고 있지만 여전히 RDBMS로 구축 운영하다 보니 비용 및 성능 문제와 같은 다양한 문제점을 마주하게 된다
기존의 DBMS는 대부분 상용 라이센스이다 보니 구축부터 구매 비용이 발생하는데 클라우드 컴퓨팅 환경에서는 여러 대의 서버가 필요하다 보니 2~3배 이상의 비용이 발생하게 된다
###2) 유연한 데이터 모델이다
기존의 RDBMS의 경우 데이터베이스를 분석, 설계, 구축하는 과정에서 개념 데이터 모델링, 논리 데이터 모델링, 물리 데이터 모델링 단계를 거쳐 정규화, 반정규화를 수행한 다음, 최종 테이블, 인덱스 구조를 생성한다
이와 같은 작업은 절대 쉬운 일이 아니며 장기간동안 많은 비용이 발행한다 NoSQL의 경우 이와 반대되는 개념으로 비정형 구조라고 불리며 보다 쉽고 간단하게 설계할 수 있다
###3) 빅데이터 처리에 효과적이다
NoSQL은 빅데이터가 발생하는 비즈니스 환경에서 빠른 성능이 보장될 수 있도록 설계되어 개발된 SW이다 일반적으로 잘 설계된 NoSQL DB는 관계형 DB에 비해 최소 3배 이상의 성능을 기대해 볼 수 있다
##KeyValue DB 활용
###장점
1) Redis는 In-Memory 기반의 데이터 저장 구조이다
기존 RDBMS의 경우 메모리 -> 디스크 순서로 저장되며 DBMS에 의해 할당되고 관리된다 반면 In-Memory DB의 경우 메모리에 저장되며 선택적으로 디스크에 저장된다. 또한 이는 DBMS에 의해 할당되거나 관리되지 않으며 예기치 못한 장애가 발생할 경우 모든 데이터는 유실된다
2) Key-Value 데이터 구조는 하나의 Key와 데이터 값으로 구성된다
RDBMS에서 데이터의 빠른 검색을 위해 인덱스를 사용하는 것처럼 Redis DB에서도 인덱스를 생성할 수 있지만, 인덱스의 종류와 구조가 다르기 때문에 표현의 한계가 있다 따라서 관계형 DB의 데이터 구조를 그대로 매핑해서 사용할 수는 없으며 데이터의 일부를 잠시 보관할수는 있다
3) 가공처리가 요구되는 비즈니스 환경에서 적합하다
Redis를 운영하는 사용자 환경을 살펴보면 대부분 Main DB로 RDB를, 보조 DB로 Redis를 사용한다 그 이유는 대부분 메인 DB로 선택한 제품들은 파일 기반의 저장 구조이다 보니 디스크 IO 문제로 발생하는 성능 지연 문제를 해소하기 위해 키-밸류 DB를 보조 DB로 사용하는 것이다
활용 영역
1) 실시간 분석 영역
메인 DB에는 현재 시점 및 과거 시점 데이터를 저장하고, 필요에 따라 데이터를 읽은 다음 가공처리 및 분석 작업은 Redis 서버에서 수행한 후 메모리에 저장하고 그 결과를 사용자에게 제공한다
2) IOT 영역
인-메모리 기반의 Redis는 매우 경량 DB이므로 IOT 제품들의 데이터를 저장 및 관리하기에 적합하다
3) 계측 정보수집 영역
계측 장비로부터 수집된 데이터를 쉽고 빠르게 저장, 가공 처리할 수 있다
4) 개인화 정보관리 영역
Redis DB에 저장되어 있는 데이터를 사용자의 필요에 의해 쉽게 가공 처리하여 편집이 요구되는 비즈니스 환경에 활용할 수 있다
5) 전자 상거래 비즈니스 영역
기존의 관계형 DBMS를 기반으로 했던 비즈니스 영역에도 동일하게 적용할 수 있다 하지만 과거 데이터를 지속적으로 저장, 관리하는 것은 한계가 있으므로 분산-복제 시스템을 구축 운영해야 한다