인 메모리 데이터베이스는 데이터 저장에 내부 메모리를 주로 사용하는 목적별 데이터베이스입니다. 표준 디스크 드라이브(SSD)에 액세스할 필요가 없으므로 응답 시간을 최소화할 수 있습니다. 인 메모리 데이터베이스는 게임 순위표, 세션 스토어, 실시간 데이터 분석과 같이 마이크로초의 응답 시간이 요구되거나 트래픽이 큰 폭으로 급증하는 애플리케이션에 적합합니다. 주 메모리 데이터베이스(MMDB), 인 메모리 데이터베이스 시스템(IMDS), 실시간 데이터베이스 시스템(RTDB)이라는 용어도 인 메모리 데이터베이스를 가리킵니다.

인 메모리 데이터베이스의 장점은 무엇인가요?

인 메모리 데이터베이스는 몇 가지 장점을 제공하며, 이에 대해서는 아래에서 자세히 살펴보겠습니다.

짧은 지연 시간으로 실시간 응답 제공

지연 시간은 데이터 액세스 요청과 애플리케이션 응답 사이에 발생하는 지연입니다. 인 메모리 데이터베이스는 규모에 관계없이 예측 가능한 짧은 지연 시간을 제공합니다. 마이크로초의 읽기 지연 시간, 10밀리초 미만의 쓰기 지연 시간, 그리고 높은 처리량을 제공합니다.

따라서 기업은 인 메모리 스토리지를 통해 실시간으로 데이터에 입각한 의사 결정을 내릴 수 있습니다. 너무 늦기 전에 데이터를 처리하고 변화에 대응하는 애플리케이션을 설계할 수 있습니다. 예를 들어 자율 주행 차량의 센서 데이터를 인 메모리 컴퓨팅으로 처리하면 순식간에 반응하여 짧은 응답 시간으로 긴급 제동할 수 있습니다.

높은 처리량

인 메모리 데이터베이스는 처리량이 높은 것으로 알려져 있습니다. 처리량은 특정 기간 동안의 읽기(읽기 처리량) 또는 쓰기(쓰기 처리량) 작업 수를 나타냅니다. 분당 바이트 수 또는 초당 트랜잭션 수를 예로 들 수 있습니다.

높은 확장성

가변적인 애플리케이션 수요를 충족하도록 인 메모리 데이터베이스를 확장할 수 있습니다. 성능에 악영향을 미치지 않으면서 쓰기 크기와 읽기 크기를 모두 조정할 수 있습니다. 데이터베이스는 크기 조정 중에도 온라인 상태를 유지하며 읽기 및 쓰기 작업을 지원합니다.

인 메모리 데이터베이스의 사용 사례는 어떤 것들이 있나요?

인 메모리 데이터베이스는 은행, 통신, 게임 및 모바일 광고 산업에 적합합니다. 아래에는 인 메모리 데이터베이스 사용 사례의 몇 가지 예가 나와 있습니다.

캐싱

캐시는 일반적으로 일시적인 데이터의 일부를 저장하는 고속 데이터 스토리지 계층입니다. 캐시의 주요 목적은 더 느린 기본 스토리지 계층에 액세스해야 하는 필요를 줄임으로써 데이터 검색 성능을 높이는 것입니다. 즉, 데이터의 기본 스토리지 위치에 액세스할 때보다 더 빠르게 해당 데이터에 대한 향후 요청을 처리할 수 있습니다.

캐싱을 사용하면 이전에 검색하거나 계산한 데이터를 효율적으로 재사용할 수 있습니다. 인 메모리 데이터 스토리지는 캐싱된 데이터에 보다 빠르게 액세스하는 데 적합합니다. 캐싱은 내구성을 대가로 응답 시간을 단축합니다. 메모리에서 데이터를 검색하기 때문에 응답 시간이 더 빠르지만, 캐싱은 메모리의 데이터 손실을 방지하지 못합니다. 캐싱이 디스크 기반의 내구성 있는 데이터베이스와 함께 사용되는 경우가 많은 이유가 여기에 있습니다.

