wisePocket

[Redis] Redis란? MongoDB와의 차이점은? 본문

Redis

[Redis] Redis란? MongoDB와의 차이점은?

ohnyong 2023. 7. 27. 11:36

 

데이터를 저장할 간단하면서도 신뢰할 수 있는 키-값 데이터베이스를 찾고 계십니까? 예인 경우 이 기사는 귀하를 위한 것입니다. 시장에서 널리 사용되는 다양한 데이터베이스는 가치가 있는 것보다 훨씬 더 많은 것을 요구합니다. 그럼 누구를 믿어야 할까요?

Redis 는 메모리가 내장된 가장 인기 있고 신뢰할 수 있는 데이터베이스 중 하나이며, 더 큰 규모실시간 지리 공간 데이터에 대한 빠르고 비용 효율적인 기능을 제공합니다. Redis 는 키-값 데이터베이스로 사용되며 캐시 관리 및 메시지 브로커 역할효과적인 데이터 구조 서버를 제공합니다. 모든 종류의 데이터 관리는 Redis 에서 문제가 되지 않습니다. 이 키-값 데이터베이스 Redis 에 대한 심층 정보를 알아보겠습니다.

 

키-값 데이터베이스란 무엇입니까?

특정 NoSQL 데이터베이스 는 일반적으로 키-값 저장소라고 하는 키-값 데이터베이스라고 합니다.

키-값 데이터베이스 또는 키-값 저장소는
사전 정의된 테이블 및 열에서 제공되는 데이터 구조를 유지했던 이전의 관계형 NoSQL 데이터베이스와 달리
단순 문자열 또는 단일 키 또는 키 세트/삭제 키/다중 키를 사용
하여 관련 값에 액세스합니다. 이를 집합적으로 키-값 쌍이라고 합니다.

이러한 값은 여러 중첩 값이 있는 특정 개체에서 텍스트 또는 정수와 같은 간단한 문자열 데이터 유형에 이르기까지 다양합니다.
모든 단순 문자열 키는 거래 또는 데이터가 유지 관리되는 위치와 조정되는 특정 지정 번호입니다.

MongoDB도 No-SQL로 도큐먼트에 필드가 {number : 8}이면 number가 키값이고 8이 value값이긴 했다. Redis는 성능을 위한 특별한 차별성은 뭐지?

 

키-값 데이터베이스를 사용하는 경우

키-값 데이터베이스를 사용하는 경우
많은 수작은 연속 읽기쓰기관리해야 하는 경우 애플리케이션이 휘발성일 수 있습니다.


(애플리케이션이 휘발성 일 수 있다는 - 플래시 메모리와 비슷한개념인가 애플리케이션 자체가 메모리(RAM)에 로드되니까 그 DB들이 RAM에 로드되지 그럼 RDBMS는 어디올라가는거지?) 찾아보자
아하,느리지만 싸고 큰 비휘발성 메모리 = 보조기억장치 = 하드, 디스크

데이터베이스의 특징)
RAM, ROM 같은 주기억장치가 아닌 컴퓨터에서 사용할 수 있는 보조기억장치에 저장된다. ==>일반적인것을 말하는것 보니 RDBMS인듯하다.
그런데, No-SQL은 메모리에 저장되는구나. 그럼 다시 정리하면,빠른 처리를 위해서 RAM에 올려서 돌리는 경우도 있다. 당연하지만 변경 사항을 보조기억장치에 저장하지 못한 상태에서 서버 전원이 나가면 휘발된다.
맞다. 개론 배울때 NoSQL이 인스타그램예시를 들었엇다. 빠르게 로드가 특징이었다. 그 이유가 휘발성 메모리로 로드하기 때문인가보다. 맞나?


키-값 데이터베이스에 대한 액세스는 빠르고 인메모리입니다. URL을 키로, 웹페이지를 값으로 웹페이지를 저장합니다. 고객 정보와 같은 기본 데이터 저장 장바구니의 내용, 제품 카테고리 및 전자 상거래 제품 정보를 보존합니다. 빈번한 업데이트나 정교한 쿼리 지원이 필요하지 않은 프로그램의 경우.


