( 출처 : 연세대학교 데이터베이스 시스템 수업 (CSI6541) 강의자료 )

Chapter 11. Introduction to Redis


Contents

  • Remind
  • NoSQL
  • In-memorry Key-Value Storage
  • Redis Data Types
  • Hash-Structure
  • RDB & AOF
  • Redis Cluster


(1) Remind

Big data = 3V

  • (1) Volume, (2) Variety, (3) Velocit


Requirements of Big data

  • a) require very high scalability

    \(\rightarrow\) Distributed File Systems (Hadoop)

  • b) need to support non-relation data

    \(\rightarrow\) NoSQL (Redis, RocksDB)


(2) NoSQL ( = Not Only SQL )

next generation DBMS addresses…

  • (1) being non-relational
  • (2) distributed
  • (3) open-source
  • (4) horizontally scalable


Characteristics of NoSQL

  • (1) flexible to accommodate
  • (2) better scalability
  • (3) complex-free working
  • (4) independent of schema


NoSQL Types

  1. Key-Value DB
    • data storage for storing, retrieving, managing associative arrays
    • ex) Redis, RocksDB
  2. Document DB
    • Documents encapsulate & encode data in some standard formats (e.g. xml, json)
  3. Column Family DB
    • DB object that contains colummns of related data
  4. Graph DB
    • DB that uses graph structures for semantic queries with nodes/edges and properties to represent & store data


(3) In-memory Key-Value Storage

  • 데이터를 key-value 형태로 메모리(DRAM)에 저장
  • 고속 처리 가 요구되는 시스템에 적합한 DB
  • 다른 DB와 연계하여, 중간 계층에서의 cache 저장 용도로 활용 가능

figure2


(4) Redis Data Types

figure2


(5) Hash-Structure

  • Redis DB의 내부는 hash 구조 로 이루어짐

  • Hash Function ( = Key )에 해당하는 Hash table의 index에 Key-Value pair ( = Entry )를 저장함

    figure2

  • Incremental rehashing

    • hash table의 크기 변경 시, 요청 처리 속도에 지장 없도록 점진적으로 rehashing 작업을 수행


(6) RDB & AOF

Persistence (지속성)

Redis는 in-memory DBMS

\(\rightarrow\) 서버가 비정상적으로 종료되면 “데이터 유실 위험”이 있음

\(\rightarrow\) 유실 문제 완화 위해, 데이터 복원 위한 2종류의 절차

  • (1) RDB ( Snapshotting )

    • Redis에 저장된 데이터들을 Binary dump 형식 log로 저장
    • 일정 간격으로, 전체 데이터셋에 대한 snap shot 저장
    • 장 & 단
      • 장) snapshot loading 작업으로 빠르게 데이터 복구
      • 단) snapshot 생성 기간이 길고, 생성 이후에 추가된 데이터는 유실
  • (2) AOF ( Append-Only File )

    • Memory state를 변경시키는 명령어를 log로 저장

    • 장 & 단

      • 장) RDB에 비해 데이터 유실이 적음

      • 단)

        • log 기록을 위한 disk I/O가 빈번하여 Redis 성능 저하

        • 기록된 명령어들의 재실행을 통해 데이터를 복구

          \(\rightarrow\) 복구 시간이 오래 걸림


(7) Redis Cluster

Redis는 분산 시스템 구성을 위한 Cluster 기능 제공

  • 한 곳의 node 자원만이 아니라, 여러 node 자원을 통합

    \(\rightarrow\) 저장 공간을 증대!

특징

  • (1) horizontally scalable ( = scale out )
  • (2) Auto data sharding
  • (3) Fault tolerant
  • (4) Decentralized cluster management ( = gossip )
## a) Scale UP & OUT - scale up : 물리적 장치의 **스펙을 업그레이드** - scale out : 물리적 장치의 **개수를 증가**
## b) Auto Data Sharding Load Balancing (Data Sharding) - 빅데이터 $$\rightarrow$$ 여러 node에 data를 분산하여 저장 - DBMS 밖에서 데이터를 나누는 방식이기 때문에, **Shard 수에 따라 여러 대의 DBMS 설치가 필요** ![figure2](/assets/img/sql/img87.png)
## c) Fault Tolerance Master-Slave Replication - Master node는 실시간으로 **자신의 데이터를 Slave node로 복제**함 - ***Failover*** : Slave node를 **master로 승급시키는 명령** - Master 노드가 다운되면, slave 노드를 master로 승격하여 cluster 정상 운영 ![figure2](/assets/img/sql/img88.png)
## d) Decentralized cluster management Gossip protocol - To discover new nodes - To **send ping packets** to make sure **all the other nodes are working** properly - To send **cluster messages** needed to signal specific conditions. ![figure2](/assets/img/sql/img89.png)

Tags:

Categories: ,

Updated: