본문 바로가기
데이터베이스

인메모리(in-memory) db 유형에 따른 종류

by 데이널 2024. 3. 15.

인메모리(In-memory) 데이터베이스는 어떤 것이 있을까요? Redis, Memcached에 대해 인메모리 DB의 특징에서 알아보았지만 다른 것들도 많습니다. 인메모리 데이터베이스의 특징을 요약해 보면, 하드 디스크가 아니라 메모리에서 데이터에 액세스 하기 때문에 훨씬 빠르게 데이터 액세스 및 처리가 가능합니다. 이런 인메모리 데이터베이스에는 여러 유형이 있습니다. 각각 특정 사용 사례 및 요구 사항을 충족하도록 설계되었습니다.

 

 

행 기반 인메모리 디비(Row-based In-Memory Database)

행 기반 인메모리 데이터베이스는 행 기반으로 데이터를 저장합니다. 여기서 행 기반이라고 하면 일반적인 rdbms(Oracle, PostgreSQL, MySQL 등)를 말합니다. 각 행은 데이터베이스의 단일 레코드 또는 튜플(Tuple)을 나타냅니다. 이는 rdbms와 유사한 구조이지만 메모리 db인 것만 다릅니다.

 

행 기반 인메모리 db는 개별 레코드에 대한 짧은 대기 시간 액세스와 유연한 데이터 모델이 필요한 트랜잭션 워크로드에 매우 적합합니다. 그러나 엄격한 메모리 제약 조건과 확장성 요구 사항이 있는 분석 쿼리나 시나리오에는 효율적이지 않을 수 있습니다.

 

인메모리 db명 특징 단점
SAP HANA

Oracle TimesTen

MemSQL
- 이러한 데이터베이스는 전체 데이터 행에 대한 효율적인 액세스를 제공하는 목적입니다. 

- 개별 레코드에 대해 자주 읽고 쓰는 트랜잭션 워크로드에 매우 적합합니다.
여러 열에 액세스하거나 열 전체에 걸쳐 집계를 수행하는 쿼리의 경우 행 기반 데이터베이스는 열 기반 데이터베이스보다 효율성이 떨어집니다. 이는 행 중심 형식으로 데이터를 저장하기 때문에 각 행의 모든 ​​열을 검색해야 할 수 있기 때문입니다.

 

 

열 기반 인메모리 디비(Column-based In-Memory Databases)

열 기반 인메모리 데이터베이스는 데이터를 열(Column) 형식으로 저장합니다. 여기서 열 기반은 DW용으로 많이 사용하는 형태의 데이터베이스를 말합니다. 각 열은 모든 레코드의 단일 속성 또는 필드를 나타냅니다. 열 기반 인메모리 db는 분석 워크로드에 적합하고 특정 유형의 쿼리에 대해 상당한 성능 이점을 제공하지만 데이터베이스 시스템을 설계하고 배포할 때 신중하게 고려해야 하는 제한 사항도 있습니다.

 

인메모리 db명 특징 단점
Apache Kudu

Google BigQuery

Amazon Redshift
- 이러한 데이터베이스는 데이터의 특정 열 또는 하위 집합을 집계, 필터링 및 쿼리하는 분석 작업 부하에 최적화되어 있습니다.

- 컬럼형 스토리지는 필요한 컬럼만 읽어 I/O 작업을 최소화하여 쿼리 성능이 향상되고 압축률이 향상됩니다.
- 일반적으로 분석 쿼리에 탁월한 성능을 제공하지만 성능은 데이터 배포, 쿼리 복잡성, 인덱싱 전략과 같은 요소에 따라 달라질 수 있습니다.

- 최적이 아닌 쿼리 계획이나 리소스의 비효율적인 사용은 쿼리 성능과 응답 시간을 예측할 수 없게 만들 수 있습니다.

 

 

인메모리 키-값 저장소(In-Memory Key-Value Stores)

 

Key-Value 스토어에서 알 수 있듯이 NoSQL 데이터에비스 기반입니다. 인메모리 키-값 저장소는 각 데이터 조각이 고유한 키와 연결되어 있는 키-값 쌍을 기반으로 고속 데이터 검색을 위해 설계되었습니다. SNS 등 특정 사례와 같은 고성능 데이터 액세스가 필요한 영역에서 유효하다. 애플리케이션을 설계하고 배포할 때 신중하게 고려해야 하는 제한 사항도 있습니다. 

 

인메모리 db명 특징 단점
Redis

Memcached

Aerospike
- 자주 액세스하는 데이터에 대한 짧은 대기 시간 액세스가 중요한 캐싱, 세션 관리 및 실시간 데이터 처리 애플리케이션에 일반적으로 사용됩니다.

