인메모리(In-memory)DB란?

이지니·2025년 9월 29일

TIL

목록 보기
5/11

In-Memory 데이터베이스

인 메모리 데이터베이스는 컴퓨터의 주 메모리에 데이터를 저장한다.

그렇다면 메모리란 무엇일까?
메모리는 컴퓨터 하드웨어 구성요소 3가지 중 하나로 저장을 담당하고 있는 부품이다.
컴퓨터 하드웨어 구성요소 3가지는 아래와 같다.

  • 연산을 담당하는 CPU
  • 기억을 담당하는 주 기억장치 RAM, 보조기억장치 HDD, SDD
  • 입출력을 담당하는 키보드, 모니터, 프린터 등

컴퓨터가 데이터를 저장할 때 사용하는 것이 바로 RAM이고 인 메모리 데이터베이스는 여기에 데이터를 저장한다.
그럼 왜 RAM에 저장할까?

Memory 사용 이유

컴퓨터 작동원리

컴퓨터의 기본적인 동작 과정을 단순화하면 다음과 같다.
1. 입력을 받으면 RAM에 저장된다.
2. RAM에 적힌 값과 존재하는 명령을 해석하여 CPU가 연산한다.
3. 결과를 RAM에 보내주면 그것을 출력한다.
즉, CPU는 그저 메모리에 올라와있는 프로그램의 명령어들을 실행할 뿐이다.

메모리 계층 구조 관점

출처
메모리 계층 구조는 위로 갈수록 속도는 빠르고 용량은 작으며, 아래로 갈수록 속도는 느리지만 용량은 크다는 특징이 있다.

  • 레지스터: CPU 안에 있는 작은 메모리이며, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적은 특징을 가지고 있다.
  • 캐시 : L1, L2, L3 캐시를 지칭하며 휘발성, 속도 빠름, 기억 용량이 적은 특징을 가지고 있다.
  • 주기억장치 : RAM을 뜻하며 휘발성, 속도 보통, 기억 용량이 보통인 특징을 가지고 있다.
  • 보조기억장치 : HDD, SDD를 뜻하며 비휘발성, 속도 낮음, 기억 용량이 큰 특징을 가지고 있다.

CPU Register와 CPU CachesCPU 내부에 존재하기 때문에 CPU가 빠르게 접근이 가능하다.
메인 메모리CPU 외부에 존재하기 때문에 레지스터와 캐시보다 상대적으로 느리다. 메인 메모리를 읽어오기 위해선 인터럽트를 통해 커널모드에서 가져올 수 있다.
하드 디스크는 심지어 CPU가 직접 접근조차 할 수 없고, 디스크의 데이터를 메모리로 이동시키는 과정을 거쳐야 한다.

따라서 메모리에 데이터를 저장하는 In-Memory DB는 디스크 기반 DB보다 훨씬 빠른 성능을 낼 수밖에 없다.

프로세스 관점

Disk I/O
운영체제 입장에서 데이터베이스도 결국 하나의 프로세스다.
Disk I/O가 필요한 경우, 해당 프로세스는 Blocked 상태로 들어가고, 요청이 완료될 때까지 대기해야 한다. 그동안 CPU는 다른 프로세스를 처리한다. 즉, 디스크 접근에는 불가피하게 대기 시간이 발생한다.

Memory
반대로 메인 메모리에 접근하는 경우, 단순히 인터럽트를 발생시켜 커널 모드로 전환할 뿐, 프로세스가 Blocked 상태가 되지 않는다. CPU는 Ready와 Running 상태를 오가며 빠르게 연산을 이어갈 수 있다.

즉, Memory가 프로세스 관점에서도 Disk I/O보다 빠를 수 밖에 없다.

In-Memory DB 특징

출처
위 이미지는 인메모리 데이터베이스의 구조를 나타낸다.

인메모리 데이터베이스는 RAM에 데이터를 저장하기 때문에 기본적으로 영속성(persistence)이 보장되지 않는다. 프로세스가 종료되면 데이터가 유실될 수 있다. 이를 보완하기 위해 다음과 같은 기법들이 사용된다.

스냅샷(Snapshot)

  • 특점 시점의 전체 데이터를 디스크에 저장한다.
  • 단, 스냅샷 이후 변경된 데이터는 보존되지 못할 수 있다.

트랜잭션 로깅(Transaction Logging)

  • 모든 삽입 및 수정 연산에 대한 세부 정보를 로그로 기록해 비휘발성 저장소에 저장한다.
  • 하지만 분당 수천건의 연산을 수행하는 데이터베이스에서 트랜잭션 로깅은 시스템의 성능과 저장 용량에 과부하를 제공하기 때문에 대부분의 인메모리 데이터베이스는 스냅샷이 만들어질 때까지 트랜잭션 로그를 보관하였다가 이후 삭제한다.

비휘발성 메모리 (NVRAM)

  • 전원이 꺼진 후에도 데이터를 유지한다.
  • 예: 배터리 기반 SRAM, EEPROM 등

또한 저장 공간이 RAM에 한정되기 때문에, 용량이 부족하면 기존 데이터를 삭제하거나 새로운 입력을 거부해야 한다.

따라서 인메모리 DB는 영속성이 반드시 필요하지 않은 데이터(예: 로그인 세션, 임시 데이터)나 테스트 환경에서 특히 유용하다.

기존 database와 비교

출처

  • 기존 DB : 주 데이터는 디스크에 저장, 자주 쓰는 일부 데이터만 캐시(RAM)에 저장한다.
  • In-Memory DB : 데이터 갱신 자체를 메모리에 저장, 필요 시 디스크에 백업한다.

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

1. 시스템 측면

디스크 기반 DBIn-Memory DB
저장장치디스크 중심메모리 중심
데이터 접근(index)디스크 I/O를 최소화 하기 위한 B-tree메모리에 대한 최적회된 접근 T-tree
DB위치디스크메모리(필요 시 디스크 반영)
DB크기디스크 크기가상 메모리 크기

2. 복구 및 안정화 측면

디스크 기반 DBIn-Memory DB
운영목표안정적/대용량빠른 응답/고속 처리
회복기법UNDO/REDO, Checkpoint, Chadow Paging보조 메모리, 디스크를 활용한 이중화

마무리

인메모리 데이터베이스는 속도가 중요한 상황에서는 탁월한 성능을 발휘하지만, 영속성용량 한계라는 약점을 가진다. 따라서 목적에 맞는 데이터 저장 방식을 선택하는 것이 중요하다.

참조

http://xn--studyhardd-9v67b.tistory.com/93
https://github.com/2021-pick-git/2021-pick-git.github.io/blob/main/_posts/2021-10-21-spring-cache-with-redis-performance.md

profile
화이팅

1개의 댓글

comment-user-thumbnail
2025년 10월 30일

영속성이라는 개념이 너무 어려워요

답글 달기