인메모리 데이터베이스에 대하여 알아보자

인메모리 데이터베이스는 컴퓨터의 주 메모리에 모든 조직 또는 개인의 데이터를 저장한다. 인메모리 데이터베이스에 대한 데이터 분석은 하드 디스크, SSD와 같은 보조 기억 장치를 사용하는 기존 데이터베이스에 비해 빠르다. 왜냐하면 CPU는 주 메모리에 저장된 데이터에만 직접 접속할 수 있어, 컴퓨터는 보조 기억 장치의 데이터보다 훨씬 빠르게 주 메모리의 데이터를 읽고 쓸 수 있기 때문이다. 이러한 인메모리 데이터베이스는 고속 데이터베이스 조작을 필요로 할 때 사용한다.

인메모리 데이터베이스와 디스크 기반 데이터베이스 비교

  1. 인메모리 데이터베이스는 기존의 디스크 기반 데이터베이스에 비해 읽기/쓰기를 더 빠르게 진행한다. 기존 데이터베이스에서 데이터베이스 연산을 진행하기 위해서는 디스크 I/O를 필요로 하는데, 이러한 프로세스로 인하여 디스크 기반 데이터베이스의 속도가 느려진다.
  2. 디스크 기반 데이터베이스의 데이터는 인메모리 데이터베이스의 데이터에 비해 영구적이다. 인메모리 데이터베이스에서 사용되는 주 메모리는 휘발성 메모리이기 때문에 시스템에 장애가 생길 경우 데이터가 손실될 수 있다. (데이터 변동성 문제)
  3. 디스크 기반 데이터베이스에서 데이터를 저장하는 데 사용되는 구조는 복잡하다. 일반적으로 보조 기억 장치의 무작위 액세스는 시간이 오래 걸리기 때문에 이러한 문제를 극복하기 위해 B-트리와 같은 다양한 데이터 구조를 사용한다. 반면 인메모리 데이터베이스의 경우 주 메모리에서 데이터를 무작위로 액세스 하는 것이 효율적이기 때문에 저장 구조가 비교적 간단하다.
  4. 디스크 기반 데이터베이스는 보조 기억장치가 달린 시스템에서만 실행할 수 있다. 하지만 많은 임베디드 장치는 보조 기억 장치를 지원하지 않는데, 인메모리 데이터베이스는 이러한 임베디드 장치의 주 메모리에서 효율적으로 실행할 수 있다.

ACID 속성의 보장

  • atomicity (원자성)
  • consistency (일관성)
  • isolation (고립성)
  • durability (내구성)

인메모리 데이터베이스는 처음 세 가지 속성은 보장하지만 내구성을 보장하기 위해서는 추가적인 장치가 필요하다. 인메모리 데이터베이스는 휘발성 주 메모리를 기반으로 하기 때문에, 시스템이 꺼지면 모든 데이터가 손실된다. 따라서 다양한 기술을 사용하여 전원이 꺼지거나 시스템 오류가 발생한 후에도 데이터가 삭제되지 않도록 해야 한다.

스냅샷 (snapshot)
인메모리 데이터베이스는 데이터베이스의 주기적 스냅샷을 생성하여 디스크 드라이브에 저장한다. 이 데이터베이스 스냅샷은 특정 시점의 전체 데이터베이스의 복사본이다. 주기적인 스냅샷은 데이터를 보존하는 방법이지만 내구성이 보장되지 않을 수 있으며, 스냅샷 이후 모든 변경 사항들은 손실된다는 단점이 있다.

트랜잭션 로깅 (transaction logging)
데이터베이스에 대해 진행한 모든 수정 기록들을 보관하는 방법이다. 이러한 트랜잭션 로그에는 데이터베이스에 대한 모든 삽입 및 수정 연산에 대한 세부 정보가 들어있다. 해당 로그는 오류 발생 시 데이터베이스를 복구하는 데 사용할 수 있는 비휘발성 파일에 저장된다. 하지만 이러한 트랜잭션 로깅은 시스템의 성능과 저장 용량에 과부하를 제공할 수 있기 때문에, 대부분의 인메모리 데이터베이스는 스냅샷이 만들어질 때까지 트랜잭션 로그를 보관하였다가 이후 삭제하는 방법을 사용하고 있다.

비휘발성 랜덤 액세스 메모리 (NVRAM)
데이터 내구성을 보장하는 또 다른 방법은 비휘발성 랜덤 액세스 메모리를 사용하는 것이다. NVRAM은 전원이 꺼진 이후에도 데이터를 유지하는데, 인메모리 데이터베이스는 배터리로 작동하는 정적 RAM 또는 전기적으로 지울 수 있는 프로그래밍 가능한 읽기 전용 메모리 EEPROM을 사용한다.

댓글남기기