Data Science. SQL hub
36.1K subscribers
1.03K photos
72 videos
37 files
1.07K links
По всем вопросам- @workakkk

@itchannels_telegram - 🔥лучшие ит-каналы

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Отменяем все мемы про дроп базы
😁22👍2🥰21
This media is not supported in your browser
VIEW IN TELEGRAM
ШПАРГАЛКА: Как правильно поднимать БД перед проектом

Главная ошибка новичков - “у всех база разная”.
В итоге миграции ломаются, схема плывёт, на CI одно, у тебя другое, в проде третье.

Правильный старт всегда одинаковый:

1) Поднимай БД через Docker - чтобы у всей команды окружение было идентичным
2) Все параметры (пароль, порт, имя БД) храни в .env
3) Схему меняй ТОЛЬКО через миграции (Flyway/Liquibase/EF/Alembic)
4) Добавь healthcheck - сервис не должен стартовать раньше БД
5) Сделай команды backup/restore - пригодится в любой момент

Так ты гарантируешь:
- у всех одна и та же база
- быстрый старт проекта за 3 минуты
- деплой без сюрпризов


1) Создай .env
cat > .env << 'EOF'
POSTGRES_DB=app
POSTGRES_USER=app
POSTGRES_PASSWORD=app123
POSTGRES_PORT=5432
EOF

2) docker-compose.yml для Postgres + healthcheck
cat > docker-compose.yml << 'EOF'
services:
postgres:
image: postgres:16
container_name: app-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports:
- "${POSTGRES_PORT}:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 5s
timeout: 3s
retries: 20

volumes:
pgdata:
EOF

3) Запуск
docker compose up -d

4) Проверка
docker compose ps

5) Backup
docker exec -t app-postgres pg_dump -U app app > backup.sql

6) Restore
cat backup.sql | docker exec -i app-postgres psql -U app -d app
👍164👎4🔥1😁1
Горизонтальное масштабирование PostgreSQL — проблема, которая неизбежно возникает при работе с большими данными и высокими нагрузками. Когда количество транзакций растёт до миллионов, стандартных возможностей PostgreSQL уже недостаточно: сопровождение усложняется, риски увеличиваются, а вывод новых продуктов замедляется.
Yandex B2B Tech представили Managed SPQR — управляемый сервис горизонтального масштабирования PostgreSQL на платформе Yandex Cloud. Решение позволяет распределять данные между шардами, автоматически балансировать нагрузку и снимать с команд значительную часть операционных задач.

Managed SPQR помогает:
🔴 ускорить разработку и запуск продуктов в 3–4 раза;
🔴 снизить операционные риски и нагрузку на инфраструктуру;
🔴 сэкономить до 15 млн рублей при запуске высоконагруженных сервисов.
Технология уже используется в проектах Яндекса и у внешних компаний, включая финтех и e-commerce.

📅 5 февраля в 12:00 команда Yandex B2B Tech проведёт вебинар, посвящённый запуску public preview сервиса. Участникам расскажут об архитектуре Managed SPQR, автоматической перебалансировке данных, мониторинге и реальных кейсах, а также разберут выбор ключа шардирования.

🔗 Регистрация и подробности — по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
🐘 Появился MCP-сервер и плагин для Claude, который буквально «ставит на место» ИИ-ассистентов при работе с PostgreSQL.

Главная боль с нейросетями в SQL - они любят:
писать устаревшие конструкции, игнорировать индексы, путаться в версиях PostgreSQL и галлюцинировать оптимизации, которых не существует.

Этот инструмент решает проблему радикально:
ассистент больше не фантазирует — он опирается на официальные знания и готовые практики.

Что он даёт агентам (Claude Code, Cursor и др.):

— Поиск ответов прямо в официальной документации PostgreSQL с учетом версии (12, 14, 16+). Не абстрактный «SQL из интернета», а то, что реально работает в твоей версии.
— База знаний по экосистеме. Уже встроена документация по TimescaleDB, дальше — другие расширения.
— Готовые проверенные паттерны: проектирование схем, выбор типов данных, ограничения, индексы, перформанс. Агент использует шаблоны лучших практик вместо галлюцинаций.
— Работает как публичный MCP-сервер для разных инструментов или как нативный плагин для Claude Code.

