Study/Redis

Redis Study - 레디스란

긍정왕웹서퍼 2023. 7. 29. 16:04
728x90

Redis 스터디

 

 

NoSQL & Redis | 주종면 - 교보문고

NoSQL & Redis | ㆍ 도서 특징 ⑴ Redis의 주요 구조와 기술들을 도형 그림을 통해 체계적인 설명과 원리 위주로 학습합니다. ⑵ 각 장에서 소개하는 기술들에 대해 실습이 가능하도록 구성되어 있습

product.kyobobook.co.kr

해당 책을 바탕으로 매주 1챕터씩 진행하는 스터디를 하기로 했습니다.

Redis를 위 책과 함께 공식 문서를 바탕으로 공부하면서 정리한 내용을 포스팅 하겠습니다.

 

NoSQL

  1. Key - Value : 간단한 키와 연결된 값을 저장하는 방식으로 빠른 읽기와 쓰기, 높은 확장성Amazon DynamoDB : AWS에서 제공하는 키 - 밸류 저장소, 자동 확장 기능을 제공하여 대규모 처리가능, 빠른 속도와 높은 확장성을 갖추고 있습니다.
  2. Redis : 대표적인 key - value 형태의 In-memory 데이터 구조 저장소, 데이터를 메모리에 저장하므로 높은 속도를 제공하지만 영속성에 대한 설정이 가능, 세션 캐싱, 메시지 브로커등 다양한 활용이 가능
  3. Column - Family : 컬럼 패밀리라는 개념을 사용, 여러 개의 열 패밀로 구성되며 각 열 패밀리는 다른 컬럼들을 포함 Cassandra : 분산형 컬럼 패밀리 데이터베이스로 대규모 데이터 처리에 특화, 확장성이 높고 고가용성을 제공, 다양한 데이터 센터에 걸쳐 데이터를 분산 저장가능
  4. Document : JSON, BSON 과 같은 문서 형식의 데이터 구조, 비정형 데이터로 자유로운 저장과 중첩 구조
  5. MongoDB : 문서 데이터베이스로 JSON 형식의 문서를 저장하고 다양한 쿼리를 지원, 확장성이 뛰어나고 높은 고가용성을 제공, 주로 웹 애플리케이션, 로그처리, 실시간 분석등에 사용
  6. Graph : 데이터 간의 관계를 그래프 형식으로 저장하고 처리, 복잡한 관계를 효율적으로 표현하고 쿼리가능 Neo4j : 그래프 데이터베이스로 복잡한 관계를 저장하고 관련 쿼리를 효율적으로 수행, 사회 네트워크 분석, 추천 시스템, 지리 정보 시스템등에 적합

 

Key - Value 데이터 구조

 

특징

  1. Redis 는 In-memory 기반의 데이터 저장 구조 : 기존의 RDBMS에서 사용하는 인-메모리 솔루션은 파일 기반의 데이터 저장 구조로 먼저 메모리에 저장되었다가 나중에 디스크에 입력되는 구조지만, 순수한 인-메모리 구조인 Redis같은 DB는 모든 데이터를 메모리에 저장하고 필요에 따라 설정을 통해 선택적으로 디스크에 저장합니다. 만약 추가 설정을 하지 않는다면 메모리 상에만 존재하며 장애가 발생한다면 데이터가 유실될 수 있습니다.
  2. Key - Value 데이터 구조는 하나의 Key와 데이터 값으로 구성 : Redis 에서 데이터 저장 구조를 테이블이라고 표현합니다. 기존 RDBMS 의 저장 구조와 논리적인 표현은 동일하지만 데이터를 표현하는 방법은 다릅니다. 또한 인덱스를 Redis에서도 사용할 수 있지만 종류 및 구조가 많이 다르기 떄문에 표현에는 한계가 있습니다. 그러므로 RDBMS 데이터 구조를 그대로 매핑해서 사용할 수는 없으며 일부를 잠시 보관하거나 가공 처리해서 임시 보관은 가능합니다.
  3. 가공처리가 요구되는 비즈니스 환경 : Redis, Memcached 같은 키-밸류 DB를 사용하는 사용자들은 보통 다양한 DB를 함께 하이브리드로 구축하여 운영하는 경우가 많은데, 대부분의 이유는 메인 DB로 선택한 제품들의 구조가 파일 기반이다 보니 디스크 IO 문제로 인해 발생하는 성능 지연 문제를 해결하기 위한 솔루션으로 키-밸류 DB를 보조로 사용합니다. 즉, 데이터의 가공, 통계 분석, 데이터 캐싱, 메시지 큐등 다양한 용도로 사용할 수 있습니다.

 

