인메모리 프로세싱

이 용어는 두 가지 다른 용도로 사용된다:

# 컴퓨터 과학에서 **인메모리 프로세싱**(in-memory processing)은 **컴퓨트 인 메모리**(compute-in-memory, CIM) 또는 **프로세싱 인메모리**(processing-in-memory, PIM)라고도 불리며, 데이터가 먼저 CPU 레지스터로 전송될 필요 없이 데이터 메모리에서 직접 데이터 연산이 가능한 컴퓨터 구조이다. 이는 프로세서와 주 메모리 사이의 데이터 이동에 따른 전력 사용량과 성능을 향상시킬 수 있다.
# 소프트웨어 공학에서 **인메모리 프로세싱**은 데이터베이스가 전적으로 랜덤 액세스 메모리(RAM) 또는 플래시 메모리에 저장되어 일반적인 접근, 특히 읽기 또는 쿼리 작업이 디스크 스토리지 접근을 필요로 하지 않는 소프트웨어 구조이다. 이는 "조인"과 같은 더 빠른 데이터 연산, 그리고 비즈니스에서 더 빠른 보고 및 의사 결정을 가능하게 할 수 있다.

매우 큰 데이터셋은 인-메모리 데이터 그리드와 같이 협력하는 시스템 간에 분할될 수 있다.

## 하드웨어 (PIM)
PIM은 다음을 통해 구현될 수 있다:

* 메모리 사용 처리 (PuM)
** 기존 메모리 모듈(예: DIMM 모듈)에 제한된 처리 기능(예: 부동 소수점 곱셈 장치, 복사 또는 0과 같은 4K 행 연산, 두 행에 대한 비트 연산) 추가 또는
** 메모리 컨트롤러에 처리 기능 추가로, 접근된 데이터가 CPU로 전달되거나 CPU의 캐시에 영향을 미칠 필요 없이 즉시 처리되도록 한다.

* 메모리 근접 처리 (PnM)
** 메모리 계층과 처리 계층을 포함하는 새로운 3D 실리콘 배열.

### 일상생활에서의 인-메모리 기술 적용
인메모리 프로세싱 기술은 현대 스마트폰과 태블릿에서 애플리케이션 성능을 향상시키는 데 자주 사용된다. 이는 더 빠른 앱 로딩 시간과 더 즐거운 사용자 경험을 가져올 수 있다.

* 인메모리 프로세싱은 플레이스테이션 및 엑스박스와 같은 게임 콘솔에서 게임 속도를 향상시키는 데 사용될 수 있다. 원활한 게임 경험을 제공하기 위해서는 빠른 데이터 접근이 중요하다.

* 스마트워치 및 피트니스 트래커와 같은 특정 웨어러블 장치는 센서 데이터를 신속하게 처리하고 사용자에게 실시간 피드백을 제공하기 위해 인메모리 프로세싱을 통합할 수 있다. 여러 일반적인 장치는 성능 및 반응성을 향상시키기 위해 인메모리 프로세싱을 사용한다.

* 인메모리 프로세싱은 스마트 TV에서 인터페이스 탐색 및 콘텐츠 전달을 향상시키는 데 사용된다. 디지털 카메라에서는 실시간 이미지 처리, 필터링 및 효과에 사용된다. 음성 인식 비서 및 기타 홈 자동화 시스템은 사용자 명령을 더 빠르게 이해하고 응답하는 데 도움을 받을 수 있다.

* 인메모리 프로세싱은 가전제품 및 고급 디지털 카메라의 임베디드 시스템에서도 효율적인 데이터 처리를 위해 사용된다. 인메모리 프로세싱 기술을 통해 특정 IoT 장치는 빠른 데이터 처리 및 응답 시간을 우선시한다.

## 소프트웨어
### 디스크 기반 데이터 접근

#### 데이터 구조
디스크 기반 기술에서는 데이터가 여러 테이블 및 다차원 구조의 형태로 컴퓨터의 하드 디스크에 로드되고, 이를 대상으로 쿼리가 실행된다. 디스크 기반 기술은 종종 관계형 데이터베이스 관리 시스템(RDBMS)이며, SQL(SQL)에 기반한 SQL 서버, MySQL, 오라클 등 다수가 있다. RDBMS는 트랜잭션 처리의 요구사항을 위해 설계되었다. 삽입 및 업데이트를 지원하면서 동시에 집계, 조인(BI 솔루션에서 일반적임)을 수행하는 데이터베이스를 사용하는 것은 일반적으로 매우 느리다. 또 다른 단점은 SQL이 효율적으로 데이터 행을 가져오도록 설계된 반면, BI 쿼리는 일반적으로 무거운 계산을 포함하는 부분적인 데이터 행을 가져오는 것을 포함한다는 것이다.

