MongoDB Academy · Урок

Узкое место реляционных баз данных

Вы определите проблемы масштабирования и гибкости SQL-баз данных, которые привели к появлению движения NoSQL.

Урок 1 из 413 шагов

«Узкое место реляционных баз данных» — бесплатный урок MongoDB Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения MongoDB Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс MongoDB Academy содержит 4 уроков всего.

The Rise of Relational Databases

На протяжении десятилетий реляционные базы данных, такие как MySQL и PostgreSQL, были лидерами. Они хранят данные в аккуратных таблицах со строками и столбцами, и они отлично работают. Так зачем искать что-то еще?

The Rigid Schema Problem

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

-- Adding a column to a large table in PostgreSQL can be slow
ALTER TABLE users ADD COLUMN preferences JSONB;
-- On 100M rows this may require a full table rewrite
-- and blocks reads/writes for minutes

Scaling Up vs. Scaling Out

Для роста SQL обычно масштабируется вертикально — за счет более мощного и дорогого сервера. Но у этого есть предел. Современным приложениям необходимо горизонтальное масштабирование на множество машин, с чем SQL справляется с трудом.

JOIN Performance at Scale

SQL распределяет данные по таблицам и объединяет их с помощью JOIN. Это отлично работает с небольшими объемами, но при работе с огромными данными объединение пяти таблиц в одном запросе замедляет его выполнение.

-- A typical normalized SQL query joining 4 tables
SELECT o.id, c.name, p.title, oi.quantity
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN order_items oi ON oi.order_id = o.id
JOIN products p ON p.id = oi.product_id
WHERE o.status = 'pending';

The High-Traffic Write Problem

SQL блокирует строки, чтобы обеспечить сохранность данных с помощью ACID-транзакций. Это отлично подходит для банков, но такие блокировки становятся проблемой, когда требуется выполнять миллионы операций записи в секунду.

Unstructured and Semi-Structured Data

Веб полон полуструктурированных данных, таких как неорганизованный JSON. Попытки втиснуть их в фиксированные столбцы приводят к появлению множества пустых полей или неудобных «костылей».

-- EAV table: flexible but awkward to query
CREATE TABLE product_attributes (
  product_id INT,
  attr_name  VARCHAR(50),
  attr_value VARCHAR(200)
);
-- Querying all electronics by voltage is painful:
SELECT * FROM product_attributes
WHERE attr_name = 'voltage' AND CAST(attr_value AS INT) > 100;

The Internet Scale Wake-Up Call

Примерно в 2006 году Google и Amazon столкнулись с серьезными проблемами масштабируемости и опубликовали свои решения. Это послужило толчком к новой волне: появлению NoSQL-баз данных, созданных для масштабов интернета.

What NoSQL Does Differently

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

When RDBMS Still Wins

SQL по-прежнему лидирует во многих областях: финансовые транзакции, сложные отчеты и стабильные данные. Большинство приложений никогда не перерастают хорошо настроенную базу данных PostgreSQL. Используйте подходящий инструмент для конкретной задачи!

The Document Model as a Solution

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

// A MongoDB document stores related data together
{
  _id: ObjectId('...'),
  name: 'Alice',
  email: 'alice@example.com',
  address: { city: 'London', zip: 'EC1A' },
  tags: ['premium', 'newsletter'],
  createdAt: ISODate('2024-01-15')
}

Horizontal Scaling Is Built In

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

Quick Check

Проверьте свое понимание концепций MongoDB и баз данных NoSQL из этого урока.

Lesson Recap

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

Можно начать бесплатно

Изучай JavaScript с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Узкое место реляционных баз данных» бесплатный?

Да — полный текст урока «Узкое место реляционных баз данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс MongoDB Academy, подпишись на CoddyKit PRO. Курс MongoDB Academy содержит 4 уроков всего.

Чему я научусь в уроке «Узкое место реляционных баз данных»?

Вы определите проблемы масштабирования и гибкости SQL-баз данных, которые привели к появлению движения NoSQL. Ты практикуешь MongoDB Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать MongoDB Academy?

Предыдущий опыт не требуется. MongoDB Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Узкое место реляционных баз данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке MongoDB Academy?

Да. Каждый урок MongoDB Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Узкое место реляционных баз данных
  2. Разновидности NoSQL: документы, ключи и значения, столбцы, графы
  3. Теорема CAP простыми словами
  4. Место MongoDB среди других баз данных
← Назад к MongoDB Academy