활용 영역

  1. 실시간 분석 : Redis의 장점을 가장 잘 살려서 적용하는 비즈니스 영역은 실시간 가공 처리 및 분석이 요구되는 분야로, 필요한 데이터를 메인 DB에서 데이터를 저장하고 읽은 다음 가공 및 분석 작업은 Redis를 통해 수행해 메모리에 저장하고 그 결과를 사용자에게 제공합니다.
  2. IOT 영역 : 경량 SW로서 IOT 제품들의 데이터를 저장 및 관리하기에 적합합니다. 라즈베리파이, 아두이노, 안드로이드, ARM 등의 플랫폼이 있습니다.
  3. 계측 정보수집 영역 : 다양한 계측 장비 (온도, 습도, 조도 ,속도, 위치, 맥박/심장 박동수 등)로 부터 수집된 정보를 저장 및 가공합니다.
  4. 개인화 정보관리 영역 : 웹사이트에서 사용자 개인의 특성과 기호에 맞는 페이지 화면을 편집해서 보듯, Redis에서도 저장된 데이터를 사용자의 필요에 따라 쉽게 가공 처리하여 편집이 요구되는 비즈니스 환경에 활용이 가능합니다.
  5. 전자 상거래 비즈니스 영역 : 기존 RDBMS를 기반으로 한 영역에도 동일하게 적용이 가능하지만 과거 시점 데이터를 지속적으로 저장 관리하는 것은 한계가 있고, 반드시 분산-복제(Shard-Replication) 시스템을 구축 운영해야 합니다.

 

선정 방법

다양한 영역에서 사용할 수 있지만, 어떤 제품을 선택하는게 올바른지에 대해 알아야합니다.

  1. Simple API 지원 : 대부분 오픈소스 라서 개발 언어들과 간편하게 연동되지 않을 수 있으므로 확인해야 합니다.
  2. Distributed 제공 : NoSQL은 대규모 데이터 처리를 위해 개발된 만큼 데이터의 분선 저장과 처리가 중요하며 이를 위한 기술로 샤딩(Sharding) 또는 파티셔닝(Partitioning) 같은 기술들의 제공여부와 구현 방법이 개발 환경과 적합한지에 대해 검토해야 합니다.
  3. Replication 지원 : 서비스가 중단되거나 장애가 발생했을 경우 데이터의 유실을 방지하기 위해 반드시 복제(Replication) 시스템을 구축해야 하며 해당 기술이 제공되는지, 개발 환경과 적합한지 검토해야 합니다.
  4. Scale-Out 가능 여부 : 시스템의 자원이 부족한 경우 상용 라이센스가 아닌 오픈소스 라이센스로 추가비용 없이 자원을 추가하거나 늘리는 등 다양한 방법으로 유연한 처리가 가능하며, 스케일-아웃이 필요한 경우 NoSQL에서 제공하는 다양한 운영, 관리 매커니즘을 활용할 수 있다는 장점이 있습니다.
  5. 유지보수 비용 : RDBMS에 비해 저렴한 비용으로 유지보수가 가능합니다.
  6. 비정형 데이터 구조 지원과 트랜잭션 제어 여부 : 영상, 사진, 음성, 좌표등 다양한 비정형 데이터들에 대해 처리가 가능하도록 설계되어 편리합니다. 대부분의 NoSQL은 Auto-Commit을 제공하지만 몇몇 제품은 사용자가 직접 트랜잭션 제어가 가능합니다. Redis에 multi 명령어, MongoDB의 Multi-Document Transaction, Cassandra DB의 LWT등입니다.
  7. 오픈소스 여부 : 대부분의 경우 NoSQL은 듀얼 라이센스(Community Edition, Enterprise Edition)정책을 제공하며, 엔터프라이즈 에디션의 경우 초기 구매 비용이 발생하는데, 추가 기능과 유지보수 비용이 포함되어 있습니다. 그리고 해당 제품에 대한 기술지원 업체의 여부도 중요합니다.