🗄 Этап 5: Базы данных (SQL и NoSQL)
Любое приложение должно хранить данные. Если сервер перезагрузится, все переменные в оперативной памяти исчезнут. Нам нужно надежное хранилище. Глобально базы данных делятся на два лагеря: реляционные и нереляционные.
🏗 1. SQL (реляционные базы)
Это классика и абсолютный стандарт индустрии. Данные хранятся в строгих таблицах, которые связаны между собой.
- как это работает: представьте набор Excel-таблиц. у вас есть таблица
usersи таблицаorders. каждый заказ строго привязан к конкретному пользователю через уникальный идентификатор. - главное преимущество: транзакции. если во время сложной операции (например, перевода денег) что-то пошло не так, все изменения можно безопасно откатить назад. это критично для финансов и строгого учета.
- когда использовать: для банковских систем, интернет-магазинов, ERP — везде, где нужна строгая структура и надежность.
- что учить: postgresql (одна из самых популярных и мощных open-source баз на сегодня) или mysql.
- базовые концепции: запросы
select,insert,update,deleteи самое важное —join(объединение данных из разных таблиц).
📄 2. NoSQL (нереляционные базы)
Здесь нет строгих таблиц. Данные хранятся в виде гибких документов (очень похоже на json-объекты из javascript).
- как это работает: у пользователя может быть массив адресов, история покупок и настройки прямо внутри одной записи, без сложного разбиения по разным таблицам.
- когда использовать: для каталогов с плавающими характеристиками товаров, систем логирования, онлайн-игр.
- что учить: mongodb (главная документная база) и redis.
- важное уточнение про redis: это не обычная база, а сверхбыстрое хранилище в оперативной памяти. его используют как кэш, для хранения сессий авторизации и ускорения тяжелых запросов.
🤝 3. SQL vs NoSQL — не враги
В реальных коммерческих проектах часто используют оба подхода одновременно, подбирая инструмент под конкретную задачу.
- пример архитектуры: postgresql для основных данных (пользователи, платежи) + redis для быстрого кэша + mongodb для хранения огромных массивов неструктурированных логов.
🌉 4. Как код общается с базой: ORM
Писать чистые SQL-запросы прямо внутри кода на бэкенде — можно, но часто неудобно и медленно в разработке. Для этого используют ORM (object-relational mapping). Это библиотеки, которые превращают таблицы базы данных в удобные объекты внутри вашего кода.
- для TypeScript: prisma или typeorm.
- для Python: sqlalchemy.
- для C#: entity framework.
P.S. но все равно, я бы уделил на самом старте время чистому SQL, чтобы понимать фундаментально, что там внутри происходит. Просто имеется опция положить что-то важное/большое когда столкнетесь с оным, в процессе внедрения новых фич, просто потому что не хватает базовых знаний и не знаете, как оно работает на самом деле. ИМХО такое.
📚 Где практиковаться (бесплатные ресурсы):
- sqlbolt — шикарный интерактивный тренажер прямо в браузере (читаете теорию и сразу пишете запрос).
- postgrespro tutorial — отличные материалы по PostgreSQL.
- mongodb university — официальные курсы от создателей Mongo.