그럼 내 포폴의 쇼핑몰은 사실 Oracle로 할 필요가 없었다.(배운게 그것뿐이라 그랬었지만) 상품 사진이나 정보들이 많이 나타나는데 더 빠른 서비스를 위해서는 이번에 배운 MongoDB나 지금 안내서를 보는것 처럼 Redis DB를 쓰는 것이 좋았겟다. 사례를 보자

 

키-값 데이터베이스의 사용 사례

쇼핑 카트
전자 상거래 웹 사이트 또는 온라인 키-값 저장소 역할을 하며 특히 쇼핑하기에 좋은 휴가철이 코앞에 닥쳤을 때 1초 안에 수십억 개의 주문을 획득할 수 있습니다. 분산 처리 및 저장을 통해 키-값 데이터베이스는 수백만 명의 동시 사용자와 엄청나게 많은 양의 상태 변경을 지원하도록 확장할 수 있습니다. 키-값 데이터베이스에 이미 있는 중복성은 스토리지 노드의 손실을 처리할 수 있습니다. 


맞다, 카트 부분을 담는데, Oracle로 저장하고, 읽어오고 이런걸 구현할때 DB로 가긴 해야되는데 Create했다가 Update했다가 Delete했다가 반복하니까 index는 계속 늘어나고 뭔가 비효율적이라 생각하긴 했다. 



세션 저장소
사용자가 로그인하면 웹 애플리케이션과 같은 세션 지향 프로그램에 의해 세션이 시작되며, 이는 기존 사용자가 키-값 저장소 또는 키-값 데이터베이스에서 로그아웃할 때까지 로그인 시간이 세션까지 연장될 때까지 지속됩니다. 만료됩니다. 이 시간 동안 프로그램은 모든 세션 관련 정보를 NoSQL 데이터베이스 또는 메인 메모리에 보관합니다. 세션 데이터 유형의 몇 가지 예에는 사용자 프로필 세부 정보, 메시징, 개인화된 데이터 및 테마, 권장 사항, 대상 프로모션 및 할인이 포함됩니다.

각 사용자 세션에 대한 특정 식별자가 있습니다. 빠른 키-값 저장소는 세션 데이터 유형에 더 적합합니다. 기본 키/삭제 키/다중 키 또는 단순 문자열 이외의 다른 어떤 것으로도 쿼리되지 않기 때문입니다. 일반적으로 키-값 데이터베이스는 관계형 데이터베이스 보다 페이지당 오버헤드가 더 낮을 수 있습니다.

맞다 세션은 메모리에 저장된다.
일단 정답은 메모리
결국 정답은 메모리라고 한다.
정확히 이야기하면 아파치 톰캣의 세션 저장소에 세션이 저장 된다. 톰캣의 세션 저장소는 톰캣이 점유중인 메모리 공간 내부에 있고, 그 톰캣은 결국 물리적인 서버 메모리에서 동작되므로 결국 서버 메모리에 저장된다고 보는게 맞을 것이다.
메모리에 저장되는 세션 저장소는 서버가 종료되면 모든 세션이 날아간다는 문제점을 갖고 있었고, 이를 보완하기 위해 하드 디스크에 세션을 저장하기 시작했을 것이다.
그러다가 서버간 세션 동기화를 위해 하드 디스크가 아닌 세션만을 위한 별도 데이터베이스를 사용하기 시작했고, 그러다가 세션만을 위한 별도 데이터베이스에 부하가 너무 커지는 것을 해결하기 위해 토큰 개념이 등장하는 것으로 정리해본다.

 

Redis?

