MMDB
IT 위키
더 많은 작업
- Main Memory Database; 주기억장치 데이터베이스; 메모리 데이터베이스; 메인 메모리 데이터베이스
- 데이터베이스상의 데이터를 메모리에 상주시켜 관리하는 DBMS
- 모든 연산을 주기억장치에서 수행하므로 Disk I/O가 발생하지 않음 → 속도 대폭 개선
- T 트리 이용
- 메모리 가격 하락
- 64bit 운영체제
- 실시간 처리 요구 증가(통신 과금·증권 거래·온라인 게임 등 짧은 응답 시간이 필요한 업무)
| 구분 | 디스크 기반 DB | 메모리 기반 DB |
|---|---|---|
| 데이터 저장 | 하드디스크 | 주기억장치 |
| 운영 목표 | 트랜잭션의 안정적 운영 | 빠른 트랜잭션 처리 |
| 인덱스 종류 | B 트리 인덱싱 | T 트리 인덱싱 |
| 버퍼 관리 | 디스크 블록을 메모리 버퍼에 올렸다 내린다 | 버퍼 관리자가 필요 없다(데이터가 이미 메모리에 있다) |
| 회복기법 | 로그를 이용한 Undo/Redo | 로그 + 주기적 체크포인트(디스크 이미지)로 재기동 시 메모리에 다시 적재. 배터리 백업 메모리·비휘발성 메모리를 쓰기도 한다 |
- 장애 시 휘발성 데이터가 모두 소실되므로 회복이 중요
- 기존 디스크 기반 DB보다 수십~수백 배 빠른 응답을 내세운다(업무와 데이터 형태에 따라 차이가 크다)
- 단점: 메모리 용량이 곧 DB 크기의 한계이고, 같은 용량에서 디스크보다 비싸다
Hybrid MMDBMS
하이브리드 MMDBMS 는 메모리 테이블과 디스크 테이블을 한 DBMS 안에서 함께 관리하는 DBMS 이다. 모든 데이터를 메모리에 올리는 순수 MMDB 의 용량·비용 한계와, 디스크 DB 의 속도 한계를 함께 풀기 위해 나왔다.
- 저장 위치를 테이블 단위로 선택: 자주 접근하고 빠른 응답이 필요한 데이터(Hot)는 메모리 테이블에, 이력·대용량 데이터(Cold)는 디스크 테이블에 둔다
- 단일 SQL 인터페이스: 응용 프로그램은 테이블이 어디에 있는지 몰라도 같은 SQL 로 조회하고, 메모리 테이블과 디스크 테이블을 조인할 수 있다
- 통합 트랜잭션: 두 종류의 테이블을 하나의 트랜잭션으로 묶어 ACID 를 보장한다
- 통합 회복: 하나의 로그와 체크포인트 체계로 두 저장소를 함께 복구한다
- 저장소별 최적화: 메모리 테이블은 T 트리·해시 인덱스, 디스크 테이블은 B 트리 인덱스와 버퍼 관리를 쓴다
- 데이터 이동: 시간이 지나 덜 쓰이는 데이터를 디스크 테이블로 옮겨 메모리를 확보한다
| 구성 | 역할 |
|---|---|
| SQL 처리기 | 질의를 분석하고, 메모리·디스크 저장소를 모두 고려해 실행 계획을 세운다 |
| 메모리 저장 관리자 | 메모리 테이블의 레코드·인덱스를 관리한다 |
| 디스크 저장 관리자 | 디스크 테이블의 페이지와 버퍼를 관리한다 |
| 트랜잭션·동시성 관리자 | 두 저장소에 걸친 트랜잭션의 잠금·격리를 처리한다 |
| 로그·회복 관리자 | 공통 로그와 체크포인트로 장애 후 복구한다 |
| 구분 | 디스크 DB | 순수 MMDB | 하이브리드 MMDBMS |
|---|---|---|---|
| 저장 위치 | 디스크 | 메모리 | 테이블별로 메모리 또는 디스크 |
| 성능 | 보통 | 매우 빠름 | 메모리 테이블은 빠르고, 디스크 테이블은 보통 |
| 용량 한계 | 디스크 크기 | 메모리 크기 | 디스크 크기까지 |
| 비용 | 낮음 | 높음 | 중간(뜨거운 데이터만 메모리) |
| 적합 업무 | 대용량 일반 업무 | 소용량 초고속 실시간 업무 | 실시간 처리와 대용량 이력을 함께 다루는 업무 |
- 대표 제품: 메모리·디스크 테이블을 함께 지원하는 국산 DBMS(알티베이스), 디스크 DB 에 메모리 최적화 테이블을 더한 SQL Server 의 In-Memory OLTP, 디스크 DB 앞에 메모리 DB 를 캐시로 붙이는 Oracle TimesTen 캐시 구성 등
- 활용: 통신사 과금, 증권 주문 처리, 결제 승인처럼 현재 데이터는 실시간, 과거 이력은 대량인 업무