JavaRush /Курсы /Модуль 4: FastAPI /Введение в NoSQL базы данных: особенности и использование...

Введение в NoSQL базы данных: особенности и использование

Модуль 4: FastAPI
8 уровень , 0 лекция
Открыта

В реальном мире не все проекты идеально укладываются в рамки реляционных СУБД. Сегодня мы выходим за пределы привычного SQL-мира и начинаем изучать NoSQL базы данных.

NoSQL — отрицание SQL? Не спешите с выводами. Эта аббревиатура расшифровывается как Not Only SQL. Это означает, что такие базы данных не ограничиваются классическим подходом реляционных систем, где используются таблицы, строки, колонки и строгая схема. Они предназначены для работы с другими моделями данных, такими как документы, графы, ключ-значение и другие подходы.

Если сравнивать базы данных с коробками для хранения вещей, то реляционные базы — это коробки с чётко размеченными ячейками под каждый предмет. А NoSQL базы — это коробки "собери сам", где можно раскидать всё как угодно, главное — найти потом.

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

NoSQL базы данных: типы, плюсы и минусы

  • Документоориентированные — данные хранятся в виде JSON/BSON-документов, удобно для вложенных структур.
    Пример: MongoDB
  • Ключ-значение — простая пара ключ: значение, отлично подходит для кэшей.
    Пример: Redis
  • Графовые — данные представлены как узлы и связи; идеальны для соцсетей и рекомендаций.
    Пример: Neo4j
  • Колонноориентированные — хранят данные по столбцам, эффективны в аналитике.
    Пример: Cassandra

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

Недостатки: без строгой структуры — возможен хаос. С транзакциями часто беда. Нет общего языка запросов — у каждой БД свой синтаксис.


Когда использовать NoSQL базы данных?

Реляционные базы данных удобны, когда нужна строгая структура, такие как банковские приложения или ERP-системы. Однако в реальном мире бывают задачи, где реляционная модель не подходит:

  1. Большие объёмы данных с высокой скоростью записи.
    Например, сбор событий в реальном времени, таких как клики пользователей на сайте. Предположим, ваш сайт собирает 1 миллион событий в минуту — попробуйте успеть сохранить это в PostgreSQL без потери данных.
  2. Хранение несвязанных данных разной структуры.
    Представьте интернет-магазин, в котором есть товары с разными характеристиками: телефон с камерами и объёмом памяти или книга с количеством страниц. Заносить такие данные в одну таблицу сложно. В NoSQL можно просто записать это как JSON-документы.
  3. Кэширование данных для быстрого доступа.
    Redis — пример базы ключ-значение, которая идеально подходит для временного хранения информации, например, данных сессий пользователей.
  4. Социальные сети и графовые структуры.
    В социальной сети, где есть пользователи и их связи, проще работать с графами. В этом случае каждая взаимосвязь (например, "пользователь А в друзьях у пользователя B") — это отдельный объект.
  5. Гибкость при изменении структуры данных.
    В стартапах или динамично развивающихся проектах структура данных постоянно меняется. Например, добавление нового поля к моделям данных в реляционных базах потребует миграции, в то время как MongoDB позволит просто добавить это поле в новый документ.

Основные концепции NoSQL

Практически каждая NoSQL база данных представляет данные так, чтобы они легко ассоциировались с объектами из реального мира.

  • Документ — это автономная единица данных. В MongoDB документ обычно представлен в формате JSON или BSON (бинарный JSON).
    Пример документа:
    {
        "id": 1,
        "name": "Alice",
        "age": 25,
        "interests": ["Python", "FastAPI"]
    }
  • Коллекция — это набор документов с похожими данными. Например, коллекция users может содержать все документы о пользователях приложения.

Денормализация данных

Если в реляционных базах данных мы «нормализуем» данные (распределяем их по разным таблицам с ключами и связями), то в NoSQL часто используется противоположный подход — денормализация. Это означает, что данные в одном документе могут содержать всю необходимую информацию.

Пример: вместо таблиц пользователей и их заказов мы можем сохранить всё в одном документе:

{
    "user_id": 123,
    "name": "John Doe",
    "orders": [
        {"order_id": 1, "item": "Book", "price": 10.99},
        {"order_id": 2, "item": "Pen", "price": 1.5}
    ]
}

Это упрощает чтение данных, но может увеличить объём хранящейся информации.

Горизонтальное масштабирование

Одна из причин, почему выбирают NoSQL базы данных — это возможность масштабирования "вширь". В реляционных базах данных масштабирование часто происходит "вглубь" (добавление ресурсов на одном сервере). На практике добавлять сервера и распределять данные между ними проще, чем апгрейдить существующий сервер.


Почему программисты любят NoSQL?

Если вы когда-либо ловили себя на мысли "Вот бы мне JSON засунуть в базу и не мучиться!" — поздравляю, вы нашли своё новое счастье. Документоориентированные базы идеально подходят разработчикам, которые хотят минимизировать преобразование данных между Python-объектами и базой. Это ускоряет разработку и снижает сложность многих мелких задач.

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

Пока что постарайтесь осознать одну вещь: в мире баз данных нет универсального подхода. NoSQL — это не замена SQL, а скорее удобный инструмент для специфических задач, который стоит добавить в ваш арсенал.

1
Задача
Модуль 4: FastAPI, 8 уровень, 0 лекция
Недоступна
Создание примера JSON-документа
Создание примера JSON-документа
1
Задача
Модуль 4: FastAPI, 8 уровень, 0 лекция
Недоступна
Использование денормализации для хранения данных
Использование денормализации для хранения данных
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