원격 사전 서버( Redis)는 빠르고 액세스 가능한 인메모리 키-값 데이터베이스입니다. - No-SQL 중 하나란 말이겠지?
Redis 서버의 창시자인 Salvatore Sanfilippo는 그의 이탈리아 회사의 확장성을 높이려고 했으며 이것이 프로젝트가 시작된 방법입니다. 거기에서 그는 Redis 인스턴스, NoSQL 데이터베이스, 캐시, 메시지 브로커, 삭제 키, 다중 키 및 현재 사용 중인 대기열을 만들었습니다.
Redis 인스턴스응답 속도가 1밀리초 미만이므로 게임, 광고 기술, 금융 서비스, 의료 및 IoT를 포함한 분야의 실시간 애플리케이션에 대해 초당 수백만 개의 쿼리가 가능합니다. Redis 키-값 데이터베이스는 5년 이상 Stack Overflow 로에 따라 가장 사랑받는 엔진 중 하나로 선정되어 오늘날 가장 사랑받는 오픈 소스 엔진 중 하나가 되었습니다.

Redis 서버는 즉각적이고 신속한 제정으로 인해 캐싱, 게임, 수집 분석, 세션 관리, 리더보드, 채팅/화상 통화, 지리 공간, 차량 호출, 비디오 스트리밍 및 펍 앱에 탁월한 옵션입니다.

Redis 인스턴스를 실행하기 위해 AWS 는 두 가지 완전 관리형 서비스를 제공합니다.
Redis 키-값 데이터베이스 또는 키-값 저장소는 호환 가능하고 신뢰할 수 있는 인메모리 데이터베이스 서비스로 번개처럼 빠른 성능을 제공하는 Amazon MemoryDB for Redis 서버입니다.
마이크로초 지연 시간을 제공하는 완전 관리형 캐싱 서비스 Amazon ElastiCache for Redis 는 기본 데이터베이스 및 데이터 저장소의 데이터 액세스 속도를 높입니다. 또한 ElastiCache 는 인기 있는 또 다른 오픈 소스 캐싱 엔진인 Memcached 를 지원합니다.


Redis 오픈소스라 하지않았나?? 아마존 서비스인가? Redis를 돌리는 서버를 로컬로하는게 아니라 Amazon Cloud 서버로 해주는 서비스인것 같다. 마치 MongoDB를 로컬로 썼던거랑, Atlas에서 MongoDB 구축해주던 것과 같은 관계인것같다? 설명서 출처가 아마존이다보니 마케팅겸 여기로와버렸다. 일단 Redis를 로컬로 첫 사용을 해보고 접해야 될 부분 같다.

 

Redis 가 MongoDB 보다 낫습니까?

이게 제일 궁금했다, 왜 더 빠르다고 자랑하는 것인지

Redis 대 MongoDB 논쟁에 응답해 보겠습니다. 모든 상황에 하나의 솔루션이 적용되는 것은 아닙니다. 따라서 아래에 표시된 비즈니스 요구, 재정적 제약 및 기타 요소를 고려하여 선택해야 합니다. Redis 대 MongoDB 비교에 사용되는 주요 기준은 다음과 같습니다.
특징
Redis 에는 내구성, 캐싱 및 문제 없는 충돌 수정과 같은 기능이 포함되어 있는 반면 MongoDB 에는 맵 축소 및 데이터 집계 기능이 있습니다. 역할을 사용한 회계 제어는 MongoDB 에서 사용할 수 있습니다. 그러나 Redis 에서는 그렇지 않습니다.
성능
MongoDB 와 비교하여 Redis 인스턴스는 무거운 워크로드를 처리하는 데 더 좋습니다. Redis 는 간단한 문자열, 단일 코어를 사용하며 단일 스레드입니다.따라서 Redis 는 성능 면에서 MongoDB 를 약간 능가합니다. CPU 가 제한하면 MongoDB 도 마찬가지로 느리게 응답하는 것으로 유명합니다. 

 

같은 No-SQL인데 기능적 차이가 존재하긴 한다. 정말 기능 목적에 맞게 단순히 RDBMS vs No-SQL로만 나눠야 하는 것이 아니라 각 DB마다 특징들이 있는데 내가 구현하고자하는 기능에서 적합한, 최적화 할 수 있는 DB를 선택하는 것이 맞구나. 그리고 내 프로젝트에서 말그대로 카트나 로그인 세션 부분은 다른 DB를 선택했어도 됬구나 라는것이 생각된다.

'Redis' 카테고리의 다른 글

[Redis] Redis DB 기본적인 CRUD SQL만 기록 및 확인  (0) 2023.07.27