그날그날메모

Redis 대 MongoDB

Java

Redis 대 MongoDB

그날그날메모 2021. 4. 21. 01:22

1. 개요

종종 비 관계형 데이터베이스를 애플리케이션의 기본 데이터 저장소로 결정하기가 어렵습니다.

이 기사에서는 두 가지 인기있는 비 관계형 데이터베이스 인 RedisMongoDB를 살펴 보겠습니다 .

먼저 Redis 및 MongoDB에서 제공하는 기능을 간략히 살펴 보겠습니다. 그런 다음 Redis 또는 MongoDB를 서로 비교하여 언제 사용할지 논의합니다.

2. 레디 스

Redis 는 다양한 기능을 제공하는 인 메모리 데이터 구조 저장소입니다. 그것은이다 캐시, 메시지 브로커 및 큐 유용 .

2.1. 풍모

2.2. 설치

공식 웹 사이트에서 최신 Redis 서버다운로드하여 설치할 수 있습니다.

$ wget http://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make

3. MongoDB

MongoDB 는 JSON과 유사한 문서 구조로 정보를 저장하는 NoSQL 문서 데이터베이스입니다. 설계 및 구현 단계에서 빠르게 변화하는 애플리케이션, 프로토 타이핑 및 시작을위한 스키마없는 데이터 저장소 로 유용합니다 .

3.1. 풍모

  • 대화 형 명령 줄 인터페이스 MongoDB Shell ( mongosh ) 을 제공하여 관리 작업을 수행하고 데이터를 쿼리 / 업데이트합니다.
  • 조인을 지원하는 JSON 기반 쿼리 구조
  • 지리적 기반 검색, 그래프 검색, 텍스트 검색과 같은 다양한 유형의 검색 지원
  • 다중 문서 ACID 트랜잭션 지원
  • 스프링 데이터 지원
  • 커뮤니티, 엔터프라이즈 및 클라우드 ( MongoDB Atlas ) 에디션에서 사용 가능
  • C ++, Java , Go, Python, Rust 및 Scala와 같은 주요 기술을위한 다양한 드라이버
  • MongoDB Compass를 통해 데이터를 탐색하고 조작 할 수있는 GUI 제공
  • MongoDB 차트를 사용하여 데이터의 시각적 표현을 제공합니다.
  • MongoDB BI Connector 는 BI 및 분석 플랫폼에 대한 연결을 제공합니다.

3.2. 설치

최신 MongoDB 서버를 다운로드 하거나 macOS를 사용하는 경우 Homebrew를 사용하여 직접 커뮤니티 에디션을 설치할 수 있습니다 .

brew tap mongodb/brew
brew install mongodb-community@4.4

4. 언제 Redis를 사용합니까?

4.1. 캐싱

Redis는 자주 요청되는 항목에 대해 1 밀리 초 미만의 응답 시간을 제공하여 동급 최고의 캐싱 성능을 제공합니다 .

또한 EXPIRE , EXPIREATPEXPIRE같은 명령을 사용하여 키에 만료 시간을 설정할 수 있습니다 .

동시에 PERSIST 명령을 사용하여 시간 제한을 제거하고 키-값 쌍을 유지하여 캐싱에 이상적입니다.

4.2. 유연한 데이터 저장

Redis는 데이터를 저장하고 구성하는 방법을 결정하기 위해 문자열, List, 집합 및 해시와 같은 다양한 데이터 구조를 제공합니다. 따라서 Redis는 데이터베이스 구조 구현에 대한 완전한 자유를 제공합니다.

그러나 DB 설계를 꼼꼼히 생각하는 데에도 오랜 시간이 소요될 수 있습니다. 마찬가지로 Redis를 사용하여 스키마의 내부 구조를 구축하고 유지 관리하는 것은 어려울 수 있습니다.

4.3. 복잡한 데이터 저장

마찬가지로 List, 집합 및 해시의 조합을 사용하여 저장소에 대한 대기열, 배열, 정렬 된 집합 및 그래프와 같은 복잡한 데이터 구조를 구현할 수 있습니다 .

4.4. 채팅, 대기열 및 메시지 브로커

Redis는 패턴 일치가 있는 게시 / 구독 메시지 대기열을 사용하여 메시지를 게시하고 구독 할 수 있습니다 . 따라서 Redis는 실시간 채팅 및 소셜 미디어 피드 애플리케이션을 지원할 수 있습니다.

마찬가지로 List 데이터 구조를 사용하여 경량 대기열을 구현할 수 있습니다 . 또한 Redis의 List은 원자 적 작업을 지원하고 차단 기능을 제공하므로 메시지 브로커를 구현하는 데 적합합니다.

4.5. 세션 저장소

Redis는 지속성 기능이있는 인 메모리 데이터 저장소를 제공하므로 웹 / 모바일 애플리케이션을위한 세션을 저장하고 관리하는 데 적합합니다.

4.6. IoT 및 임베디드 시스템

Redis의 공식 문서에 따르면 4 및 5로 시작하는 최신 버전은 ARM 프로세서와 Raspberry Pi를 지원합니다 .

또한 Andriod에서 실행되며 Android를 공식 지원 플랫폼으로 포함하기위한 노력이 진행 중입니다.

따라서 Redis는 작은 메모리 공간과 낮은 CPU 요구 사항으로 인해 IoT 및 임베디드 시스템에 이상적입니다 .

4.7. 실시간 처리

엄청나게 빠른 인 메모리 데이터 구조이므로 실시간 처리 애플리케이션에 사용할 수 있습니다.

예를 들어 Redis는 주가 알림, 리더 보드 및 실시간 분석과 같은 기능을 제공하는 애플리케이션을 효율적으로 제공 할 수 있습니다.

