[Bigdata] - 빅데이터 기초 08 : 빅데이터 저장과 분석 - 인메모리


인메모리 저장 장치

고성능의 고급 데이터 저장을 위한 옵션을 제공하는 인메모리 저장 장치에 대해 알아보자.

빠른 데이터 접근을 위해 RAM을 사용한다. 디스크 I/O의 지연 시간과 하드 드라이브와의 데이터 전송 시간이 줄어들게 된다. 한편, 인메모리 저장 장치를 호스팅하는 클러스터를 수평 확장하면 인메모리 저장 장치의 용량을 크게 늘릴 수 있다.

인메모리 저장 장치에서 데이터를 읽는 것이 온디스크 저장 장치보다 약 80배 정도 빠르다.

특징

  • 클러스터를 활용한 빅데이터 인메모리 저장 장치는 높은 가용성과 이중화를 제공한다.
  • 메모리 사용이 높기 때문에 비용이 크다.
  • 수평 확장을 위해서 메모리뿐만 아니라 노드당 메모리 초과시 노드를 추가해야 한다. 따라서 비용이 증가한다.
  • 내구성 있는 데이터 저장을 지원하지 않는다.

다음과 같은 경우 사용에 적합하다.

  • 데이터가 빠른 속도로 도착하고, 실시간 분석 혹은 이벤트 스트림 처리가 필요한 경우
  • 지속적인, 혹은 상시적인 분석이 필요한 경우
  • 대화형 쿼리 처리 및 실시간 데이터 시각화가 수행되어야 하는 경우
  • 동일한 데이터 집합을 활용한 데이터 처리 작업이 여러 개인 경우
  • 동일한 데이터 세트를 디스크로부터 다시 불러들이지 않고 데이터 탐색 및 분석을 수행하려는 경우
  • 데이터 집합에 대한 반복 접근이 포함되는 경우
  • ACID 트랜잭션 지원이 필요한 경우

다음과 같은 경우 사용이 부적합하다.

  • 일괄 처리로 구성된 데이터 처리의 경우
  • 방대한 양의 데이터를 메모리에 오래 보관해야 하는 경우
  • 대용량 데이터 접근 , 일괄 처리가 요구되는 분석 수행의 경우
  • 데이터가 매우 크고 사용 가능한 메모리에 저장되지 않는 경우
  • 인메모리 저장 장치를 통합하는 등의 빅데이터 분석을 수행하는 경우
  • 노드 교체나 RAM 추가 등에 투입될 기업의 예산이 제한되는 경우

인메모리 저장 장치는 다음과 같다.


인메모리 데이터 그리드 (IMDG)

특징

  • 인메모리 데이터 그리드는 여러 노드의 정보를 키-값 쌍 형태의 데이터로 메모리에 저장하는데, 이때 키와 값은 직렬화된 객체 또는 프로그램 데이터가 될 수 있다.
  • 반정형/비정형 데이터 저장을 통해 스키마 없이도 데이터 저장을 지원한다.
  • 일반적인 데이터 접근은 API를 통해 제공한다.
  • 노드의 직속적인 동기화를 통해 높은 가용성, 결함 포용성일관성을 제공한다.
  • NoSQL에 비하면 비교적 즉각적인 일관성을 지원한다.
  • IMDB와 비교하면 비관계형 데이터를 객체로 저장하여 빠른 데이터 접근이 가능하다.
  • 데이터 분할 및 복제를 통해 수평적 확장, 적어도 하나의 추가 노드에 데이터 복제하여 안정성 확보

이미지

발행 구독 메시징 (Publish-subscribe messaging)

복잡 이벤트 처리(Complex Event Processing, CEP)를 지원하므로 실시간 분석에 많이 사용된다. 이는 연속 쿼리(continuous querying)라는 기능을 통해 이루어지며, 이때 해당 이벤트 필터가 IMDG에 등록된다. 그 후 IMDG는 해당 필터를 지속적으로 평가하고, 삽입/업데이트/삭제 작업의 결과가 충족될 때마다 클라이언트에 알린다. 비동기적으로 전송된다.

실시간 처리 엔진(realtime processing)

빠른 속도로 생성되는 데이터를 받아서 처리한 후 온디스크에 저장하거나, 온디스크의 데이터가 IMDG로 복사되는 과정을 활용한다. 따라서 데이터 처리 속도가 훨씬 빨라지고, 동일한 데이터에 대해 여러 종류의 작업을 실행하거나 반복할 경우 데이터 재사용이 가능해진다. 따라서 동일한 작업을 여러 번 실행해야 하는 경우에 유용하다.

메모리 기반 접근 방식으로 분산 캐시와 유사하다.

read-through 접근법

요청된 키 값이 IMDG에서 발견되지 않으면 (miss) 백엔드 디스크 저장 장치에서 동기적으로 불러들인다. 이렇게 불러들인 키-값 쌍이 IMDG에 삽입되고, 요청 값이 리턴된다. 이후 동일한 키에 대한 모든 요청은 이미 저장된 IMDG의 값으로 제공한다. 매우 단순한 접근법처럼 보이지만, 동기적 성질 때문에 읽기 대기 시간의 초과를 초래할 수 있다.

Cache의 개념과 비슷

write-through 접근법

쓰기 기능(삽입/업데이트/삭제)은 트랜잭션 방식을 통해 백엔드 저장 장치에 동기적으로 기록된다. 백엔드 저장 장치에 대한 쓰기가 실패하면 IMDG의 업데이트가 롤백된다. (데이터 일관성) 백엔드 저장 장치에 대한 피드백을 수신해야만 쓰기 작업이 완료된 것으로 간주하기 때문에 쓰기 대기 시간이 발생한다.

write-behind 접근법

모든 쓰기는 데이터베이스에 일괄 처리(batch processing)를 통해 비동기적으로 기록된다. 이러한 비동기적 성질은 일반적으로 쓰기 성능, 읽기 성능, 그리고 확장성/가용성을 향상시킨다. 그러나 백엔드 저장 장치가 지정된 간격으로 업데이트될 때까지 일정한 불일치가 발생한다.

refresh-ahead 접근법

사전 대응 방식으로, IMDG가 정한 만료 시간 전에 값을 불러들일 경우 그 값이 IMDG 상에서 자동적, 비동기적으로 새로 고쳐지는 방식을 뜻한다. 만료 시간 이후에 값을 불러들이는 경우 read-through 접근법과 마찬가지로 동작한다.

데이터는 IMDG에 있는 값을 클라이언트에게 전송한 뒤 비동기적으로 백엔드 저장 장치의 데이터를 가져와 업데이트한다.

특징이 비동기적이고 미래 지향적이므로 읽기 성능을 향상시키는 데 도움이 되며, 동일한 값에 자주 접근하거나 많은 클라이언트가 한꺼번에 접속을 시도할 때 특히 유용하다.


인메모리 데이터베이스 (IMDB)


  • 출처 [빅데이터 기초 개념,동인,기법]