IMDG
IT 위키
- IMDG; In-Memory Data Grid; 인메모리 데이터 그리드
- 여러 서버의 메모리를 묶어 하나의 분산 데이터 저장소로 쓰는 미들웨어
데이터를 디스크가 아니라 RAM 에 두고, 노드를 늘려 용량과 처리량을 함께 키운다.
- 인메모리 — 디스크 I/O 가 없어 마이크로초 단위 응답
- 분산·수평 확장 — 노드를 추가하면 용량과 성능이 선형에 가깝게 는다
- 파티셔닝 — 키를 해시해 데이터를 노드에 나눠 담는다
- 복제(Replication) — 같은 데이터를 다른 노드에도 둬 노드가 죽어도 잃지 않는다
- 키-값 모델 — 분산 Map 인터페이스를 제공하는 것이 일반적이다
- 병렬 처리 — 데이터가 있는 노드로 연산을 보낸다(Data Affinity). 데이터를 끌어오지 않는다
- 노드들이 클러스터를 이루고 멤버십을 자동 관리한다
- 각 키는 기본 파티션(Primary)과 백업 파티션(Backup)에 저장된다
- 노드가 추가·제거되면 파티션을 자동 재분배(Rebalancing)한다
- 영속성이 필요하면 디스크나 RDBMS 를 백엔드 스토어로 붙인다(Write-Through / Write-Behind)
| 구분 | IMDG | IMDB(인메모리 DBMS) |
|---|---|---|
| 모델 | 객체·키-값 | 관계형 테이블, SQL |
| 확장 | 수평 확장이 전제 | 주로 수직 확장 |
| 접근 | API (Map, Cache) | SQL |
| 예 | Hazelcast, Apache Ignite, Oracle Coherence, Infinispan, GemFire | SAP HANA, Altibase, Redis(단일 관점) |
- 세션 클러스터링, 분산 캐시
- 실시간 거래 처리 (금융, 통신 과금)
- 대용량 트래픽의 데이터베이스 부하 분산
- 실시간 스트림 처리의 상태 저장소