실시간 입찰

실시간 입찰은 온라인 광고 노출을 사고 파는 것을 말합니다. 일반적으로 입찰은 사용자가 웹 페이지를 로드하는 동안 100~120밀리초, 때로는 50밀리초 이내에 이루어져야 합니다. 이 시간 동안 실시간 입찰 애플리케이션은 모든 구매자에게 광고 스팟에 대한 입찰을 요청하고, 여러 기준에 따라 낙찰가를 선택하고, 제안을 표시하고, 광고 표시 후 정보를 수집합니다. 인 메모리 데이터베이스는 밀리초 미만의 지연 시간으로 실시간 데이터를 수집, 처리 및 분석하는 데 적합합니다.

게임 순위표

상대적 게임 순위표는 비슷한 랭크의 다른 플레이어와 비교한 게이머의 순위를 보여줍니다. 이러한 순위표는 플레이어들 사이에서 몰입도를 높이고 하위 게이머가 상위 플레이어에 비해 동기가 저하되는 것을 방지하는 데 도움이 됩니다. 수백만 명의 플레이어가 참여하는 게임에서 인 메모리 데이터베이스는 정렬 결과를 신속하게 제공하고 순위표를 실시간으로 업데이트할 수 있습니다.

인 메모리 캐시는 어떻게 작동하나요?

인 메모리 캐시는 랜덤 액세스 메모리(RAM)를 사용하여 데이터를 저장합니다. 이 기술은 데이터 테이블을 외장 드라이브가 아니라 RAM에 직접 저장합니다. 특수한 데이터 구조를 사용하면 데이터 레코드를 인덱싱할 수 있습니다. 인덱스는 특정 행과 열에 대한 직접적인 포인터 역할을 합니다. 하지만 실제 물리적 데이터는 압축된 비관계형 형식입니다. 액세스 요청을 하면 데이터베이스는 인덱스를 사용하여 정확한 데이터 값으로 이동합니다. 저장된 데이터는 항상 바로 사용할 수 있는 형식으로 제공됩니다.

64비트 컴퓨팅, 낮은 RAM 가격, 멀티코어 서버와 같은 요인으로 인해 인 메모리 스토리지가 더욱 보편화되었습니다. 또한 클라우드 기반 데이터 스토어를 사용하면 필요에 따라 RAM 리소스를 늘리거나 줄일 수 있으므로, 인 메모리 기술의 유연성과 접근성이 향상됩니다.

인 메모리 캐시와 기존 디스크 기반 데이터베이스의 차이점

기존 데이터베이스는 모든 데이터를 외장 디스크 드라이브 또는 솔리드 스테이트 드라이브에 유지합니다. 모든 단일 읽기 및 쓰기 작업에는 디스크 액세스가 필요합니다. 반면 인 메모리 캐시는 데이터 지속성에 우선순위를 두지 않습니다. 예를 들어 캐시는 주기적으로 외부 저장 매체에만 데이터를 저장할 수 있습니다. 인 메모리 캐시와 기존 데이터베이스의 차이점을 아래에 요약했습니다.

인 메모리 캐시와 인 메모리 데이터베이스의 차이점은 무엇인가요?

인 메모리 캐시는 쓰기가 유지되지 않기 때문에 데이터를 유지하는 데 필요한 추가 시간이 없어 더 나은 성능을 제공합니다. 인 메모리 데이터베이스는 쓰기를 유지하여 데이터 변경 사항의 내구성을 보장합니다. 이러한 내구성으로 인해 쓰기 성능이 저하됩니다. 하지만 인 메모리 데이터베이스는 여전히 디스크 기반 데이터베이스보다 더 나은 성능을 제공합니다. 성능 측면에서 보면 인 메모리 캐시와 디스크 기반 데이터베이스의 중간에 위치합니다.

인 메모리 캐시의 한계는 무엇인가요?

