Node.jsМодуль 5: Базы данных
Введение в базы данных
SQL vs NoSQL, выбор базы данных
Цель урока
В этом уроке ты научишься:
- Различать SQL и NoSQL базы данных
- Выбирать подходящую базу данных
- Понимать основные концепции
SQL vs NoSQL
SQL (реляционные)
Данные хранятся в таблицах со строгой схемой.
-- Таблица users
+----+--------+------------------+
| id | name | email |
+----+--------+------------------+
| 1 | Иван | ivan@example.com |
| 2 | Мария | maria@example.com|
+----+--------+------------------+Примеры: PostgreSQL, MySQL, SQLite
Преимущества:
- Строгая схема данных
- ACID транзакции
- Сложные запросы (JOIN)
- Целостность данных
NoSQL (нереляционные)
Данные хранятся в документах, ключ-значение или графах.
// Документ в MongoDB
{
"_id": "507f1f77bcf86cd799439011",
"name": "Иван",
"email": "ivan@example.com",
"posts": [
{ "title": "Первый пост", "likes": 10 }
]
}Примеры: MongoDB, Redis, Cassandra
Преимущества:
- Гибкая схема
- Горизонтальное масштабирование
- Высокая производительность
- Простота разработки
Сравнение
| Критерий | SQL | NoSQL |
|---|---|---|
| Схема | Строгая | Гибкая |
| Масштабирование | Вертикальное | Горизонтальное |
| Транзакции | ACID | BASE (eventual consistency) |
| Связи | JOIN | Вложенные документы |
| Запросы | SQL | Специфичные для БД |
Когда использовать
SQL (PostgreSQL, MySQL)
- Финансовые приложения
- Сложные связи между данными
- Требуется целостность данных
- Аналитика и отчёты
NoSQL (MongoDB)
- Быстрый прототип
- Гибкая структура данных
- Большие объёмы данных
- Real-time приложения
Redis (ключ-значение)
- Кэширование
- Сессии пользователей
- Rate limiting
- Очереди задач
Популярные ORM/ODM
Для SQL
| Библиотека | Описание |
|---|---|
| Prisma | Современный ORM с TypeScript |
| Sequelize | Популярный ORM |
| TypeORM | ORM для TypeScript |
| Knex.js | Query builder |
Для MongoDB
| Библиотека | Описание |
|---|---|
| Mongoose | Популярный ODM |
| MongoDB Driver | Официальный драйвер |
Практика
Задание: Выбор БД
Задача: Какую БД выбрать для:
- Интернет-магазин
- Социальная сеть
- Система кэширования
Ответ:
- PostgreSQL — товары, заказы, транзакции
- MongoDB — гибкие профили, посты
- Redis — быстрый доступ к данным
Проверь себя
- Что такое ACID?
- Когда лучше использовать MongoDB?
- Для чего используют Redis?