Найти в Дзене

Исследование о выборе между SQL и NoSQL..

Пролог: Кофе, осень и вопрос на миллион Октябрь в британском университете — это когда листья меняют цвет с академического зеленого на философский желтый, а воздух пахнет дождем, старыми книгами и свежесваренным кофе из студенческого кафе. Именно здесь, за столиком у окна, наблюдая за тем, как капли дождя рисуют на стекле временные диаграммы, я начал свое исследование. Мой ноутбук открыт на двадцати вкладках, вокруг — стопки распечатанных статей, а в голове — простой, казалось бы, вопрос: как выбирают между SQL и NoSQL те, кто строит цифровой мир? На соседнем столе группа инженеров-первокурсников горячо обсуждает свой стартап-проект. «Просто берем MongoDB и не паримся!» — говорит один, решительно отпивая латте. «Но как же транзакции?» — осторожно спрашивает другой, листая конспект по базам данных. Этот диалог, происходящий в десятках университетов по всему миру, и стал отправной точкой моего исследования. Методология: Исследование между лекциями Университет как живая лаборатория Мое и
Оглавление

Пролог: Кофе, осень и вопрос на миллион

Октябрь в британском университете — это когда листья меняют цвет с академического зеленого на философский желтый, а воздух пахнет дождем, старыми книгами и свежесваренным кофе из студенческого кафе. Именно здесь, за столиком у окна, наблюдая за тем, как капли дождя рисуют на стекле временные диаграммы, я начал свое исследование. Мой ноутбук открыт на двадцати вкладках, вокруг — стопки распечатанных статей, а в голове — простой, казалось бы, вопрос: как выбирают между SQL и NoSQL те, кто строит цифровой мир?

На соседнем столе группа инженеров-первокурсников горячо обсуждает свой стартап-проект. «Просто берем MongoDB и не паримся!» — говорит один, решительно отпивая латте. «Но как же транзакции?» — осторожно спрашивает другой, листая конспект по базам данных. Этот диалог, происходящий в десятках университетов по всему миру, и стал отправной точкой моего исследования.

Методология: Исследование между лекциями

Университет как живая лаборатория

Мое исследование приняло неожиданно-органичную форму. Вместо стерильных лабораторных условий — живая экосистема университета:

  • Интервью в перерывах между парами: 49 бесед со студентами компьютерных наук, от второкурсников до PhD
  • Наблюдение за учебными проектами: анализ 23 курсовых и дипломных работ
  • Неформальные дискуссии: разговоры с преподавателями у автомата с кофе
  • Эксперименты в компьютерных классах: тестирование подходов на реальных задачах

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

Часть 1: Уроки в лекционном зале

Лекция профессора Олдриджа: Историческая перспектива

«Представьте себе библиотеку, — начинает профессор Олдридж, чьи лекции по истории вычислений всегда проходят при полном аншлаге. — В 1970-х мы только учились расставлять книги по полкам систематически. Эдгар Кодд предложил нам картотеку — реляционную модель».

Его руки рисуют в воздухе невидимые таблицы. «SQL — это язык библиотекаря, который знает, где каждая книга, как они связаны и как найти „все романы XIX века о морских приключениях, которые брали студенты факультета философии“».

За окном проходят студенты с ноутбуками, на наклейках которых — логотипы Redis и Cassandra. «А теперь, — продолжает профессор, — представьте, что ваша библиотека — это поток твитов, видео в TikTok или показания датчиков умного города. Полки ломаются. Нужны новые подходы».

После лекции я подхожу к профессору с вопросом, который мучает меня неделю: «Так что же выбрать?» Он улыбается, поправляет очки: «Молодой человек, это как спросить, что лучше — молоток или пила. Зависит от того, строите ли вы дом или делаете скворечник».

Часть 2: Студенческие проекты — поле битвы парадигм

Наблюдение 1: Стартап-акселератор

В университетском стартап-инкубаторе команда из трех студентов строит приложение для обмена конспектами. Их технический лидер, Амина из Пакистана, показывает мне архитектуру: «Мы начали с Firebase, но когда добавили систему рейтингов и рекомендаций — всё сломалось».

Они мигрировали на PostgreSQL, но теперь страдают от сложностей с горизонтальным масштабированием. «Мы как будто пересаживаем растущее растение из горшка в горшок, — говорит Амина. — Каждый раз — стресс».

Наблюдение 2: Исследовательская группа по машинному обучению

В подвале компьютерного факультета, где пахнет пылью и озоном от серверов, PhD-студент Марк работает с графовыми базами данных. «Для социального графа университета — кто с кем учился, какие курсы брал, в каких клубах состоял — Neo4j идеален, — объясняет он, показывая визуализацию связей между студентами. — Попробуй сделать это в SQL — нужны десятки джойнов».

Но его коллега Лиза, работающая над прогнозированием успеваемости, использует классический PostgreSQL: «Мне нужна статистика, агрегации, оконные функции. NoSQL для этого — как пытаться приготовить сложное блюдо только микроволновкой».

Часть 3: Кофейные инсайты

Диалог у эспрессо-машины

«Проблема в образовании, — говорит мне за чашкой кофе ассистент преподавателя, сам недавний выпускник. — Нас учат SQL как догме, а про NoSQL упоминают в последнюю неделю семестра как что-то „альтернативное“. Но в реальности всё наоборот».

Он показывает мне код своего последнего проекта: «Я использую PostgreSQL для основной базы, Redis для кэша сессий, и Elasticsearch для поиска. Это полиглотная реальность».

Именно эта фраза — «полиглотная реальность» — становится ключевой для моего исследования.

Часть 4: Данные в дикой природе — университет как пример

Эксперимент: Моделируем университет

Я решаю смоделировать наш университет в разных базах данных:

В PostgreSQL:

CREATE TABLE students (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
faculty_id INT,
enrolled_date DATE
);

CREATE TABLE courses (
id SERIAL PRIMARY KEY,
title VARCHAR(200),
credits INT
);

-- И так далее, 15 таблиц с отношениями

В MongoDB:

{
"student_id": "12345",
"name": "Александр Петров",
"faculty": "Computer Science",
"courses": [
{
"title": "Базы данных",
"grade": "A",
"sessions": ["2024-10-01", "2024-10-08"]
}
],
"extracurricular": {
"clubs": ["Chess", "Debating"],
"mentor": "student_67890"
}
}

Выводы после недели экспериментов:

  1. Административные функции (регистрация на курсы, учет посещаемости) — идеально ложатся на SQL
  2. Социальная сеть кампуса — естественнее в документной или графовой базе
  3. Аналитика успеваемости — требует сложных SQL-запросов
  4. Кэширование расписаний в реальном времени — идеально для Redis

Университет, как и большинство современных приложений, не монолит, а экосистема, требующая разных инструментов.

Продолжение следует...