💡 핵심 인사이트
인-메모리 데이터베이스(IMDB)는 디스크가 아닌 컴퓨터의 메인 메모리(RAM)에 모든 데이터를 저장하고 처리하는 DB입니다.
전통적인 디스크 기반 DB의 치명적인 병목 현상인 '디스크 I/O'를 완전히 제거하여 **초당 수십만 건 이상의 초고속 응답(Microsecond 단위)**을 가능하게 합니다.
Ⅰ. 인-메모리 DB(IMDB)의 등장 배경
전통적인 RDBMS(Oracle, MySQL 등)는 영구 보존을 위해 데이터를 SSD/HDD(디스크)에 저장하고, 처리할 때만 잠시 메모리(Buffer Cache)로 불러옵니다. 하지만 디스크는 메모리보다 접근 속도가 수만 배 이상 느리기 때문에, 초단타 주식 거래, 실시간 추천 시스템, 대규모 게임 서버 등 1밀리초(ms)의 지연도 허용되지 않는 현대의 애플리케이션에서는 이 **디스크 I/O가 치명적인 병목(Bottleneck)**이 되었습니다.
하드웨어 기술의 발전으로 64비트 OS가 대중화되고 RAM 가격이 폭락하면서, "아예 모든 데이터를 처음부터 끝까지 메모리에 올려놓고 쓰면 어떨까?"라는 발상에서 상용화된 것이 IMDB입니다.
Ⅱ. IMDB의 특징과 아키텍처
1. 극단적인 성능 (Zero Disk I/O)
데이터의 조회(Read)는 물론 삽입/수정(Write) 연산 시에도 디스크를 거치지 않고 CPU가 메모리에 직접 접근하여 처리하므로 응답 속도가 혁신적으로 빠릅니다.
2. 휘발성 극복 (Durability 보장 전략)
메모리의 가장 큰 약점은 "전원이 꺼지면 데이터가 모두 날아간다(휘발성)"는 점입니다. IMDB는 이를 극복하기 위해 영속성(Durability) 메커니즘을 백그라운드에서 병행합니다.
- 스냅샷 (Snapshot): 주기적으로 메모리 상태를 통째로 디스크에 덤프(저장)합니다. (예: Redis의 RDB 파일)
- 트랜잭션 로그 (AOF, Append Only File): 데이터가 변경될 때마다 그 변경 내역(Log)만 순차적으로 디스크에 기록해 둡니다. 장애 발생 시 이 로그를 재실행하여 메모리를 복구합니다.
3. T트리 (T-Tree) 인덱스 구조
디스크 DB는 디스크 블록 단위 접근에 최적화된 B-Tree를 인덱스로 쓰지만, IMDB는 메모리 접근에 최적화되어 포인터(메모리 주소)를 활용해 노드 크기를 최소화한 T-Tree나 해시(Hash) 인덱스를 주로 사용합니다.
Ⅲ. 대표적인 IMDB 솔루션
| 솔루션 | 특징 및 주요 용도 | 데이터 모델 |
|---|---|---|
| Redis (레디스) | 세계에서 가장 널리 쓰이는 오픈소스 IMDB. 문자열, 리스트, 셋 등 다양한 자료구조 지원. 웹 캐싱, 세션 관리, 실시간 랭킹에 필수적. | Key-Value (NoSQL) |
| Memcached | 단순한 형태의 분산 메모리 캐싱 시스템. 구조가 단순해 초고속 응답이 필요할 때 사용 (영속성 지원 안 함). | Key-Value |
| SAP HANA | 기업용 ERP(전사적 자원 관리) 시장을 평정한 컬럼 기반의 관계형 IMDB. OLTP(트랜잭션)와 OLAP(분석)를 메모리 위에서 동시에 실시간 처리함. | Relational (컬럼 지향) |
| Altibase | 국내 기업이 개발한 고성능 하이브리드 DBMS. (메모리 테이블과 디스크 테이블을 동시에 혼용 가능) | Relational |
📢 섹션 요약 비유: 전통적인 DB가 필요한 서류를 찾으러 매번 먼 지하 창고(디스크)에 다녀오는 직원이라면, 인-메모리 DB는 모든 서류를 아예 자신의 책상(메모리) 위에 다 펼쳐놓고 즉각적으로 처리하는 천재 직원입니다. 단, 퇴근(정전) 시 서류가 날아가는 것을 막기 위해 서류의 사진(스냅샷)을 찍어둡니다.