In-memory DB

이준혁·2022년 7월 23일
0

database-knowledge

목록 보기
2/3

In-memory DB
2022.07.23 공부 내용


In-memory DB

디스크를 사용하는 기존 DBMS와 달리 메모리에 데이터를 저장하는 DBMS. 디스크에 접근 시간이 오래 걸리기 때문에 디스크를 이용하는 것 보다 속도가 빠름.

Feature

  • 지연 시간이 적음
  • 저장 공간이 한정됨
  • 임시 데이터에 적합
  • Durability 보장 X

Durability

RAM이 휘발성이기 때문에 데이터베이스의 durability가 보장되지 않음. 따라서 다음과 같은 방식으로 보강.

  • Snapshot: 특정 시간의 데이터를 디스크에 백업
  • Transaction Logging: 트랜잭션을 매 번 기록
  • Non-volatile RAM: 비 휘발성 RAM 사용

REDIS

key-value 구조의 데이터를 다루는 NoSQL, in-memory DBMS. Cache server로 주로 사용.

Single Thread이므로 한 번에 하나의 명령만 처리

Cache server

모든 데이터 조회에 DB를 사용한다면 부담이 됨. 따라서 중간에 캐시 서버를 두어 부하를 줄임. 다음과 같이 두 가지 방법 존재.

Look aside cache

DB를 조회하기 전에 먼저 cache server를 조회하고, hit하면 가져오고, miss가 일어나면 그 때 DB에 접근하는 방법.

Write back

모든 정보를 cache server에 저장하고, 특정 시간마다 한 번씩 cache server의 내용을 한 번에 DB에 저장하는 방법.

쿼리를 한 번에 보내기 때문에 성능은 높지만, cache server에 오류가 날 시 데이터에 문제가 생길 수 있음.

Redis values

value로 다양한 자료 구조 지원. 이 때 value는 다음 중 하나의 자료 구조임.

  • String: Text, binary
  • Sets: String 집합
  • Sorted sets: 정렬된 set
  • Hashes: 여러 개의 field를 가짐
  • Lists: Array 형식의 데이터 구조

Redis Backup

데이터베이스의 durability를 보존하기 위해 다음 두 가지 방식 사용.

  • snapshot: 메모리에 있는 모든 내용을 디스크에 옮겨 담음.
  • AOF (Append Only File): Redis의 모든 명령을 저장함. 이후 재 시작시 이를 이용해 복구.

요약

디스크보다 메모리를 이용하는 DB 시스템이 훨씬 빠르나 휘발성이 있는 만큼 잘 다뤄야 하고, Cache 서버 등에서 사용.

대표적으로 Redis라는 key-value 값을 이용하는 NoSQL 데이터베이스 존재.

참고자료

  1. Redis
  2. Redis란?
  3. Redis란 무엇일까?
  4. In-memory DB
  5. In-memory DB
profile
만들고 개선하는 것을 좋아하는 개발자

0개의 댓글