1. Durable Memory

Ram을 단순히 캐싱 계층으로 사용하는 것이 아니라, 모든 기능을 하는 저장 계층으로써 사용합니다.

사용자가 필요에 따라 persistence 모드를 on/off 할 수 있고, 이에 따라 persistence layer 혹은 in-memory storage 가 될 수 있습니다. 만약 persistence mode 가 off 라면 ignite 는 SQL, key-value api 중 어떤 것을 사용하냐에 따라 (IMDB) in-memory database 혹은 (IMDG) in-memory data grid 로써 동작합니다.

persistence mode 가 on 이라면 ignite 는 수평적으로 확장가능한 데이터베이스로,

완전한 데이터 일관성과 cluster failures 에 회복성을 가집니다.

  1. Apache Ignite 의 메모리 중심적 플랫폼은 durable memory architecture 에 기반하고 있습니다.

persistence 가 enable 되어 있을 때 메모리와 디스크 양쪽에 데이터와 인덱스를 저장하고 처리합니다.

클러스터의 사용 가능한 모든 리소스를 사용해 디스크의 지속성(durability)으로 메모리 내 성능을 달성하게 합니다.

Ignite 의 Durable Memory 는 OS 의 가상 메모리와 비슷하게 동작합니다. 하지만 중요한 차이는 persistence 가 enable 되었을 때 Durable Memory 는 disk 에 전체 데이터 셋을 유지하는 반면에, 전통적인 가상메모리는 Ram 이 부족할 때 swap 목적으로 디스크를 사용합니다.

이 아키텍처가 메모리 중심적이기 때문에, 모든 처리가 일어날 때 Ram 은 첫번째 메모리 계층으로 취급합니다. 이런 성격은 아래와 같은 특징과 이점을 갖습니다.

  1. off-heap based 모든 데이터와 인덱스는 java heap 바깥에 저장됨으로, 클러스터에 위치한 petabytes 데이터를 처리하기 쉽다.

  2. removes noticeable garbage collection pauses. 1과 같은 이유로 major gc 로 인한 stop-the-world 정지 현상의 원인은 애플리케이션 코드로 한정된다.

  3. predicatable memory usage. durable memory 는 ram 과 disk 공간을 가능한만큼 사용하는 것이 default 이다. 하지만 애플리케이션에 맞게 메모리 이용을 설정할 수 있다.

  4. automatic memory defragmentation ignite 는 메모리를 가능한 한 효율적으로 사용하고 메모리 단편화를 피하기 위해 백그라운드에서 단편화 제거를 수행한다.

  5. improved performance and memory utilization 모든 데이터와 인덱스들은 메모리와 디스크에 유사한 표현 형식으로 페이징되어, 직렬화/역직렬화의 필요가 없다.

  6. Ignite Native Persistence

  7. data resiliency ignite persistence 계층이 full data set 을 저장할 때 , 클러스터의 충돌, 재시작에도 데이터의 소실없이 유지될 수 있습니다.

  8. cache only hot data in memory 디스크에는 superset , 메모리에는 subset 을 저장합니다. persistence 가 enable 되어 있다면 모든 데이터가 ram 에 들어갈 필요가 없다. durable memory 는 hot data 가 ram 에 계속 유지될 수 있도록 공간이 부족할 때 자동으로 cold data 를 메모리에서 제거합니다.

  9. executable sql over the whole data set 대부분 인메모리 시스템에서는 메모리가 미리 로드되어있을 때 쿼리를 할 수 있기 때문에 데이터 사이즈가 메모리 사이즈에 제한됩니다. ignite sql 은 항상 분산된 데이터베이스처럼 사용할 수 있습니다.