쿼리 성능을 향상시키기 위해 다차원 데이터베이스 또는 OLAP 큐브(다차원 온라인 분석 처리(MOLAP)라고도 함)를 구축할 수 있다. 큐브를 설계하는 것은 정교하고 긴 과정일 수 있으며, 동적으로 변하는 비즈니스 요구에 맞춰 큐브 구조를 변경하는 것은 번거로울 수 있다. 큐브는 특정 쿼리에 답변하기 위해 데이터로 미리 채워지며, 성능을 향상시키지만 모든 애드혹 쿼리에 답변하기에는 여전히 최적화되어 있지 않다.

정보 기술(IT) 직원은 데이터베이스 최적화, 인덱스 및 집계 구축, 큐브 및 스타 스키마 설계, 데이터 모델링, 쿼리 분석에 상당한 개발 시간을 할애할 수 있다.

#### 처리 속도
하드 디스크에서 데이터를 읽는 것은 RAM에서 동일한 데이터를 읽는 것보다 훨씬 느리다(수백 배 이상). 특히 대량의 데이터를 분석할 때 성능 저하가 심각하다. SQL은 매우 강력한 도구이지만, 디스크 기반 구현에서 임의의 복잡한 쿼리는 실행하는 데 상대적으로 오랜 시간이 걸리며 종종 트랜잭션 처리 성능을 저하시킨다. 허용 가능한 응답 시간 내에 결과를 얻기 위해 많은 데이터 웨어하우스는 요약을 미리 계산하고 특정 쿼리에만 응답하도록 설계되었다. 성능을 향상시키기 위해 최적화된 집계 알고리즘이 필요하다.

### 인-메모리 데이터 접근
인-메모리 데이터베이스와 데이터 그리드 모두에서 모든 정보는 처음에 하드 디스크 대신 메모리 랜덤 액세스 메모리 또는 플래시 메모리로 로드된다. 데이터 그리드에서는 ACID와 같은 고급 기능을 가진 관계형 데이터베이스보다 처리 속도가 세 배 이상 빠르며, 이러한 추가 기능은 성능을 저하시키는 대신 제공된다. 유사한 정보를 함께 저장하는 컬럼형 DBMS의 등장은 데이터를 더 효율적으로, 그리고 더 높은 압축률로 저장할 수 있게 한다. 이는 동일한 물리적 공간에 엄청난 양의 데이터를 저장할 수 있게 하여 쿼리 수행에 필요한 메모리 양을 줄이고 처리 속도를 높인다. 많은 사용자와 소프트웨어 공급업체는 플래시 메모리를 시스템에 통합하여 시스템이 더 큰 데이터 세트로 더 경제적으로 확장할 수 있도록 했다.

사용자는 시스템 메모리에 로드된 데이터를 쿼리하여 느린 데이터베이스 접근 및 성능 병목 현상을 피한다. 이는 쿼리 성능을 가속화하기 위해 매우 널리 사용되는 방법인 캐싱과는 다르다. 캐시는 매우 특정한 미리 정의된 조직화된 데이터의 부분집합이다. 인-메모리 도구를 사용하면 분석에 사용할 수 있는 데이터는 전체가 메모리에 있는 데이터 마트 또는 소규모 데이터 웨어하우스만큼 클 수 있다. 이는 여러 동시 사용자 또는 애플리케이션이 세부 수준에서 빠르게 접근할 수 있으며, 향상된 분석 및 애플리케이션의 확장 및 속도 향상 가능성을 제공한다. 이론적으로 데이터 접근 속도 개선은 디스크에 비해 10,000배에서 1,000,000배에 이른다. 또한 IT 직원의 성능 튜닝 필요성을 최소화하고 최종 사용자에게 더 빠른 서비스를 제공한다.

#### 인메모리 프로세싱 기술의 장점
컴퓨터 기술 및 비즈니스 요구의 특정 발전은 인-메모리 기술의 상대적인 장점을 증가시키는 경향이 있었다.

