|
| 1 | +--- |
| 2 | +title: "In Memory Database vs In Memory Data Grid" |
| 3 | +date: "2020-05-23" |
| 4 | +tags: ["Etc"] |
| 5 | +summary: "Comparison of In Memory Database and In Memory Data Grid" |
| 6 | +description: "In Memory Database와 In Memory Data Grid에 대해서 알아보자." |
| 7 | +--- |
| 8 | + |
| 9 | +:::info |
| 10 | +In Memory Computing 기술에 대해서 알아보고, 흔히 혼용해서 사용하는 In Memory Database 와 In Memory Data Grid 에 대해서 정리해보자. |
| 11 | +::: |
| 12 | + |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +### In Memory Computing |
| 17 | + |
| 18 | + |
| 19 | +`In Memory Computing` 기술은 2010년대 초반에 가장 큰 화두가 되었다. 사실 `In Memory Computing`은 2000년 초반에 도입 되긴 하였지만, <br/> |
| 20 | +비싼 메모리 가격과 전체 데이터를 메모리에 올려서 처리할 정도의 어플리케이션이 없었던 문제로 인해 큰 관심을 받지 못하였다. |
| 21 | + |
| 22 | +<div style={{ textAlign: 'center' }}> |
| 23 | + <img src="/img/post/study/in-memory/tech.png" alt="tech" style={{ display: 'inline-block' }} /> |
| 24 | +</div> |
| 25 | + |
| 26 | + |
| 27 | +하지만, Hard Disk의 입출력 속도가 상대적으로 느리게 발전하게 되면서 전체 컴퓨터 성능 향상 속도의 지연 요인이 되었고, 전체 컴퓨팅 속도 지역을 막기 위한 기술이 다시 주목 받게 되었다. |
| 28 | +또한, 메모리의 가격 떨어지면서 대부분의 서버에 대용량 메모리가 지원되었다. <br/> |
| 29 | +마지막으로 64bit OS 환경이 일반화가 되면서 Memory size 제약 사항이 소멸하여 데이터나 어플리케이션의 크기에 상관없이 메모리에서 처리가 가능해지면서 다시 관심을 받게 되었다. 더욱이, 2010년대 초반에 **Big Data**가 큰 화제가 되면서 방대한 양의 데이터를 빠르게 처리할 수 있는 기술들에 대해서 각광을 받았으며, 그 중 하나가 `In Memory Computing` 기술이다. |
| 30 | + |
| 31 | ++ Hard Disk 입출력 속도가 느리게 발전 |
| 32 | ++ Memory 가격의 지속적인 하락 |
| 33 | ++ 64bit 컴퓨터의 보편화 |
| 34 | ++ 익스트림 트랜잭션 처리 요구 증가 |
| 35 | + |
| 36 | + |
| 37 | +:::note |
| 38 | +64bit OS에서는 2의 64승개의 주소를 표현할 수 있고, 이론상 16 Exa byte의 데이터를 메모리에 적재할 수 있다. |
| 39 | +::: |
| 40 | + |
| 41 | + |
| 42 | +`In Memory Computing`은 데이터를 하드디스크에 저장하고 관리하는 디스크 기반 컴퓨팅과는 다르게, **전체 데이터를 메모리에 적재하여 사용하는 것**이다. |
| 43 | +컴퓨팅 시스템의 공식 기록 시스템으로 하드디스크를 사용하는 것이 아니라, 메모리를 사용하는 것이고, |
| 44 | +데이터를 메모리에 보관, 처리하여 하드디스크에 데이터를 안전하게 보관하기 위해 사용하는 구조다. |
| 45 | + |
| 46 | +:::note |
| 47 | +<b>In Memory Computing</b> 은 방대한 양의 데이터를 메모리에서 관리, 처리하여 데이터 처리 시간을 단축하고 데이터를 안전하게 보관한다. |
| 48 | +::: |
| 49 | + |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +### In Memory Database |
| 54 | + |
| 55 | +**In Memory Database** 는 메모리에 데이터를 저장하는 데이터베이스를 의미한다. 주 메모리를 이용해서 **Main Memory DBMS(MMDB)**라고도 한다. |
| 56 | +**휘발성** 이라는 단점이 있어서, 임시 데이터 저장 용도로 주로 사용된다. |
| 57 | +물론, DMBS의 속성 중 하나인 **Durability** 를 보장하기 위하여 메모리에 INSERT/UPDATE/DELETE 된 값들을 |
| 58 | +모두 디스크에 로그로 기록하여 메모리에 DBMS 구조를 재구축하기도 한다. |
| 59 | + |
| 60 | +<div style={{ textAlign: 'center' }}> |
| 61 | + <img src="/img/post/study/in-memory/imdb.jpg" alt="imdb" style={{ display: 'inline-block' }} /> |
| 62 | +</div> |
| 63 | + |
| 64 | +출처 : developedia |
| 65 | + |
| 66 | + |
| 67 | +:::note |
| 68 | +<b>In Memory Database</b>를 이용하여 <b>OLTP(Online Transaction Processing)</b> 및 <b>OLAP(Online Analytical Processing)</b> 을 향상 시킬 수 있다. |
| 69 | +::: |
| 70 | + |
| 71 | + |
| 72 | ++ 주요 제품 |
| 73 | + - Amazon ElastiCache |
| 74 | + - Redis |
| 75 | + - Altibase |
| 76 | + - Kairos |
| 77 | + - SAP HANA |
| 78 | + - SunDB |
| 79 | + - TimesTen |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +### In Memory Data Grid |
| 84 | + |
| 85 | +**In Memory Data Grid** 는 각각의 메모리를 공유하여 클러스터에서 동작하는 모든 애플리케이션들과 함께 사용할 수 있도록 하는 컴퓨터 클러스터를 의미한다. |
| 86 | +영구적으로 데이터 관리가 어려우며, 용량이 상대적으로 제한적이라는 **In Memory Database** 의 단점은 **In Memory Data Grid** 의 등장으로 극복되었고, |
| 87 | +현재는 대용량 고성능 데이터 저장소로 발전하였다. |
| 88 | + |
| 89 | +<div style={{ textAlign: 'center' }}> |
| 90 | + <img src="/img/post/study/in-memory/imdg.jpg" alt="imdg" style={{ display: 'inline-block' }} /> |
| 91 | +</div> |
| 92 | + |
| 93 | +출처 : hazelcast |
| 94 | + |
| 95 | ++ 특징 |
| 96 | + - 여러 서버에 분산하여 데이터를 저장 |
| 97 | + - 각 서버는 active 모드 |
| 98 | + - key-value |
| 99 | + - 서버 확장성 용이 |
| 100 | + - Lock, Transaction, Sharding |
| 101 | + - DBMS의 부하를 분산하여 병목 구간 해결 가능 |
| 102 | + |
| 103 | + |
| 104 | ++ 주요 제품 |
| 105 | + - Hazelcast |
| 106 | + - Terracotta Enterprise Suite |
| 107 | + - VMware Gemfire |
| 108 | + - Oracle Coherence |
| 109 | + - Gigaspaces XAP Elastic Caching Edition |
| 110 | + - IBM eXtreme Scale |
| 111 | + - JBoss Infinispan |
| 112 | + - GridGain Data Grid |
| 113 | + |
| 114 | + |
| 115 | +--- |
| 116 | + |
| 117 | +### In Memory Database vs In Memory Data Grid |
| 118 | + |
| 119 | +IMDG와 IMDB는 기술적으로 상당히 차이가 있다. |
| 120 | ++ In Memory Database는 컬럼 스토리지에 최적화 되어 있다. |
| 121 | ++ In Memory Data Grid는 key-value 저장소를 JVM(Java Virtual Machine)에서 임베디드 오브젝트로 사용한다. |
| 122 | + |
| 123 | +| 구분 | In Memory Data Grid | In Memory Database | |
| 124 | +|--|--|--| |
| 125 | +| Existing Application | Changed | Unchanged | |
| 126 | +| Existing RDBMS | Unchanged | Changed or Replaced | |
| 127 | +| Speed | Yes | Yes | |
| 128 | +| Scalability | Yes | No | |
0 commit comments