По сути, это слой «инженерного здравого смысла» между моделью и базой данных.
ИИ остаётся умным, но перестаёт быть опасным для продакшена.

Вот это и есть настоящее «прокачивание ассистентов».

https://github.com/timescale/pg-aiguide

@sqlhub
6👍5🔥2
🧠 Вы когда-нибудь рисовал схему БД в тертрадке, а потом часами переносил всё в SQL?

Есть способ быстрее - из диаграммы сразу в продакшен-код.

DrawDB превращает твою ER-диаграмму в SQL:
просто перетаскиваешь таблицы на канвас, связываешь их визуально - и экспортируешь готовый SQL под нужную СУБД.

Что умеет:
- Рисуешь таблицы и связи на визуальном холсте
- Экспортируешь production-ready SQL для:
MySQL, PostgreSQL, SQLite, MariaDB, MSSQL, Oracle
- Без аккаунта и подписок
- Можно мгновенно шарить диаграммы команде

И да - 100% бесплатно и open-source 🔥

📦 Репозиторий: https://github.com/drawdb-io/drawdb
👍15🔥87
Не двигайтесь: вы в ИИ-кадре

Этот бот создает фото для соцсетей в футуристичном стиле. Его можно поставить на аватарку, особенно если идете на t-sync conf. Конференция от Группы «Т-Технологии» для опытных инженеров впервые пройдет в Москве 7 февраля.

Попробовать бота можно здесь. А узнать больше о t-sync conf и зарегистрироваться — здесь
👎5😁4👍2🔥1
Теперь можно ничем не беспокоиться
😁53👍41
⚡️ Масштабирование до 1 000 000 пользователей - практичный подход с PostgreSQL

Автор работал над системой, которая выросла с нуля до более чем миллиона пользователей. Без сложных модных архитектур на старте и без преждевременного оверинжиниринга. Только последовательная эволюция под реальные нагрузки.

В начале всё было максимально просто:

Одно приложение - одна база данных.
И этого было достаточно.

Проблемы появились не в коде. Узким местом стала база данных. Архитектура развивалась шаг за шагом, решая конкретные проблемы по мере их появления.

1️⃣ Старт - один основной инстанс
Использовался один primary-инстанс PostgreSQL. Минимум инфраструктуры, низкие расходы и полный фокус на продукте.

Главная мысль этого этапа - не строить "архитектуру уровня Netflix" для проекта с десятками пользователей.

2️⃣ Разделение чтений - Read Replicas
Когда резко вырос read-трафик:

- Primary обрабатывал только записи
- Реплики обрабатывали SELECT-запросы
- Балансировщик распределял чтения

Кодовая база почти не менялась - менялась маршрутизация трафика.

Результат - база перестала быть узким местом из-за чтений.

3️⃣ Проблема соединений - добавление pgBouncer
При росте числа пользователей упёрлись не в CPU, а в количество соединений.

Каждое соединение к базе - это память и ресурсы. Тысячи коннектов начали "душить" систему.

Решение - connection pooling через pgBouncer:

- Меньше реальных соединений к БД
- Выше пропускная способность
- Меньше сбоев под нагрузкой

4️⃣ Масштабирование через кэш
Чтобы выдержать 1M+ пользователей, стало критично не обращаться к базе за каждым запросом.

Добавили Redis как слой кэширования:

- Часто используемые данные отдавались из кэша
- База перестала быть единственной точкой нагрузки
- Задержки заметно снизились

Именно на этом этапе начинается настоящее масштабирование.

Главный урок

На каждом этапе решалась текущая проблема, а не гипотетическая задача будущего.

| Проблема | Решение |
|---------|---------|
| Много чтений | Read Replicas |
| Слишком много соединений | Пул соединений |
| База перегружена запросами | Кэш |
| Сложная инфраструктура | Не добавлялась без реальной необходимости
|

Приложение существует, чтобы поддерживать бизнес.
Если бизнес-модель не работает, никакое масштабирование не спасёт.

Масштабирование - это не про технологии ради технологий.
Это про внедрение решений в тот момент, когда они действительно нужны.

milanjovanovic.tech/blog/scaling-monoliths-a-practical-guide-for-growing-systems
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
💨 Тормозят SQL-запросы и дашборды? Освободите своё время и нервы!

