Найти в Дзене
Код на Пальцах

NoSQL базы данных: MongoDB, Redis, Cassandra, DynamoDB

Создание документа: Поиск документов: Обновление документов: Удаление документов: Создание ключа со значением: Получение значения по ключу: Добавление элемента в список: Инкрементирование ключа: Удаление ключа: Создание таблицы: Добавление данных: Поиск данных: Обновление данных: Удаление данных: Запросы в DynamoDB выполняются через DynamoDB API, но также поддерживается язык запросов PartiQL (похож на SQL). Создание таблицы: Добавление данных: Поиск данных: Обновление данных: Удаление данных:
Оглавление

MongoDB

-2

Архитектура

  • MongoDB — это документоориентированная NoSQL база данных, где данные хранятся в виде документов, обычно в формате BSON (расширение JSON).
  • Структура данных гибкая — каждый документ может иметь свою схему.
  • MongoDB использует коллекции для группировки документов. Коллекции аналогичны таблицам в реляционных базах данных, но они не требуют заранее заданной схемы.
  • Поддерживает горизонтальное масштабирование через шардирование (разделение данных на части и хранение на разных серверах).

Синтаксис запросов

  • Основные операции выполняются через MongoDB Query Language (MQL).
  • Запросы формулируются как объекты JSON, что делает их интуитивно понятными.

Создание документа:

-3

Поиск документов:

-4

Обновление документов:

-5

Удаление документов:

-6

Сценарии применения MongoDB

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

Redis

-7

Архитектура

  • Redis — это in-memory база данных ключ-значение с возможностью хранения данных на диске для их постоянства.
  • Данные хранятся в оперативной памяти, что обеспечивает очень быструю работу.
  • Поддерживает различные структуры данных: строки, списки, множества, хеши, упорядоченные множества и битовые поля.
  • Redis также поддерживает механизмы публикации и подписки (Pub/Sub), транзакции и механизм блокировок.

Синтаксис запросов

  • Операции Redis выполняются через набор команд, которые взаимодействуют с ключами и значениями.

Создание ключа со значением:

-8

Получение значения по ключу:

-9

Добавление элемента в список:

-10

Инкрементирование ключа:

-11

Удаление ключа:

-12

Сценарии применения Redis

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

Apache Cassandra

-13

Архитектура

  • Apache Cassandra — это распределенная колоночная база данных, которая поддерживает горизонтальное масштабирование и отказоустойчивость.
  • Основной принцип работы — хранение данных по ключу, где каждая строка может иметь различные столбцы (динамическая схема).
  • Поддерживает репликацию данных на нескольких узлах, что гарантирует высокую доступность и отказоустойчивость.
  • Масштабируется горизонтально путем добавления новых узлов, что позволяет легко работать с большими объемами данных.

Синтаксис запросов

  • Используется собственный язык запросов Cassandra Query Language (CQL) , который похож на SQL.

Создание таблицы:

-14

Добавление данных:

-15

Поиск данных:

-16

Обновление данных:

-17

Удаление данных:

-18

Сценарии применения Cassandra

  • Cassandra используется в системах, где важны высокая производительность и отказоустойчивость, таких как IoT, потоковые данные, аналитика.
  • Благодаря своей масштабируемости и распределенности, подходит для приложений с большими объемами данных, например, в банкинге, телекоммуникациях, и e-commerce.

DynamoDB

-19

Архитектура

  • DynamoDB — это облачная NoSQL база данных от Amazon, которая реализует модель ключ-значение и модель таблиц.
  • Полностью управляемая база данных с автоматическим масштабированием, балансировкой нагрузки и резервным копированием.
  • Каждая таблица состоит из элементов (аналог строк), которые хранят пары ключ-значение и могут содержать вложенные структуры (например, списки или хэши).
  • DynamoDB использует автоскейлинг, что позволяет динамически регулировать емкость чтения и записи.

Синтаксис запросов

Запросы в DynamoDB выполняются через DynamoDB API, но также поддерживается язык запросов PartiQL (похож на SQL).

Создание таблицы:

-20

Добавление данных:

-21

Поиск данных:

-22

Обновление данных:

-23

Удаление данных:

-24

Сценарии применения DynamoDB

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

Сравнение MongoDB, Redis, Cassandra и DynamoDB

Тип хранилища:

  • MongoDB — документно-ориентированная база данных, поддерживающая хранение данных в формате JSON/BSON.
  • Redis — база данных типа ключ-значение, использующая структуру данных для быстрой обработки информации в памяти.
  • Cassandra — колоночная база данных, предназначенная для обработки больших объемов данных с динамической схемой.
  • DynamoDB — гибридная модель базы данных, совмещающая формат ключ-значение и табличную структуру.

Масштабируемость:

  • MongoDB — горизонтально масштабируется через шардирование.
  • Redis — в основном вертикально масштабируется, с возможностью кластеризации для увеличения производительности.
  • Cassandra — также горизонтально масштабируется, поддерживая шардирование для распределения данных.
  • DynamoDB — предлагает автоматическое масштабирование под текущую нагрузку.

Скорость обработки данных:

  • MongoDB — показывает высокую скорость, но производительность зависит от конфигурации кластера и объема данных.
  • Redis — чрезвычайно высокая скорость, так как данные обрабатываются в оперативной памяти.
  • Cassandra — также быстрая при работе с большими объемами данных, особенно в аналитических задачах.
  • DynamoDB — демонстрирует высокую производительность, которая зависит от интенсивности нагрузки.

Структура данных:

  • MongoDB — гибкая структура документов, основанная на JSON/BSON, что позволяет хранить полуструктурированные данные.
  • Redis — структура данных ограничена типом ключ-значение, но также поддерживает сложные структуры, такие как списки, множества и хеши.
  • Cassandra — использует колоночную структуру с динамической схемой, оптимизированной для аналитических запросов.
  • DynamoDB — поддерживает структуру ключ-значение с возможностью вложенных структур, удобную для работы с высоконагруженными приложениями.

Применение:

  • MongoDB — используется для хранения полуструктурированных данных, таких как JSON-документы, и подходит для разнообразных веб-приложений.
  • Redis — идеален для задач кэширования и приложений реального времени благодаря сверхвысокой скорости работы.
  • Cassandra — подходит для аналитики, IoT, и обработки больших объемов данных в распределенных системах.
  • DynamoDB — ориентирован на облачные приложения с высокой нагрузкой и автоматическим масштабированием, часто используется в проектах AWS.

Типовая нагрузка:

  • MongoDB — оптимизирован для работы со сложными структурами данных и выполнения сложных запросов.
  • Redis — справляется с высокочастотными операциями по ключам, требующими минимальной задержки.
  • Cassandra — хорошо подходит для чтения и обработки больших объемов данных в распределенной среде.
  • DynamoDB — эффективен для высоконагруженных приложений, так как поддерживает автоскейлинг и балансировку нагрузки.