모든 데이터가 메모리에만 저장 및 관리되므로 인 메모리 캐시는 프로세스 또는 서버 장애 발생 시에 데이터가 손실될 위험이 있습니다. 내구성을 개선하기 위해 인 메모리 캐시는 디스크 데이터베이스에 데이터를 주기적으로 저장할 수 있습니다. 아래에서는 내구성을 개선하기 위한 몇 가지 메커니즘을 보다 자세히 설명합니다.

스냅샷 파일

스냅샷 파일은 특정 시점의 데이터베이스 상태를 기록합니다. 인 메모리 캐시는 주기적으로 또는 정상 종료 중에 스냅샷을 생성합니다. 스냅샷을 생성하면 내구성이 어느 정도 향상되지만 스냅샷 간에도 데이터 손실이 발생할 수 있습니다.

트랜잭션 로깅

트랜잭션 로깅은 데이터베이스의 변경 사항을 외부 저널 파일에 기록합니다. 로깅은 데이터 읽기/쓰기와 무관하며 성능에 영향을 미치지 않습니다. 저널 파일은 인 메모리 캐시의 자동 복구를 용이하게 합니다.

복제

일부 인 메모리 캐시는 고가용성을 제공하기 위해 이중화를 사용합니다. 이들은 서로 다른 메모리 모듈에 동일한 데이터의 여러 복사본을 유지 관리합니다. 모듈 장애가 발생하면 이중화된 백업 사본으로 자동 장애 조치됩니다. 따라서 캐시로 인한 데이터 손실 위험이 줄어듭니다.

AWS는 인 메모리 캐시 및 데이터베이스 요구 사항을 어떻게 지원하나요?

AWS는 고객의 구체적인 요구 사항에 따라 다양한 완전관리형 인 메모리 캐시와 데이터베이스 서비스를 제공합니다.

인 메모리 데이터베이스

Amazon MemoryDB for Redis

Amazon MemoryDB for Redis는 내구성이 뛰어난 인 메모리 데이터베이스 서비스로, 초고속 성능을 제공합니다. 인기 있는 오픈 소스 데이터 스토어인 Redis와 호환됩니다. 따라서 고객이 현재 이미 사용하고 있는 것과 동일한 유연성을 가진 익숙한 Redis 데이터 구조, API, 명령을 사용해 빠르게 애플리케이션을 구축할 수 있습니다. MemoryDB는 또한 다중 AZ 트랜잭션 로그를 사용하여 여러 가용 영역(AZ)에 데이터를 내구성 있게 저장함으로써 빠른 장애 조치, 데이터베이스 복구 및 노드 다시 시작을 지원합니다.

인 메모리 캐시

Amazon ElastiCache for Redis

Amazon ElastiCache for Redis는 초고속 인 메모리 캐싱 서비스로, 마이크로초 단위의 지연 시간을 지원하므로 인터넷 규모의 애플리케이션을 실시간으로 구동할 수 있습니다. 개발자는 ElastiCache for Redis를 인 메모리 캐시 또는 높은 데이터 내구성이 필요하지 않은 사용 사례로 사용할 수 있습니다. ElastiCache for Redis 클러스터 구성은 고객이 단일 클러스터에서 최대 6.1TB의 인 메모리 용량으로 Redis 워크로드를 실행할 수 있도록 지원합니다. 또한 ElastiCache for Redis는 실행 중인 클러스터에 샤드를 추가 및 제거할 수 있는 기능을 제공합니다. 수요 변화에 맞춰 Redis 클러스터 워크로드를 동적으로 스케일 인하거나 스케일 아웃할 수 있습니다.

Amazon ElastiCache for Memcached

Amazon ElastiCache for Memcached는 Memcached 호환 인 메모리 키 값 캐싱 서비스로, Memcached와 동일한 뛰어난 성능, 사용 편의성 및 간편성을 제공합니다. ElastiCache for Memcached는 확장 가능하고 안전한 완전관리형 서비스로, 자주 액세스하는 데이터가 인 메모리에 상주해야 하는 사용 사례에 적합합니다.

지금 무료 계정을 생성하여 AWS에서 인 메모리 캐시 또는 데이터베이스를 시작하세요!

Amazon MemoryDB for Redis 소개
Amazon ElastiCache for Redis 소개