* 무어의 법칙에 따라 제곱 단위당 트랜지스터 수가 약 2년마다 두 배로 증가한다. 이는 부품의 가격, 성능, 패키징 및 기능 변화에 반영된다. 특히 랜덤 액세스 메모리 가격과 CPU 컴퓨팅 성능은 수십 년 동안 향상되었다. CPU 처리, 메모리 및 디스크 스토리지는 모두 이 법칙의 어떤 변형에 영향을 받는다. 또한 멀티 코어 아키텍처, 낸드 플래시 메모리, 병렬 서버, 증가된 메모리 처리 능력과 같은 하드웨어 혁신은 인-메모리 접근 방식의 기술적 및 경제적 실현 가능성에 기여했다.
* 차례로 컬럼 중심 데이터베이스, 압축 기술 및 집계 테이블 처리와 같은 소프트웨어 혁신은 효율적인 인-메모리 제품을 가능하게 한다.
* 32비트 시스템에서 접근 가능한 2GB 또는 4GB보다 훨씬 더 많은 RAM(최대 100GB 이상)에 접근할 수 있는 64비트 운영 체제의 출현. 테라바이트(1TB = 1,024GB)의 저장 및 분석 공간을 제공함으로써 64비트 운영 체제는 인메모리 프로세싱을 확장 가능하게 만든다. 플래시 메모리의 사용은 시스템이 더 경제적으로 수많은 테라바이트로 확장할 수 있도록 한다.
* 데이터 양의 증가는 전통적인 데이터 웨어하우스가 데이터를 적시에 정확하게 처리하기 어려워질 수 있음을 의미한다. 운영 데이터를 사용하여 디스크 기반 데이터 웨어하우스를 주기적으로 업데이트하는 추출, 변환, 적재(ETL) 프로세스는 지연 및 오래된 데이터를 초래할 수 있다. 인메모리 프로세싱은 더 나은 실시간 보고를 위해 테라바이트의 데이터에 더 빠르게 접근할 수 있게 한다.
* 인메모리 프로세싱은 디스크 기반 처리보다 저렴한 비용으로 사용할 수 있으며, 더 쉽게 배포하고 유지 관리할 수 있다. 가트너 조사에 따르면, 전통적인 BI 도구를 배포하는 데 최대 17개월이 걸릴 수 있다.
* 접근 대기 시간 단축, 메모리 대역폭 증가 및 하드웨어 병렬성으로 인한 전력 소비 감소 및 처리량 증가.

#### 비즈니스 적용
다양한 인-메모리 제품은 기존 데이터 소스에 연결하고 시각적으로 풍부한 대화형 대시보스에 접근할 수 있는 기능을 제공한다. 이를 통해 비즈니스 분석가와 최종 사용자는 많은 훈련이나 전문 지식 없이도 사용자 지정 보고서와 쿼리를 생성할 수 있다. 쉬운 탐색과 쿼리를 즉시 수정할 수 있는 기능은 많은 사용자에게 이점을 제공한다. 이러한 대시보드가 최신 데이터로 채워질 수 있으므로 사용자는 실시간 데이터에 접근하고 몇 분 안에 보고서를 생성할 수 있다. 인메모리 프로세싱은 콜센터 및 창고 관리에서 특히 유용할 수 있다.

인메모리 프로세싱에서는 쿼리가 실행될 때마다 데이터베이스에 접근하는 대신 소스 데이터베이스를 한 번만 쿼리하므로 반복적인 처리를 제거하고 데이터베이스 서버의 부담을 줄일 수 있다. 야간에 인-메모리 데이터베이스를 채우도록 예약함으로써 피크 시간 동안 데이터베이스 서버를 운영 목적으로 사용할 수 있다.

#### 인-메모리 기술 도입
많은 수의 사용자가 있는 경우, 인-메모리 구성에 많은 양의 RAM이 필요하며, 이는 결국 하드웨어 비용에 영향을 미친다. 쿼리 응답 속도가 최우선이며, 데이터 볼륨의 상당한 증가와 보고 시설 수요 증가가 있는 상황에서 투자가 더 적합할 가능성이 높다. 정보가 빠르게 변하지 않는 경우에는 여전히 비용 효율적이지 않을 수 있다. 보안 또한 또 다른 고려 사항이다. 인-메모리 도구는 최종 사용자에게 엄청난 양의 데이터를 노출시키기 때문이다. 제조사는 권한 있는 사용자만 데이터에 접근할 수 있도록 보장해야 한다고 조언한다.

## 같이 보기
* 연산 RAM
* 시스템 온 칩
* 네트워크 온 칩

## 각주

분류:데이터베이스 관리 시스템
분류:컴퓨터 메모리