Рубрики
Без рубрики

Redis против MongoDB

Изучите некоторые функции, предлагаемые Redis и MongoDB, и посмотрите, когда следует использовать Redis или MongoDB, сравнивая их друг с другом

Автор оригинала: Anshul Bansal.

1. Обзор

Часто мы сталкиваемся с трудностями при выборе нереляционной базы данных в качестве основного хранилища данных для наших приложений.

В этой статье мы рассмотрим две популярные нереляционные базы данных: Redis и MongoDB .

Во-первых, мы быстро рассмотрим функции, предлагаемые Redis и MongoDB. Затем мы обсудим, когда использовать Redis или MongoDB, сравнивая их друг с другом.

2. Редис

Redis -это хранилище структуры данных в памяти, которое предлагает богатый набор функций. Это полезно в качестве кэша, брокера сообщений и очереди .

2.1. Особенности

  • Выделенный интерфейс командной строки – redis-cli
  • Хранит пары ключ-значение и поддерживает структуры данных как список, набор и хэш
  • Может хранить значения размером до 512 МБ
  • Позволяет публиковать и подписываться на сообщения с помощью очередей сообщений pub/sub
  • Геопространственная поддержка путем предоставления специальных команд для управления геопространственными данными в реальном времени
  • Позволяет LUA-скрипты выполнение
  • Предлагает различным клиентам популярные технологии
  • Поддержка интернета вещей и встроенных устройств
  • Поддержка весенних данных
  • Spring Cache поддержка использования Java-клиентов, таких как Radisson

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 -это база данных документов NoSQL, которая хранит информацию в структуре документов, подобной JSON. Он полезен в качестве хранилища данных без схем для быстро меняющихся приложений, прототипирования и стартапов на этапе проектирования и внедрения .

3.1. Особенности

  • Предлагает интерактивный интерфейс командной строки MongoDB Shell ( mongodb ) для выполнения административных операций и запроса/обновления данных
  • Структура запросов на основе JSON с поддержкой соединений
  • Поддерживает различные типы поиска, такие как поиск по географическому признаку, поиск по графам и текстовый поиск
  • Поддерживает транзакции ACID с несколькими документами
  • Поддержка весенних данных
  • Доступно в выпусках сообщества, предприятия и облака ( MongoDB Atlas )
  • Различные драйверы для основных технологий, таких как C++, Java , Go, Python, Rust и Scala
  • Предоставляет графический интерфейс для изучения и управления данными с помощью MongoDB Compass
  • Предлагает визуальное представление данных с помощью диаграмм MongoDB
  • MongoDB BI Connector обеспечивает подключение к платформам BI и аналитики

3.2. Установка

Мы можем загрузить последний сервер MongoDB или, если вы используете mac OS, мы можем установить community edition непосредственно с помощью Homebrew :

brew tap mongodb/brew
brew install [email protected]

4. Когда использовать Redis?

4.1. Кэширование

Redis обеспечивает лучшую в своем классе производительность кэширования, предоставляя субмиллисекундное время отклика на часто запрашиваемые элементы .

Кроме того, он позволяет устанавливать время истечения срока действия ключей с помощью таких команд, как EXPIRE , EXPIREAT и EXPIRE/|.

В то же время мы можем использовать команду PERSIST , чтобы удалить тайм-аут и сохранить пару ключ-значение, что делает ее идеальной для кэширования.

4.2. Гибкое Хранение Данных

Redis предоставляет различные структуры данных, такие как строка, список, набор и хэш, чтобы решить, как хранить и организовывать наши данные. Таким образом, Redis дает нам полную свободу в реализации структур баз данных.

Однако это также может потребовать много времени, чтобы продумать дизайн БД. Точно так же может быть сложно построить и поддерживать внутреннюю структуру схемы с помощью Redis.

4.3. Комплексное Хранение Данных

Аналогично, с помощью комбинации списка, набора и хэша мы можем реализовать сложные структуры данных, такие как очереди, массивы, упорядоченные наборы и графики для нашего хранилища.

4.4. Чат, Очередь и Брокер сообщений

Redis может публиковать и подписываться на сообщения, используя очереди сообщений pub/sub с сопоставлением шаблонов . Таким образом, Redis может поддерживать чат в реальном времени и приложения для социальных сетей.

Аналогично, мы можем реализовать облегченную очередь, используя структуру данных списка . Кроме того, список Redis поддерживает атомарные операции и предлагает возможности блокировки, что делает его подходящим для реализации брокера сообщений.

4.5. Хранилище сеансов

Redis предоставляет хранилище данных в памяти с возможностями сохранения, что делает его хорошим кандидатом для хранения и управления сеансами для веб -/мобильных приложений.

4.6. IoT и встроенные системы

Согласно официальной документации Redis, более новые версии, начиная с 4 и 5, поддерживают процессор ARM и Raspberry Pi .

