Узкое место реляционных баз данных
Вы определите проблемы масштабирования и гибкости SQL-баз данных, которые привели к появлению движения NoSQL.
«Узкое место реляционных баз данных» — бесплатный урок 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 minutesScaling 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 — локальная установка не требуется.
Все уроки этого курса
- Узкое место реляционных баз данных
- Разновидности NoSQL: документы, ключи и значения, столбцы, графы
- Теорема CAP простыми словами
- Место MongoDB среди других баз данных