Устали каждый раз пить кофе, пока выполняется запрос? Раздражает, когда дашборд висит на последнем проценте загрузки? Пора это прекратить!

Приглашаем вас на практический вебинар «Аналитика без тормозов» 11 февраля в 19:00.
Мы разберем, как радикально ускорить вашу работу.

На вебинаре вы:
🔸 Узнаете об эффективных подходах — от тактических SQL-приёмов до стратегических архитектурных решений.
🔸 Разберёте конкретные методы, применимые к любой СУБД, и тонкие нюансы оптимизации.
🔸 Получите готовый набор фишек для ускорения запросов и витрин уже на следующий день.


Проведет вебинар Георгий Семенов, руководитель команды Analytics Engineering в Яндексе. Его опыт (VK, Wildberries, ЦУМ, ВТБ) и 14 лет в управлении IT-проектами — это концентрат практических знаний без воды.

Все участники получат в подарок практический урок из курса SQL Pro про оптимизацию запросов — навсегда.

Ускорьте свою аналитику одним кликом: simulative.ru/web-sql-speedup
🍰 Polars v1.37.0: min/max строки по другой колонке - в одну строку

Раньше, чтобы найти строку с минимальным/максимальным значением по другой колонке, приходилось:
- сортировать
- группировать
- писать сложные фильтры

Теперь в Polars v1.37.0 всё проще.

Добавили методы выражений:
min_by
max_by

Они позволяют находить min/max значения по любой колонке одной понятной строкой кода - без лишней магии и многошаговых костылей.

Пример логики:
"дай продукт с максимальными продажами внутри каждой категории" - теперь делается красиво и читаемо.

Обновление:

pip install -U polars
👍63🔥3
🖥 Большинство “парсеров” умирают через 2 дня.
Ты научишься делать те, которые живут в проде.

Это не про BeautifulSoup ради галочки.
Это про системы сбора данных, которые:

• не падают от мелких правок на сайте
• собирают данные в разы быстрее
• обновляют всё сами по расписанию
• обходят ограничения и баны
• выглядят как сервис, а не хаос из файлов

Ты начнёшь видеть сайты не как страницы, а как источники данных, к которым можно подключиться.

В итоге ты сможешь:

• забирать данные для своих проектов
• автоматизировать чужую рутину
• делать инструменты для аналитики
• брать коммерческие заказы на сбор данных

Это навык, который напрямую превращается в деньги.
Не “знаю Python”, а умею добывать данные из интернета профессионально.

🎁 48 часов скидка 50% на Stepik: https://stepik.org/a/269942/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
📚 SQL Чек-лист: защита базы данных от взлома

Закрой базу от интернета - БД не должна слушать 0.0.0.0 без нужды. Открывай доступ только из подсети приложения (VPC, private network).

Используй принцип наименьших прав - отдельный пользователь на каждое приложение, только нужные SELECT/INSERT/UPDATE, без SUPER/OWNER.

Пароли и секреты - длинные, уникальные, храни в Secret Manager/.env вне репозитория, регулярно ротируй.

Шифрование - включи TLS для соединений, шифруй бэкапы и диски (at-rest).

Обновления - патчи БД и ОС ставь регулярно, отключай лишние расширения и фичи.

Защита от SQL-инъекций - только параметризованные запросы, никакой конкатенации строк в SQL.

Логи и аудит - включи логирование входов, ошибок, подозрительных запросов, алерты на “подбор паролей”.

Бэкапы + проверка восстановления - делай бэкапы и обязательно тестируй restore, иначе это не бэкап.

Ограничь опасные команды - запрети DROP/ALTER в проде для app-юзеров, разнеси миграции и рантайм доступ.

Rate limiting и защита периметра - firewall/SG, fail2ban/pgbouncer limits, VPN/bastion для админки.



Postgres hardening (quick example)

ufw allow from 10.0.0.0/8 to any port 5432
psql -c "CREATE ROLE app LOGIN PASSWORD 'STRONG';"
psql -c "REVOKE ALL ON DATABASE prod FROM PUBLIC;"
psql -c "GRANT CONNECT ON DATABASE prod TO app;"
psql -c "ALTER SYSTEM SET ssl=on;"
psql -c "ALTER SYSTEM SET log_connections=on;"
psql -c "ALTER SYSTEM SET password_encryption='scram-sha-256';"
systemctl reload postgresql
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21