Кроме того, он работает на Android, и предпринимаются усилия по включению Android в качестве официально поддерживаемой платформы.

Таким образом, Redis идеально подходит для Интернета вещей и встраиваемых систем, благодаря небольшому объему памяти и низким требованиям к процессору.

4.7. Обработка В Режиме Реального Времени

Будучи невероятно быстрой структурой данных в памяти, мы можем использовать ее для приложений обработки в реальном времени.

Например, Redis может эффективно обслуживать приложения, которые предлагают такие функции, как оповещения о ценах на акции, таблицы лидеров и аналитика в режиме реального времени.

4.8. Геопространственные приложения

Redis предлагает специально встроенную в память структуру данных Geo Set – построенную на отсортированном наборе – для управления геопространственными индексами. Кроме того, он предоставляет специальные команды гео, такие как GEOADD , GEOPOS и GEORADIUS для добавления, чтения и анализа геопространственных данных.

Поэтому мы можем создавать геопространственные приложения в реальном времени с функциями, основанными на местоположении, такими как время в пути и расстояние в пути, используя Redis .

5. Когда использовать MongoDB?

5.1. Динамические запросы

MongoDB предлагает мощный набор инструментов для запросов. Кроме того, он предоставляет широкий спектр гибких схем запросов, таких как поиск по географическому признаку, поиск по графам и текстовый поиск для эффективного поиска данных.

В то же время, благодаря поддержке JSON-структурированных запросов, MongoDB выглядит лучшим выбором для сценариев, в которых поиск данных и аналитика являются повседневной деятельностью.

5.2. Быстро Меняющаяся Схема

MongoDB может быть полезен на этапах проектирования и ранней реализации, когда нам требуются быстрые изменения в нашей схеме. В то же время он не делает предположений о базовых данных и оптимизирует себя, не нуждаясь в схеме.

5.3. Прототипирование и Хакатоны

Следуя структуре документов, подобной JSON, MongoDB позволяет быстро создавать прототипы, быстро интегрироваться с интерфейсными каналами и хакатонами .

В то же время это может быть полезно для младших команд, которые не хотят иметь дело со сложностями СУБД.

5.4. Каталоги

Предоставляя динамическую схему с самоописанием, MongoDB упрощает добавление продуктов, функций и рекомендаций для каталогов, таких как электронная коммерция, управление активами и инвентаризация.

Мы также можем использовать выразительные запросы в MongoDB для таких функций, как расширенный поиск и аналитика, индексируя поле или набор полей документа, структурированного в формате JSON.

5.5. Мобильные приложения

Структура документа Mongodb JSON позволяет хранить различные типы данных с различных устройств наряду с геопространственными индексами.

Кроме того, горизонтальная масштабируемость с собственным сегментированием позволяет легко масштабировать мобильное приложение. Таким образом, MongoDB может обслуживать тонны пользователей, обрабатывать петабайты данных и поддерживать сотни тысяч операций в секунду, что делает его достойным выбором для резервного копирования мобильных приложений.

5.6. Приложения с богатым контентом

Нелегко включать различные материалы в СУБД для современных приложений с богатым контентом. С другой стороны, MongoDB позволяет хранить и обслуживать богатый контент, такой как текст, аудио и видео .

Кроме того, мы можем легко хранить файлы размером более 16 МБ, эффективно используя MongoDB GridFS . Он позволяет получить доступ к части больших файлов без загрузки всего файла в память.

Кроме того, он автоматически синхронизирует ваши файлы и метаданные на всех серверах. В результате MongoDB выглядит более подходящим выбором для поддержки приложений с богатым контентом.

5.7. Игровые приложения

Подобно мобильным и содержательным приложениям, игры также требуют масштабирования и динамических структур данных. Таким образом, MongoDB может быть перспективным выбором для игровых приложений.

5.8. Служба Глобальных Облачных Баз данных

MongoDB Atlas доступен в нескольких облачных сервисах, таких как AWS, Google Cloud и Azure . Кроме того, благодаря встроенному механизму репликации и отработки отказа он предлагает высокодоступную распределенную систему. Таким образом, мы можем быстро развернуть базу данных и управлять ею, а также использовать ее в качестве глобальной облачной службы баз данных.

6. Заключение

В этой статье мы рассмотрели Redis и MongoDB как варианты для нереляционной базы данных.

Во-первых, мы рассмотрели функции, предлагаемые обеими базами данных. Затем мы изучили сценарии, в которых один из них лучше другого.

Мы, безусловно, можем заключить, что Redis выглядит многообещающе как лучшее решение для кэширования, брокера сообщений и очереди . В то же время он может оказаться полезным в обработке данных в реальном времени, геопространственных приложениях и встроенных системах.

С другой стороны, MongoDB является надежным выбором для хранения объектов, подобных JSON. В результате MongoDB лучше всего подходит для архитектуры без схем для прототипирования, современных приложений с богатым контентом, мобильных и игровых приложений.