Перейти к основному содержимому

Редис против MongoDB

· 7 мин. чтения

Задача: Наибольшая подстрока без повторений

Для заданной строки s, найдите длину наибольшей подстроки без повторяющихся символов. Подстрока — это непрерывная непустая последовательность символов внутри строки...

ANDROMEDA 42

1. Обзор

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

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

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

3.1. Функции

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

3.2. Монтаж

Мы можем загрузить последнюю версию сервера MongoDB или, если вы используете macOS, мы можем установить версию сообщества напрямую с помощью Homebrew :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.6. Интернет вещей и встроенные системы

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

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

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

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. Мобильные приложения

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

Кроме того, горизонтальная масштабируемость с собственным сегментированием позволяет легко масштабировать мобильное приложение. Таким образом, 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 может лучше всего подходить для архитектуры без схемы для прототипирования современных мобильных и игровых приложений с большим количеством контента.