Today I Learned/컴퓨터기초

메모리 계층 구조와 In-Memory DB (Redis) 특징

하나719 2023. 8. 30. 16:55
반응형

대표적인 데이터베이스의 종류 2가지

  • RDB (관계형 데이터베이스)
    • 엑셀처럼 행과 열이 존재함
    • SQL이라는 언어를 사용해서 접근할 수 있음
    • MySQL, PostgresSQL등이 있음
    • HDD나 SSD같은 보조기억 장치에 데이터를 저장함
  • NoSQL
    • HDD나 SSD같은 보조기억 장치에 데이터를 저장
    • key-value의 방식으로 데이터를 저장
    • 데이터의 형식이 정해져있지 않아 구조 변경이나 데이터 형식 변경이 쉬움
    • MongoDB, Elasticsearch 등이 있음

In-Memory DB

  • Memory 같은 주 기억 장치에 데이터를 저장
  • NoSql에 속하는 데이터 베이스로 key-value 형식으로 데이터를 저장 (RDB에도 인메모리 db 있긴함)
  • Memory의 특성 때문에 데이터가 휘발성이며, I/O 속도가 매우 빠름
  • Redis, Memcached 등이 있음

메모리의 계층 구조

  • CPU와 메모리(RAM) 사이에 레지스터와 캐시가 있지만, 저장공간이 좁고 비싸 RAM이 주 기억장치로 데이터를 담아놓고 있다.
    • 입력을 받으면 RAM에 저장 → CPU에서 계산 → 결과를 RAM에 보내 출력메모리의 특징
      • 전원이 꺼지면 데이터가 날아가는 휘발성
      • CPU와 가까워 데이터 처리가 빠름
      (보조기억장치 HDD, SSD는 데이터 처리 속도가 느린 대신 전원이 꺼져도 날아가지 않음)
    • 레지스터는 cpu와 같은 레벨에 있다고 생각하면 된다 

 

  • 캐시(cache)란?
    • 데이터를 미리 복사해놓은 임시 저장소이며, 빠른 장치와 느린 장치사이 속도 차이로 인한 병목 현상을 줄이기 위한 메모리
    • 실제로 Ram과 cpu는 연산속도의 편차가 심해 캐시메모리를 중간에 두는 것으로 속도 차이를 해결
    • 임시로 저장한다는 특징을 통해 한번 계산되었던 것을 다시 요청할 경우 빠르게 가져올 수 있다.
      • cpu가 데이터를 필요로 할 때, 먼저 캐시에서 찾아보고 없으면 ram에서 가져옴
      • 빈번하게 액세스되는 데이터를 임시로 저장하여 전체 시스템 성능을 향상 시킴
  • In-Memory DB
    • 실시간으로 빠르게 데이터를 처리해야하는 경우 유용하다
      • 예를들어 실시간 광고 입찰가가 반영되어야하는 프로그램, 사물인터넷 (스마트워치의 심장 박동, 운동기능 등)
  • Redis
    • key-value 형태의 값을 저장할 수 있는 in-memory db
    • 기존 RDB db 대비 굉장히 빨라 평균 읽기 및 쓰기 작업 속도가 1ms미만으로 초당 수백만 건의 처리가 가능
    • 인메모리는 휘발성이라고 했는데 redis는 영속성을 지원하는 인메모리 데이터 저장소
      1. Snapshot:
        • 스냅샷 메커니즘은 주기적으로 Redis의 데이터 상태를 스냅샷 파일로 디스크에 저장하는 방법
        • 주기적으로 또는 특정 조건이 충족될 때 스냅샷을 생성하여 데이터의 상태를 디스크에 저장하므로, 장애 시에 데이터를 복구할 수 있음
        • 스냅샷 파일은 이진 형식으로 저장되며, Redis 서버가 재시작되면 이 파일을 로드하여 데이터를 복구
      2. Append-only File (AOF):
        • AOF는 변경된 Redis 명령을 로그 형식으로 기록하는 메커니즘입니다.
        • Redis는 실행된 모든 쓰기 작업(명령)을 AOF 파일에 기록하여 디스크에 저장합니다.
        • 서버가 재시작되면 AOF 파일에 저장된 명령을 재실행하여 데이터를 복구합니다.
        • AOF는 스냅샷보다 더 신뢰성 있는 지속성을 제공하지만, 일반적으로 스냅샷보다 더 많은 디스크 공간을 사용하게 됩니다.
      3. Combining RDB and AOF:
        • 일부 환경에서는 스냅샷과 AOF 메커니즘을 동시에 사용하여 영속성을 확보하기도 합니다. 이렇게 함으로써 스냅샷의 빠른 복구와 AOF의 안정성을 모두 활용할 수 있습니다.
      이렇게 Redis는 RDB 및 AOF 메커니즘을 조합하여 데이터의 지속성을 보장합니다

 

RDB와 NoSQL 주로 언제 사용?

회원 정보, 결제 정보같이 데이터의 영속성과 데이터간의 관계가 중요한 경우 RDB를 사용하며 

데이터 처리 속도 향상이 중요한 경우, 주로 쇼핑몰에서 상품 이미지를 불러온다던지 빅데이터 처리등에는 NoSQL 을 사용해서 성능을 향상 시킬 수 있다. NoSql은 데이터가 중복되어도 괜찮으며 데이터간의 관계가 없어도 돼서 로그처리등에 유용하다.

 

 

참고 링크

[os] 메모리 구조

레디스가 사랑받는 이유에 대하여  

[DB] Redis의 개념과 특징, 아키텍처  

반응형