- 일반적으로 간단한 데이터 모델과 빠른 읽기 및 쓰기 작업을 제공하므로 처리량이 높고 대기 시간이 짧은 사용 사례에 이상적입니다.
- 스키마가 없으며 키나 값 간의 관계를 적용하지 않습니다. 이러한 데이터 관계 부족으로 인해 상호 연결(join)하여 쿼리하기 어려울 수 있습니다.

- 복잡한 데이터 관계가 필요한 애플리케이션은 사용자 지정 논리를 구현하거나 추가 데이터 모델링 기술을 사용하여 데이터를 효과적으로 관리해야 할 수 있습니다.

 

 

메모리 내 문서 저장소(In-Memory Document Stores)

인메모리 문서 저장소는 흔히들 다큐먼트 DB라고 부르는 데이터베이스 구조입니다. 가장 두드러지는 특징이 반구조화된 문서 또는 JSON과 유사한 문서를 메모리에 저장하므로 유연한 데이터 스키마와 중첩 구조가 가능합니다. 문서 간의 관계를 표현하고 쿼리하려면 사용자 정의 논리 또는 비정규화 기술이 필요합니다. 이로 인해 개발 복잡성이 증가하고 잠재적인 데이터 일관성 문제가 발생할 수 있습니다.

 

인메모리 db명 특징 단점
MongoDB

Couchbase

RavenDB
- 콘텐츠 관리 시스템, 실시간 분석, IoT 데이터 처리 등 복잡한 데이터 모델과 계층적 데이터 관계가 있는 애플리케이션에 매우 적합합니다.

- 인메모리 문서 저장소는 다양한 기준에 따라 문서를 검색하기 위한 효율적인 인덱싱 및 쿼리 기능을 제공합니다.
- 특히 분산 또는 클러스터 배포에서 최종 일관성 또는 약한 일관성 보장을 제공할 수 있습니다. 

- 여러 노드 또는 복제본에서 강력한 일관성을 보장하는 것은 어려울 수 있습니다. 

- 애플리케이션은 데이터 무결성을 유지하기 위해 데이터 동기화 및 충돌 해결을 위한 추가 메커니즘을 구현해야 할 수도 있습니다.

 

 

하이브리드 인메모리 디비(Hybrid In-Memory Databases)

 

하이브리드 인메모리 db는 두가지 특징을 모두 가져가겠다는 전략입니다. 인메모리 db와 디스크 기반 db의 장점을 결합하여 hot data와 cold data를 효율적으로 관리할 수 있는 게 특징입니다. 하이브리드 인메모리 db는 성능과 비용을 모두 고려하는 균형 잡힌 데이터 관리 접근 방식을 제공하는게 목표입니다. 하지만 조직에서 어떤 것을 인메모리에 하고, 어떤 것을 디스크 기반으로 할지 신중하게 평가하고 관리해야 하는 복잡성과 오버헤드도 발생할 수 있습니다.

 

인메모리 db명 특징 단점
Apache Ignite

VoltDB

SQLite(인메모리 모드 포함)
- 자주 액세스하는 데이터를 캐싱하는 데 메모리를 사용하고 자주 액세스하지 않거나 보관하는 데이터에는 디스크 스토리지를 사용하여 성능과 비용 효율성 간의 균형을 유지합니다.

- 하이브리드 인메모리 데이터베이스는 리소스 활용도 최적화가 필수적인 혼합 워크로드 또는 변동하는 데이터 액세스 패턴이 있는 애플리케이션에 적합합니다.
- 메모리에 저장된 데이터에 대한 빠른 액세스를 제공하지만 디스크에 저장된 데이터에 액세스하면 메모리 액세스에 비해 대기 시간이 길어집니다. 

- 디스크에서 데이터를 검색하면 특히 cold data나 자주 액세스하지 않는 데이터의 경우 지연이 발생할 수 있으며, 이는 쿼리 및 트랜잭션의 응답 시간에 영향을 줄 수 있습니다.

 

인메모리 구조 설계
인메모리 구조 설계


각 유형의 인메모리 데이터베이스에는 장단점이 있으며 애플리케이션의 특성, 성능 요구 사항, 확장성 요구 사항, 예산 고려 사항 등의 요소에 따라 선택이 달라집니다. 인메모리 DB의 특징에 대해서는 아래 글을 참고하시기 바랍니다. 

 

 

 

인메모리(In-memory) DB 특징과 종류 비교

이번 포스팅에서는 인메모리(In-memory) 데이터베이스에 대해 알아보도록 하겠습니다. 인메모리 DB가 출현한 배경은 기술적 측면과 비즈니스 측면으로 나눠서 생각해 볼 수 있습니다. 인메모리 데

bommbom.tistory.com