본문 바로가기
데이터베이스

인메모리(In-memory) DB 특징과 종류 비교

by Data Lib 2023. 11. 13.

이번 포스팅에서는 인메모리(In-memory) 데이터베이스에 대해 알아보도록 하겠습니다. 인메모리 DB가 출현한 배경은 기술적 측면과 비즈니스 측면으로 나눠서 생각해 볼 수 있습니다.

 

 

 

인메모리 데이터베이스 배경

첫째, 기술적 측면

기술적으로 64bit OS 환경이 일반화되면서 부터 인메모리 시장은 시작됐습니다. 아무래도 메모리 가격이 지속적으로 하락하면서 메모리 사용의 제약사항 없어졌기 때문이죠. 과거보다는 메모리에 활용에 긍정적인 환경이 됐습니다. 

둘째, 비즈니스적 측면

비즈니스 요구사항으로 신속한 의사결정 및 안정적 서비스  Needs가 나오기 시작했습니다. 방법은 메모리에서 처리해서  빠르게 결과를 내는 방법밖에는 없었죠. 결국 이러한 수요로 인메모리 데이터베이스가 출시됐습니다.  

 

 

인메모리(In-memory) 데이터베이스란

인메모리 DB는 기존 데이터베이스(오라클, MySQL)가 디스크(disk)에 데이터를 관리하는 반면, 메모리에 데이터를 업로드하여 사용하는 데이터베이스를 말합니다. 대용량 데이터의 증가와 맞물려 실시간 트랜잭션의 증가로 고성능 처리 요구에 대응하기 위학 목적으로 만들어졌습니다. 데이터베이스의 기본적인 기능과 실시간 시스템 기술의 결합으로 Real Time Constraint와 DB Operation 기능을 함께 제공합니다. 단 메모리에 저장하는 만큼 주기억장치의 휘발성(날라가 버리는 문제)으로 인해 오류 복구가 주요 해결 과제입니다. 

 

인메모리 DB 구조
인메모리 DB 구조

 

기존 데이터베이스와 In-Memory 데이터베이스의 구조를 비교해 보면 아래 그림과 같습니다. 
기존 데이터베이스를 디스크 기반 데이터베이스라고도 하는데요. 일반적으로 자주 불러오는 데이터 일부만을 메모리에 저장하여 사용하는 구조입니다. 메모리는 성능상의 이유로 캐시 방식을 통해 DB read 부하를 감소시키는 목적으로 주로 사용됩니다.

 

대부분의 데이터는 Disk에 보관을하고 Tape과 같은 매체에 백업하게 되어 있습니다. 그에 반에 인메모리 데이터베이스는 데이터 갱신 자체를 메모리 사용합니다. 그리고 백업 및 로그 생성은 디스크를 이용하는 방식입니다. 이런 이유로 시스템이 종료(shotdown)되었을 때 메모리에 데이터에 대한 이중화 같은 보완 장치를 마련했습니다. 

 

기존 database vs 인메모리 database
기존 database vs 인메모리 database

 

시스템 및 복구, 안정화 측면의 비교

1. 시스템 측면

디스크 기반 DB는  데이터 접근 측면에서 대표적인 인덱스인 b-tree를 사용합니다. 그리고 데이터 저장 위치가 디스크 입니다. 반면 인-메모리 db는 T-tree를 사용하고, 데이터 저장 위치도 메모리에 저장합니다. 

  디스크 기반 DB In-Memory DB
저장장치
디스크 중심
Memory 중심
데이터 접근(index)
디스크 I/O를 최소화하기 위한 B-tree
메모리에 대한 최적화된 접근 T-tree
DB위치
디스크
메모리(대신 자동 또는 수동으로 디스크 반영)
DB크기
디스크 크기
가상 메모리 크기

 

2. 복구 및 안정화 측면

복구 측면에서 특징은 디스크 기반 DB는 디스크에 보관하기 때문에 안정적이고 대용량을 보관할 수 있습니다. undo, redo, checkpoint 등의 기술을 통해 복구가 가능합니다. 반면 인-메모리 DB는 실시간의 빠른 데이터 처리를 목표로 하지만 메모리가 다운(down)되면 데이터가 사라집니다. 때문에 주기적인 디스크 백업 등의 전략이 필요합니다. 

  디스크 기반 DB In-Memory DB
운영목표
안정적/대용량
빠른 트랜잭션 처리
빠른 응답
회복기법
UNDO/REDO
Checkpoint
Shadow Paging
보조 메모리
디스크
(메모리에 존재하여 이중화 형태로 제공)

 

인메모리 데이터베이스 종류

인-메모리 데이터베이스의 종류는 유형에 따라 다양합니다. 여기서는 오픈소스 MDBMS로 유명한 두개의 데이터베이스에 대해 비교해 보도록 하겠습니다.  

 

1. Redis

  • Redis는 오픈소스 MDBMS입니다. Multi Data based Management System으로 플랫폼 기반 프레임워크 dbms를 제공하는 솔루션입니다. 이는 다차원 데이터 베이스를 의미합니다. 
  • 향상된 Key-Value 캐시와 저장 기능을 제공합니다. 이는 키밸류 구조로 관리하기 때문에 NoSQL 데이터베이스로 분류되기도 합니다. 또한 strings, hashes, lists, sets, sorted sets과 같은 기능을 지원하여 데이터 구조 서버로 알려져 있습니다. 
  • Redis 데이터베이스에 대해 더 자세한 특징과 활용 사례가 궁금하시면 링크를 참고하시기 바랍니다. 

2. Memcached

  • 오픈소스 MDBMS로 분산된 메모리 캐싱 시스템에 일반적으로 사용됩니다. RAM에서 캐싱 데이터를 통해 동작하는 웹 기반 다이나믹 데이터베이스에서 속도 향상을 위해 주로 사용되어 왔습니다. 
구분 Redis(레디스) Memcached(멤캐시드)
장점
디스크에 데이터를 기록하여 메모리가 날라가도 데이터를 복구할 수 있음
(RDB
방식과 AOF 방식 사용)
String, List, Set, Sorted Sets, Hash 등의 다양한 데이터 포맷을 지원하여 애플리케이션 편하게 데이터를 사용
Memcached 보다 다양한 API를 지원
DB / API 통신을 줄이기 위해 데이터를 캐싱 처리에 사용하면 유리
트래픽이 몰려도 (Redis에 비해) 응답 속도가 안정적임
내부적으로 slab 할당자를 사용하고 있어서, 메모리 할당이 잦지 않음
단점
메모리 파편화가 발생하기 쉬움
메모리를 2배로 사용 (실제로 필요한 메모리 양보다 더 많은 메모리를 사용하게 됨)
데이터 타입과 API(Redis에 비해) 다양하지 않음
종합
다양한 데이터 타입과 복구 기능으로 서비스의 특정 기능을 위한 목적에 적합
복구에 민감하지 않은 데이터이면서 통신 속도를 향상 시키는 목적에 적합

 

레디스(Redis)와 맴캐시드(Memcached) 외에도 다양한 인메모리 db가 있습니다. 유형에 따라 인메모리 데이터베이스를 구분해서 볼 수 있습니다. 더 자세한 내용은 아래 글에서 확인해 볼 수 있습니다.  

 

 

인메모리(in-memory) db 유형에 따른 종류

인메모리(In-memory) 데이터베이스는 어떤 것이 있을까요? Redis, Memcached에 대해 인메모리 DB의 특징에서 알아보았지만 다른 것들도 많습니다. 인메모리 데이터베이스의 특징을 요약해 보면, 하드 디

bommbom.tistory.com