4.8. 지리 공간 앱

Redis는 지리 공간 인덱스를 관리하기 위해 정렬 된 세트를 기반으로 구축 된 특수 목적의 인 메모리 데이터 구조 Geo Set을 제공합니다. 또한 GEOADD , GEOPOSGEORADIUS같은 특정 지리 명령을 제공 하여 지리 공간 데이터를 추가, 읽기 및 분석합니다.

따라서 Redis를 사용하여 운전 시간 및 운전 거리와 같은 위치 기반 기능으로 실시간 지리 공간 애플리케이션을 구축 할 수 있습니다 .

5. MongoDB는 언제 사용합니까?

5.1. 동적 쿼리

MongoDB는 강력한 쿼리 도구 세트를 제공합니다. 또한 효율적인 데이터 검색을 위해 지리적 기반 검색, 그래프 검색 및 텍스트 검색과 같은 광범위하고 유연한 쿼리 체계를 제공합니다.

동시에 JSON 구조 쿼리를 지원하는 MongoDB는 데이터 검색 및 분석이 일상적인 활동 인 시나리오에 더 나은 선택이 될 것으로 보입니다.

5.2. 빠르게 변화하는 스키마

MongoDB는 스키마를 빠르게 변경해야하는 설계 및 초기 구현 단계에서 도움이 될 수 있습니다. 동시에 기본 데이터에 대한 가정을하지 않으며 스키마없이 자체적으로 최적화됩니다.

5.3. 프로토 타이핑 및 해커 톤

JSON과 유사한 문서 구조를 따르면 MongoDB는 신속한 프로토 타이핑, 프런트 엔드 채널과의 빠른 통합 및 해커 톤을 허용 합니다.

동시에 RDBMS의 복잡성을 다루고 싶지 않은 주니어 팀에게 유용 할 수 있습니다.

5.4. 카탈로그

자체 설명적인 동적 스키마를 제공함으로써 MongoDB는 전자 상거래, 자산 관리 및 인벤토리와 같은 카탈로그에 대한 제품, 기능 및 권장 사항더 쉽게 추가 할 수 있습니다 .

또한 MongoDB에서 JSON 구조 문서의 필드 또는 필드 집합을 인덱싱하여 고급 검색 및 분석과 같은 기능에 대한 표현 쿼리를 사용할 수 있습니다.

5.5. 모바일 앱

MongoDB의 JSON 문서 구조를 사용하면 지리 공간 색인과 함께 다양한 장치의 다양한 유형의 데이터를 저장할 수 있습니다.

게다가 네이티브 샤딩을 통한 수평 확장 성은 모바일 앱의 확장을 쉽게합니다. 따라서 MongoDB는 수많은 사용자에게 서비스를 제공하고, 페타 바이트 규모의 데이터를 처리하고, 초당 수십만 개의 작업을 지원할 수 있으므로 모바일 앱을 지원하는 데 적합한 선택입니다.

5.6. 콘텐츠가 풍부한 앱

컨텐츠가 풍부한 최신 앱을 위해 RDBMS에 다양한 컨텐츠를 통합하는 것은 쉽지 않습니다. 반면 MongoDB는 텍스트, 오디오 및 비디오와 같은 풍부한 콘텐츠를 저장하고 제공 할 수 있습니다 .

또한 MongoDB GridFS를 사용하여 16MB 이상의 파일을 효율적으로 쉽게 저장할 수 있습니다 . 전체 파일을 메모리에로드하지 않고도 대용량 파일의 일부에 액세스 할 수 있습니다.

또한 모든 서버에서 파일과 메타 데이터를 자동으로 동기화합니다. 결과적으로 MongoDB는 콘텐츠가 풍부한 앱을 지원하는 데 더 적합한 선택으로 보입니다.

5.7. 게임 앱

모바일 및 콘텐츠가 풍부한 앱과 마찬가지로 게임에도 대규모 확장 및 동적 데이터 구조가 필요합니다. 따라서 MongoDB는 게임 앱을위한 유망한 선택이 될 수 있습니다.

5.8. 글로벌 클라우드 데이터베이스 서비스

MongoDB Atlas는 AWS, Google Cloud 및 Azure와 같은 여러 클라우드 서비스에서 사용할 수 있습니다 . 또한 기본 제공 복제 및 장애 조치 메커니즘을 통해 고 가용성 분산 시스템을 제공합니다. 따라서 데이터베이스를 신속하게 배포 및 관리하고이를 글로벌 클라우드 데이터베이스 서비스로 사용할 수 있습니다.

6. 결론

이 기사에서는 비 관계형 데이터베이스에 대한 선택으로 Redis 및 MongoDB를 살펴 보았습니다.

먼저 두 데이터베이스에서 제공하는 기능을 살펴 보았습니다. 그런 다음 그중 하나가 다른 것보다 나은 시나리오를 탐색했습니다.

우리는 Redis가 캐싱, 메시지 브로커 및 큐에 대한 더 나은 솔루션으로 유망 해 보인다는 결론을 내릴 수 있습니다 . 동시에 실시간 처리, 지리 공간 앱 및 임베디드 시스템에서 가치가 있음을 입증 할 수 있습니다.

반면에 MongoDB는 JSON과 유사한 객체를 저장하기위한 확실한 선택입니다. 결과적으로 MongoDB는 프로토 타이핑, 풍부한 콘텐츠, 모바일 및 게임 애플리케이션을위한 스키마없는 아키텍처에 가장 적합 할 수 있습니다.

참고
  • https://docs.spring.io/spring-framework/docs/current/reference/html
  • https://www.baeldung.com/java-redis-mongodb