-
- 인메모모리 컴퓨팅 플랫폼으로 데이터베이스와 사용자 애플리케이션 사이에 위치시킬 수 있습니다.
- 아파치 이그나이트에는 몇 가지 특징이 나와있는데, 요점은 Persistence Mode 를 on/off 해서 off일 때는 Ram 에만 데이터를 저장하는 캐싱기능을 가진 in-memory storage로 사용할 수도 있고, on을 하면 디스크에도 데이터를 저장해 persistence layer 로도 사용할 수 있다는 것입니다.
- 캐시를 key-value API 로도 사용할 수 있고, SQL 쿼리를 작성해 캐시를 사용할 수도 있다. 이에 따라 (IMDB) in-memory database 혹은 (IMDG) in-memory data grid로써 동작한다고 합니다.
- OS 의 가상메모리와 비슷하게 동작하지만 OS 는 디스크를 swap 목적으로 사용하는데 반해, 이그나이트는 전체 데이터 셋을 디스크에 가진다는 차이가 있습니다.
- 기존의 디스크 저장소에서 RAM 으로 데이터를 로드하는데, 디스크 저장소와 RAM 사이에 동일한 Binary Object 형태로 데이터를 주고 받아 빠른 속도를 낼 수 있습니다.
- 여러 노드를 하나의 클러스터로 묶어서 사용할 수 있습니다. 보통 하나의 JVM 에 하나의 노드를 생성하고 여러 노드를 하나의 클러스터로 묶어 사용합니다.
- 클러스터에 노드를 추가함으로써 수평적 확장이 쉽습니다.
- 대용량 데이터를 높은 성능으로 빠르게 처리하는 시스템에 도입을 고려할 수 있습니다.
- Database 도 10~100GB 정도는 로컬 캐시이 가능하기 때문에 Ignite 가 Database 보다 항상 빠르다고 할 수는 없습니다.
Ignite 는 분산 데이터 캐싱에 강해 대용량 데이터에서 SQL server 가 로컬 캐시 기능으로 할 수 없는 복잡한 쿼리를 통해 데이터 추출이 필요한 경우에 Ignite 가 SQL 보다 빠른 속도를 낼 수 있습니다.
- 데이터의 캐시 정책 설정을 동적으로 변경하는데 제한이 있습니다. (재배포, 재기동 필요)
DB 데이터를 이그나이트에 넣어 사용자 요청을 분산하려고 만든 구조입니다.
DB로 새로 유입되는 정보를 이그나이트에도 업데이트 해주기 위해 RabbitMQ 를 추가하였습니다.
다만 DB 와 함께 사용할 때 몇가지 유의사항이 있었습니다.
이그나이트가 SQL 서버처럼 여러 DDL, DML 문을 사용할 수 있지만 모든 RDBMS 의 기능을 제공하는 것은 아닙니다.
예를 들어 테이블을 생성 시 Auto Increment 를 지원하지 않고, 컬럼을 동적으로 추가 시에 default 값을 지원하지 않습니다.
이는 각 다른 경로로 DB 와 이그나이트 데이터가 업데이트될 경우 시퀀스 번호 동기화에 문제가 생길 가능성이 크고, default 값이 없기 때문에 다른 예외처리를 적용해야합니다.
또 컬럼명 변경이나 데이터타입을 동적으로 변경할 수 없고, 기존에 로드된 데이터를 모두 삭제하고 다시 올려야합니다,
이그나이트 공식문서 나름 번역..
https://same-dog-7f9.notion.site/Ignite-bb6a6af975d248139aad2e4facedf1c9
반응형