Redis
디스크에 상주하는 인메모리 데이터베이스 / 컴퓨터 메모리를 이용한(in-memory) Cache 서버
Key-Value를 이용해 Celery가 처리할 작업을 Celery에 보낸 후 Cache 에서 해당 Key를 제거하는 방식으로 작동한다.
- Redis는 데이터 검색을 위해 Database에 접근하기 전 메모리에서 Cache를 가져다 쓴다는 점에서 속도가 빠르다.
- 매우 빠른 서비스 및 메모리 내 기능을 제공하기 때문에 지속성이 중요하지 않고 약간의 손실을 견딜 수있는 짧은 보존 메시지에 적합하다.
- 큰 메시지를 처리 할 때는 대기 시간이 오래 걸린다.
RabbitMQ
메시지 브로커이다.
응용 프로그램(applications)에게 메시지를 주고 받을 수 있으며, 메시지가 수신될 때까지 안전하게 있을 수 있도록 하는 공용 플래폼(common platform)을 제공한다.
- 메시지를 다른 대기열로 보낼 수있는 라우팅 시스템을 갖추고 있다.
- 우선 순위가 높은 메시지를 먼저 사용하기 위해 작업자가 사용할 수있는 메시지의 우선 순위를 지원한다.
- 메시지 브로커로서 Redis와 비교할 때 훨씬 더 다양한 기능을 제공한다.
- 크고 복잡한 메시지에 적합하다.
인메모리 데이터베이스는 어떻게 데이터 내구성을 보장합니까?(Redis)
다음과 같은 ACID 속성을 보장하는 것은 모든 데이터베이스의 전제 조건입니다.
- 원자성
- 일관성
- 고립성
- 내구성
인메모리 데이터베이스는 처음 세 가지 속성은 보장하지만 내구성을 보장하려면 추가 단계가 필요합니다. 이 속성은 시스템 고장이나 정전이 있더라도 모든 데이터가 손상되지 않아야 한다는 것을 나타냅니다. 인메모리 데이터베이스는 휘발성 주 메모리를 기반으로 합니다. 휘발성 메모리는 시스템 전원이 꺼지면 모든 데이터가 손실되도록 설계되었습니다. 인메모리 데이터베이스는 다양한 기술을 사용하여 전원이 꺼지거나 시스템 오류가 발생한 후에도 데이터가 삭제되지 않도록 합니다.
스냅샷
인메모리 데이터베이스는 데이터베이스의 주기적 스냅샷을 생성하여 디스크 드라이브(비휘발성)에 저장합니다. 이 데이터베이스 스냅샷은 특정 시점의 전체 데이터베이스 복사본입니다. 주기적인 스냅샷은 데이터를 보존하는 방법이지만 내구성이 보장되지 않을 수 있습니다. 스냅샷을 저장한 후에는 항상 시스템 오류가 발생할 수 있습니다. 스냅샷 이후의 모든 변경 사항은 손실됩니다.
트랜잭션 로깅
이 방법에서 인메모리 데이터베이스는 데이터베이스에 대해 진행한 모든 수정 기록을 보관합니다. 이러한 트랜잭션 로그에는 데이터베이스에 대한 모든 삽입 및 수정 연산에 대한 세부 정보가 들어있습니다. 해당 로그는 오류 발생 시 데이터베이스를 복구하는 데 사용할 수 있는 비휘발성 파일에 저장됩니다. 분당 수천 건의 연산을 수행하는 데이터베이스에서 트랜잭션 로깅은 시스템의 성능과 저장 용량에 과부하를 제공합니다. 대부분의 인메모리 데이터베이스는 스냅샷이 만들어질 때까지 트랜잭션 로그를 보관하였다가 이후 삭제합니다.
비휘발성 랜덤 액세스 메모리(NVRAM)
데이터 내구성을 보장하는 또 다른 방법은 비휘발성 랜덤 액세스 메모리를 사용하는 것입니다. NVRAM은 전원이 꺼진 후에도 데이터를 유지합니다. NVRAM은 인메모리 데이터베이스에서 데이터 내구성을 달성하기 위해 사용하는 인기 있는 솔루션입니다. 인메모리 데이터베이스는 배터리로 작동하는 정적 RAM 또는 전기적으로 지울 수 있는 프로그래밍 가능한 읽기 전용 메모리(EEPROM)를 사용합니다.
출처 : https://www.tibco.com/ko/reference-center/what-is-an-in-memory-database
'기타' 카테고리의 다른 글
지렁이의 죽음에 대한 고찰 (1) | 2023.10.14 |
---|---|
개발자 면접 예상 질문 알아보기 (0) | 2023.09.25 |
죽기 전에 꼭 해보고 싶은 것들 (버킷리스트) (0) | 2023.09.16 |
제로 아이스크림이 별로 없는 이유 (0) | 2023.09.09 |
HTTP 프로토콜과 웹 소켓의 특징 및 실제 활용: 웹 개발에서의 양방향 통신 구현 전략 이해하기 (0) | 2023.02.20 |
댓글