Эта статья - не про «как написать
SELECT, а про настоящую инженерную работу: принципы нормализации, дизайн схем, практики оптимизации SQL, работа с транзакциями, и главное - как выбрать и использовать ORM так, чтобы он помогал, а не мешал.Если тебе нужен инструмент, который выдержит рост проекта и не взорвётся через год, здесь ты найдёшь системный подход, проверенные шаблоны и практические примеры, которым уже доверяют зрелые инженерные команды.
Готовы? Тогда начинаем строить архитектуру, которую не стыдно масштабировать.
https://uproger.com/sql-bolshoj-gajd-kak-pravilno-vybrat-orm/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Производительные или и выгодные базы данных в облаке
Безопасные, масштабируемые и отказоустойчивые базы данных — одна из ключевых потребностей любого проекта. Именно такие предлагает Selectel. СУБД под разные запросы: от универсальной PostgreSQL до поисковой и аналитической БД Opensearch
Новые клиенты сейчас могут получить до 30 000 бонусов на использование облачных баз данных Selectel. Провайдер гарантирует:
🔹Высокую производительность. Выбирайте оптимальную конфигурацию кластера на базе мощного железа и локальных NVMe-дисков.
🔹Надежность. Автоматические бесплатные бэкапы с восстановлением вплоть до секунды — на стороне Selectel. А создать отказоустойчивый кластер можно всего от двух нод и сэкономить до 33%.
🔹Гибкое масштабирование. При росте нагрузки можно поменять конфигурацию облачного сервера и количество реплик без простоя.
Успейте зарегистрироваться и оставить заявку на участие в акции, чтобы протестировать сервис бесплатно: https://slc.tl/y7zta
Реклама. АО "Селектел". erid:2W5zFH92NVE
Безопасные, масштабируемые и отказоустойчивые базы данных — одна из ключевых потребностей любого проекта. Именно такие предлагает Selectel. СУБД под разные запросы: от универсальной PostgreSQL до поисковой и аналитической БД Opensearch
Новые клиенты сейчас могут получить до 30 000 бонусов на использование облачных баз данных Selectel. Провайдер гарантирует:
🔹Высокую производительность. Выбирайте оптимальную конфигурацию кластера на базе мощного железа и локальных NVMe-дисков.
🔹Надежность. Автоматические бесплатные бэкапы с восстановлением вплоть до секунды — на стороне Selectel. А создать отказоустойчивый кластер можно всего от двух нод и сэкономить до 33%.
🔹Гибкое масштабирование. При росте нагрузки можно поменять конфигурацию облачного сервера и количество реплик без простоя.
Успейте зарегистрироваться и оставить заявку на участие в акции, чтобы протестировать сервис бесплатно: https://slc.tl/y7zta
Реклама. АО "Селектел". erid:2W5zFH92NVE
❤1
Когда нужно взять по одному самому свежему событию на пользователя, не делай вложенные подзапросы с MAX и лишние JOIN, используй оконную функцию ROW_NUMBER по разделу и упорядочиванию, так запрос будет понятнее и часто быстрее на реальных данных.
SELECT *
FROM (
SELECT
user_id,
event_type,
created_at,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY created_at DESC
) AS rn
FROM events
) t
WHERE rn = 1;
-- Для каждого user_id вернется только самое последнее событие
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🤨2
🚀 SQL-совет:
Используйте computed (вычисляемые) колонки и индексы по ним, когда ваши запросы постоянно фильтруют или сортируют по функции.
Запросы становятся мгновенно быстрее, а индекс используется эффективно.
Очень немногие разработчики знают и применяют этот трюк, но он спасает производительность на реальных системах.
Используйте computed (вычисляемые) колонки и индексы по ним, когда ваши запросы постоянно фильтруют или сортируют по функции.
Плохо:
WHERE LOWER(email) = 'user@mail.com'
Это ломает индекс — оптимизатор не может его использовать.
Лучше:
ALTER TABLE users
ADD email_lower AS LOWER(email) STORED;
CREATE INDEX idx_users_email_lower ON users(email_lower);
Теперь:
WHERE email_lower = 'user@mail.com'
Запросы становятся мгновенно быстрее, а индекс используется эффективно.
Очень немногие разработчики знают и применяют этот трюк, но он спасает производительность на реальных системах.
👍7❤2🔥2
🚀 Новый продвинутый планировщик заданий для PostgreSQL - лучше, чем cron
Если устал от cron и временных триггеров, обрати внимание на pg_timetable:
✅ Сильный: гибкий, надёжный, с богатым функционалом
✅ Легко настраивается, понятен и прозрачен
✅ Позволяет:
• запускать SQL-задачи по расписанию
• отслеживать их статус и history
• обеспечивать graceful restart и защиту от сбоев
Идеален для рабочих баз, сложной логики задач и критичных приложений.
📦 Репозиторий: https://github.com/cybertec-postgresql/pg_timetable
#golang #postgresql #devops #golang
Если устал от cron и временных триггеров, обрати внимание на pg_timetable:
✅ Сильный: гибкий, надёжный, с богатым функционалом
✅ Легко настраивается, понятен и прозрачен
✅ Позволяет:
• запускать SQL-задачи по расписанию
• отслеживать их статус и history
• обеспечивать graceful restart и защиту от сбоев
Идеален для рабочих баз, сложной логики задач и критичных приложений.
📦 Репозиторий: https://github.com/cybertec-postgresql/pg_timetable
#golang #postgresql #devops #golang
❤5👍4🥰1
🔥 На stepik вышел курс, который учит Создавать настоящие AI-сервисы, а не просто запускать скрипты?
Этот практический курс по Python и FastAPI покажет, как собрать полноценное приложение с ИИ, базой данных, автогенерацией контента и Telegram-ботом.
Ты пройдёшь путь от первого HTTP-запроса до рабочего сервиса, который сам генерирует текст через ИИ, сохраняет данные, отправляет результаты по расписанию и отвечает пользователям.
Никакой теории ради теории - только практические шаги, из которых рождается реальный продукт.
🎁 48 часов действует скидка в 40% процентов
👉 Начать учиться на Stepik
Этот практический курс по Python и FastAPI покажет, как собрать полноценное приложение с ИИ, базой данных, автогенерацией контента и Telegram-ботом.
Ты пройдёшь путь от первого HTTP-запроса до рабочего сервиса, который сам генерирует текст через ИИ, сохраняет данные, отправляет результаты по расписанию и отвечает пользователям.
Никакой теории ради теории - только практические шаги, из которых рождается реальный продукт.
🎁 48 часов действует скидка в 40% процентов
👉 Начать учиться на Stepik
❤3👍2🔥1😁1
В этом руководстве мы рассмотрим ключевые аспекты работы с SQL на практике. Начнём с сравнения популярных СУБД, затем перейдём к продвинутым приёмам аналитического SQL, оптимизации запросов, администрированию баз данных, и закончится всё интеграцией SQL с Python (SQLAlchemy, pandas и т.д.).
Для каждого раздела приведены примеры на реальных сценариях (интернет-магазин, CRM, аналитика продаж), код и полезные советы.
👉 Читать гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
SQL-совет 💡
Если в запросе используется
❌ Часто медленно:
✅ Обычно быстрее и безопаснее:
Почему это важно:
-
-
- Лучше масштабируется на больших данных
- Меньше сюрпризов с NULL
Особенно критично в PostgreSQL, MySQL и Oracle на больших таблицах.
Если в запросе используется
IN (subquery) - почти всегда выгоднее заменить его на EXISTS.❌ Часто медленно:
SELECT *
FROM orders o
WHERE o.user_id IN (
SELECT u.id FROM users u WHERE u.country = 'US'
);
✅ Обычно быстрее и безопаснее:
SELECT *
FROM orders o
WHERE EXISTS (
SELECT 1
FROM users u
WHERE u.id = o.user_id
AND u.country = 'US'
);
Почему это важно:
-
IN может материализовать подзапрос целиком -
EXISTS работает как semi-join и рано останавливается - Лучше масштабируется на больших данных
- Меньше сюрпризов с NULL
Особенно критично в PostgreSQL, MySQL и Oracle на больших таблицах.
👍6❤3🔥3🤔1
SQL хитрый совет для про 💡
Используй
❌ Как делают обычно:
✅ Как делают профи:
Почему это важно:
- меньше вычислений внутри агрегаций
- оптимизатору проще строить план
- код короче и легче поддерживать
- особенно эффективно в аналитических запросах
Где работает:
- PostgreSQL
- SQLite (частично)
- DuckDB
- ClickHouse (через аналоги)
Мелочь, но именно из таких мелочей складывается SQL уровня senior.
Используй
COUNT(*) FILTER вместо CASE WHEN — быстрее, чище и читаемее.❌ Как делают обычно:
SELECT
COUNT(CASE WHEN status = 'success' THEN 1 END) AS success_cnt,
COUNT(CASE WHEN status = 'error' THEN 1 END) AS error_cnt
FROM events;
✅ Как делают профи:
Копировать код
SELECT
COUNT(*) FILTER (WHERE status = 'success') AS success_cnt,
COUNT(*) FILTER (WHERE status = 'error') AS error_cnt
FROM events;
Почему это важно:
- меньше вычислений внутри агрегаций
- оптимизатору проще строить план
- код короче и легче поддерживать
- особенно эффективно в аналитических запросах
Где работает:
- PostgreSQL
- SQLite (частично)
- DuckDB
- ClickHouse (через аналоги)
Мелочь, но именно из таких мелочей складывается SQL уровня senior.
👍10❤3🔥1
Представь фэнтези-мир, где заклинания - это SQL-запросы, а древние артефакты спрятаны в таблицах и JSON-документах.
🧙Ты - боевой дата-аналитик, который с помощью SQL, Python, ETL и визуализаций охотится за харизматичным злодеем Архивариусом Пакостусом, что ломает индексы, крадёт данные и готовит “шторм данных” на столицу.🔮
В каждом эпизоде тебя ждут: выборы с последствиями, хитрые задачи от простых SELECT до рекурсивных CTE и BigQuery, юмор, эпик и неожиданные повороты.
Хочешь проверить, сможешь ли ты спасти королевство не мечом, а запросами? Тогда добро пожаловать в SQL-квест.
🪄 Начать квест: https://uproger.com/sql-kvest-fentezijnoe-priklyuchenie-dlya-analitikov-dannyh/
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥1
Прокачай навыки на задачах, которые встречаются в реальной работе.
Бот в Telegram помогает тренироваться каждый день: задания обновляются, сложность растёт, а ошибки разбираются.
✔ практические кейсы
✔ удобный эмулятор работы Аналитика бесплатно
✔ пополняем задачами с реальных собеседований
✔ собираем фидбек и улучшаем тренажёр вместе с вами
Готов работать с данными уверенно? Попробуй симулятор и расти как аналитик.
t.me/Analitics_databot
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
PostgreSQL: архитектура и тюнинг SQL-запросов
Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.
🌐 В программе курса:
🤩 Разберем, как работают СУБД вообще и PostgreSQL в частности: что такое MVCC, ACID, WAL, LRU, PPC/TPC и другие фундаментальные понятия архитектуры баз данных
🤩 Получите теорию и практику EXPLAIN и EXPLAIN ANALYZE на разных типа запросов: без индексов, с индексами, index only, нормализованные и документ-ориентированные данные и json-поля, изменение параметров сессии/конфигурации для ускорения запросов
🤩 Изучите архитектуру хранения данных в PostgreSQL, типы и особенности индексов, а также получите полезные советы и трюки оптимизации БД
🤩 Получите свой собственный выделенный облачный PostgreSQL-сервер (8 vCPU, 12G RAM, 100G NVMe) – предоставляется БЕСПЛАТНО на время обучения + готовый e-commerce датасет TPC-H (миллион пользователей, несколько миллионов заказов на десятки гигабайт)
🗓 Старт курса: 22 января. 5 недель обучения.
Изучить программу и записаться можно здесь.
🤩 Кто мы: R&D-центр Devhands, основатель школы Алексей Рыбак. Автор курса — Николай Ихалайнен, эксперт по СУБД (ex-Percona), со-основатель MyDB, энтузиаст открытого ПО.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqug1BVk
Погрузись в архитектуру и прокачай оптимизацию запросов одной из самых популярных open source СУБД – PostgreSQL.
Изучить программу и записаться можно здесь.
Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2Vtzqug1BVk
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🖕1