Найти в Дзене

2-я часть

После лекции о распределенных системах я спрашиваю у инженера из Google: «Как вы принимаете решение?» «Мы смотрим на три вещи, — отвечает он, рисуя на салфетке. — Во-первых, паттерны доступа: как часто пишем, как часто читаем, нужны ли сложные запросы. Во-вторых, требования к целостности: можно ли потерять лайк в соцсети? Нет. Можно ли на секунду увидеть устаревший профиль? Да. В-третьих, масштабирование: растут ли данные равномерно или есть „горячие“ точки». Самое интересное: он признается, что 70% их внутренних систем используют реляционные базы. «NoSQL — для специфических случаев, а не для всего подряд». Опрос 112 студентов показывает: История команды, разрабатывающей мобильное приложение: «Мы думали, MongoDB решит все проблемы. Но когда понадобились транзакции для оплаты курсов... — студент делает драматическую паузу, — пришлось реализовывать их вручную. Это было больно». Шаг 1: Начните с вопроса «Что?», а не «Как?»
Не «Какую базу взять?», а «Что за данные?». Структурированные, с
Оглавление

Часть 5: Интеллектуальное кафе — дискуссии с экспертами

Беседа с приглашенным лектором из Google

После лекции о распределенных системах я спрашиваю у инженера из Google: «Как вы принимаете решение?»

«Мы смотрим на три вещи, — отвечает он, рисуя на салфетке. — Во-первых, паттерны доступа: как часто пишем, как часто читаем, нужны ли сложные запросы. Во-вторых, требования к целостности: можно ли потерять лайк в соцсети? Нет. Можно ли на секунду увидеть устаревший профиль? Да. В-третьих, масштабирование: растут ли данные равномерно или есть „горячие“ точки».

Самое интересное: он признается, что 70% их внутренних систем используют реляционные базы. «NoSQL — для специфических случаев, а не для всего подряд».

Часть 6: Студенческие открытия

Инсайт 1: Образовательный разрыв

Опрос 112 студентов показывает:

  • 89% уверенно пишут SQL-запросы
  • Только 34% имели опыт работы с NoSQL
  • 67% считают, что учебная программа устарела
  • 95% хотели бы больше практики с современными системами

Инсайт 2: Миф о «простоте» NoSQL

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

Часть 7: Практические рекомендации для таких же студентов, как я

Алгоритм выбора за 4 шага

Шаг 1: Начните с вопроса «Что?», а не «Как?»
Не «Какую базу взять?», а «Что за данные?». Структурированные, связанные, с четкой схемой? SQL. Разнородные, иерархические, со меняющейся структурой? NoSQL.

Шаг 2: Прототипируйте на бумаге
Нарисуйте свои данные в виде таблиц (SQL-стиль) и в виде документов/графов (NoSQL-стиль). Что выглядит естественнее?

Шаг 3: Учебный проект — ваш полигон
Попробуйте реализовать один и тот же проект с разными базами. Для курсовой — используйте PostgreSQL. Для хакатона — попробуйте Firebase или MongoDB.

Шаг 4: Примите полиглотность как норму
Современное приложение редко использует одну базу. Основные данные — в PostgreSQL, кэш — в Redis, полнотекстовый поиск — в Elasticsearch.

Часть 8: Философское отступление среди книжных полок

Библиотека как метафора

Блуждая между стеллажами университетской библиотеки, я понимаю: SQL — это каталогизированная библиотека с системой Десятичной Дьюи. Всё на своих местах, можно найти по автору, теме, году.

NoSQL — это лента Instagram или поток твитов. Новое приходит, старое уходит в архив, связи не всегда очевидны.

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

Эпилог: Возвращение к кофе и дождю

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

Что я понял за эти недели блужданий по университетским коридорам, разговоров у кофемашин, наблюдений за студенческими проектами?

Главный вывод удивительно прост: не существует священной войны SQL vs NoSQL. Есть разные инструменты для разных задач. Самый опасный подход — религиозный фанатизм в пользу одной технологии.

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

На прощание я оставляю на доске объявлений компьютерного факультета заметку:

«Дорогие сокурсники!

Не спрашивайте „SQL или NoSQL?“. Спрашивайте:

  1. Какие данные я храню?
  2. Как их будут использовать?
  3. Как они будут расти?
  4. Что важнее: гибкость или целостность?

А потом берите нужный инструмент. Или несколько.

P.S. И да, сначала проектируйте, потом implementируйте. Спросите меня, откуда я знаю».

Дождь усиливается. Я собираю вещи, бросаю последний взгляд на свой «исследовательский уголок». Завтра — новая лекция, новый проект, новые вопросы. Но теперь у меня есть компас для навигации в мире баз данных. И он показывает не на север или юг, а на «это зависит».

И это, пожалуй, самый ценный урок из всех.