Data Science. SQL hub
35.8K subscribers
958 photos
52 videos
37 files
1K links
По всем вопросам- @workakkk

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

@ai_machinelearning_big_data - Machine learning

@pythonl - Python

@pythonlbooks- python книги📚

@datascienceiot - ml книги📚

РКН: https://vk.cc/cIi9vo
Download Telegram
Год назад здесь была реклама нового, но уже довольно любопытного курса по API. За год его автор, тимлид команды аналитиков Глеб Учитель, проделал огромную работу: на курс записалось более 1300 человек. И сейчас его знают многие.

Если вы тоже хотите расти по хардам в IT —
добро пожаловать!

🔹🔹 🔹🔹
Начните с бесплатных уроков по архитектуре и интеграциям в чат-боте курса. Переходите и знакомьтесь.
👇
@studyit_help_bot

Скидка на курс от канала —
1 000₽ по промокоду SQLHUB до 30 сентября.
1
📈 Гайд по продвинутым вопросам для разработчика LLM

Собеседования на позицию разработчика больших языковых моделей (LLM) в топовых AI-компаниях предъявляют высокие требования к знаниям.

Кандидату необходимо понимать устройство архитектуры трансформеров, владеть методами эффективного обучения и инференса, разбираться в оптимизациях памяти и скорости (таких как LoRA, FlashAttention, vLLM, ZeRO), знать тонкости распределённого тренинга, принципов LLMOps (MLOps для больших моделей) и нюансов продакшн-развертывания LLM.

Также часто проверяют умение решать реальные задачи: от проектирования пайплайна для Sparse MoE до анализа проблем с памятью на GPU, понимания различий между методами обучения с подкреплением (RLHF vs DPO) и способов масштабирования моделей.

Этот гайд структурирован по ключевым темам, соответствующим областям знаний, которые обычно проверяются на собеседованиях. Для каждой темы мы рассмотрим, что пытаются проверить интервьюеры, приведём пример формулировки вопроса и дадим подробный разбор ответа с обсуждением трэйд-оффов, примеров кода или схем, где это уместно. Вы можете изучать материал по разделам, чтобы сфокусироваться на интересующей области.

👉 Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1🔥1
💡 SQL: быстрое нахождение первых или последних записей с DISTINCT ON !!!

В PostgreSQL есть полезный приём — DISTINCT ON, который позволяет взять первую строку в каждой группе по определённому полю.


SELECT DISTINCT ON (customer_id)
customer_id,
order_date,
amount
FROM orders
ORDER BY customer_id, order_date DESC;


🔎 Этот запрос вернёт последний заказ каждого клиента без лишних подзапросов или JOIN.

Работает очень быстро и удобно, если нужно найти «самый первый» или «самый последний» элемент в группе.

@sqlhub
🔥268👍6🥰1
🗄️ Неочевидный SQL-совет

Иногда нужно выбрать строки с первыми или последними значениями внутри группы — например, последний заказ каждого клиента.
Вместо вложенных подзапросов используйте DISTINCT ON (PostgreSQL):


SELECT DISTINCT ON (customer_id)
customer_id, order_id, created_at
FROM orders
ORDER BY customer_id, created_at DESC;


👉 Результат: по каждому customer_id вернётся только одна строка — с самым свежим заказом.
Очень компактная и быстрая альтернатива оконным функциям или JOIN-ам.
24👍4🔥2
💡Неочевидный SQL-совет

Часто нужно выбрать топ-N строк внутри каждой группы — например, два самых дорогих товара в категории.
Вместо сложных оконных функций можно использовать QUALIFY (в Snowflake, BigQuery, DuckDB, Trino):


SELECT category_id, product_id, price
FROM products
QUALIFY ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY price DESC) <= 2;

👉 Результат: по каждой категории вернутся только два товара с наибольшей ценой.

Этот приём делает запрос короче и понятнее, убирая необходимость во вложенных подзапросах. Если вы используете СУБД с поддержкой QUALIFY, берите на вооружение.
👍13🤔21
🚀 SQL Ultimate Course — бесплатный полный курс по SQL на GitHub

Если хочешь освоить SQL с нуля и дойти до продвинутого уровня — бери готовый репозиторий:

📂 Что внутри:
- datasets/ — реальные данные из ERP и CRM
- scripts/ — готовые SQL-скрипты для практики
- docs/ — документация и материалы курса

MIT-лицензия — можно использовать и менять свободно
🌍 Подходит для всех СУБД (PostgreSQL, MySQL и др.)
🎥 К курсу прилагаются видео и гайды от автора

Автор: Data With Baraa — практик и ютубер, собравший в одном месте полный SQL-путь от простого SELECT до оптимизации запросов и реальных кейсов.

🔗 Репозиторий здесь: https://github.com/DataWithBaraa/sql-ultimate-course

Сохраняй, проходи и прокачивай SQL 💡

@sqlhub
8👍5🔥3
⚡️ Предотвращаем потерю данных с ACID-транзакциями в DuckDB!

Без транзакций:
- Списание у Alice прошло
- Пополнение у Bob сломалось
➡️ Итог: деньги «пропали».

С транзакцией (ACID):
- Оба обновления либо проходят вместе, либо откатываются
- Баланс остаётся консистентным
- Никаких «висящих» операций

Пример:

conn.execute("BEGIN TRANSACTION")
try:
conn.execute("UPDATE accounts SET balance = balance - 200 WHERE name = 'Alice'")
conn.execute("UPDATE accounts SET balance = balance + 200 WHERE name = 'Bob'")
conn.execute("COMMIT")
except:
conn.execute("ROLLBACK")


🔹 Atomicity — либо всё, либо ничего
🔹 Consistency — база не ломается
🔹 Isolation — параллельные операции не мешают
🔹 Durability — данные не теряются

🛡 ACID гарантирует надёжность даже при сбоях.
👍96🥰3🤔1🤬1
🚀 Вышел Postgres 18 — с поддержкой Async I/O

Раньше все операции чтения были блокирующими, теперь - нет.

Результат: огромный прирост производительности для приложений с интенсивным чтением.

⚡️ Async I/O включён по умолчанию в Postgres 18!

Что интересного:
- Новый алгоритм skip scan для многостолбцовых индексов
- Параллельное построение GIN-индексов (JSON, полнотекст)
- Виртуальные генерируемые столбцы (значения считаются на лету)
- Функция uuidv7() — UUID с временной сортировкой
- Сохранение статистики планировщика при мажорных апгрейдах
- Поддержка OAuth 2.0, улучшения TLS и безопасности
- Новый протокол взаимодействия клиентов и утилит — v3.2

🟠 Релиз: https://www.postgresql.org/about/news/postgresql-18-released-3142/

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍10🔥8
⚡️ Как тестировать код без настоящей базы данных

Когда вы пишете юнит-тесты, подключение к реальной БД — лишнее:

- это медленно,

- тесты становятся нестабильными,

- нужен живой сервер.

Решение — замокать вызов pandas.read_sql и вернуть подставные данные.

Пример функции:


def query_user_data(user_id):
query = f"SELECT id, name FROM users WHERE id = {user_id}"
return pd.read_sql(query, "postgresql://localhost/mydb")


Тест с моком:


from unittest.mock import patch
import pandas as pd

@patch("pandas.read_sql")
def test_database_query_mocked(mock_read_sql):
mock_read_sql.return_value = pd.DataFrame(
{"id": [123], "name": ["Alice"]}
)

result = query_user_data(user_id=123)
assert result["name"].iloc[0] == "Alice"


Теперь вместо запроса в реальную базу тест подставляет фейковые данные. Так можно проверить бизнес-логику функции быстро и надёжно.

@sqlhub
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145
Redis и Valkey изучите секреты самых популярных open source key-value СУБД

В высоко-нагруженных сервисах Redis — не просто кэш, а важная подсистема, на которой строится значимая часть бизнес-логики. От его стабильности, масштабируемости и отказоустойчивости зависит производительность всего сервиса. Valkey - это современный производительный форк Redis с открытым исходным кодом, поддерживаемый сообществом и рядом крупных компаний. Valkey набирает популярность, поддержан крупными облачными провайдерами, и вполне возможно потеснит или вовсе заменит Redis со временем.

Наш курс — для тех, кто хочет держать свой стэк и знания актуальными и глубоко разбираться, как устроен Redis и Valkey.

🌐 В программе курса:

🤩 Как эффективно использовать базовые и продвинутые структуры данных: HyperLogLog, Bitmaps и Bisields, Streams, Geospatial-индексы, Bloom Filters
🤩 Как проектировать in-memory системы, которые не разваливаются под нагрузкой, что влияет на отказоустойчивость и как её добиться
🤩 Как работает репликация и кластеризация на практике (режимы Sentinel и Cluster)
🤩 Как встроить Redis/Valkey в реальный прод с учётом безопасности, интеграций и современных практик мониторинга.

Кто мы: R&D-центр Devhands, основатель школы Алексей Рыбак. Автор курса — Константин Ратвин, преподаватель МФТИ на кафедре БИТ (совместно со СберТех), эксперт по распределённым системам и банковским ИТ, автор курсов по СУБД и инфраструктуре, спикер HighLoad++ и PGConf.

🗓 Старт курса: 7 октября, 6 недель обучения.
Изучить программу и записаться можно здесь.

Ждем вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxNnFKA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2👎21
⚡️ Chroma — база данных для эмбеддингов с открытым исходным кодом

Если строишь чат-бота или RAG-систему — Chroma даст твоему приложению память и быстрый поиск по векторным представлениям.

Что умеет:

- Поддержка Python и JavaScript
- Быстрый поиск и фильтрация по embeddings
- Интеграция с LangChain и LlamaIndex
- Простое API для добавления документов и метаданных

🚀 Установка:


pip install chromadb
# или
npm install chromadb
chroma run --path ./chroma_db


🧩 Пример на Python:


import chromadb
client = chromadb.Client()
col = client.create_collection("docs")
col.add(documents=["Doc1","Doc2"], ids=["1","2"])
res = col.query(query_texts=["найди похожее"], n_results=1)


Github
Colab
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
🆕 На Stepik вышел курс — «Golang + SQLx: построение высоконагруженных сервисов с нуля до продакшена» 

Уже пишете на Go и хотите разобраться, как строить быстрые и отказоустойчивые сервисы? Этот курс — именно то, что нужно, чтобы прокачать навыки работы с SQLx и backend-архитектурой.

• Полный путь от CRUD-операций до масштабируемых систем: транзакции, уровни изоляции, конкурентное программирование, балансировка нагрузки
• Оптимизация SQL: индексы, кэширование, профилирование запросов
• Масштабирование и администрирование сервисов: кластеры, отказоустойчивость, мониторинг и логирование
• Практика на реальных кейсах: проектируем API, отрабатываем ошибки, настраиваем CI/CD
• 150+ интерактивных заданий с автопроверкой — пишите код прямо в браузере, когда удобно
• Итоговый pet-project: к концу курса у вас будет готовый сервис уровня продакшн

🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn

🚀 Прокачайте Golang и SQLx с пользой и практикой. Начните уже сегодня и получите скидку 30%, которая действует в течение 48 часов.

👉 Пройти курс на Stepik
3
🟠 ParadeDB — альтернатива Elasticsearch на базе PostgreSQL

В эпоху data-driven решений поиск и аналитика в реальном времени стали обязательной частью любой стратегии.
ParadeDB — это новый open-source игрок: расширение для PostgreSQL, превращающее его в мощный движок полнотекстового поиска и аналитики.

Возможности:

Реал-тайм поиск по данным прямо в Postgres

Высокая производительность без внешних сервисов

Open-source и легко встраивается в существующую инфраструктуру

🔗 Подробнее: blackslate.io/articles/paradedb-an-elasticsearch-alternative-built-on-postgresql

@sqlhub
6
⁉️ Как понять и улучшить архитектуру IT-системы? Archimate помогает увидеть полную картину, связывая бизнес-цели и технические решения в одну целостную модель.

На курсе «Archimate» мы научим вас моделировать архитектуру на 3 уровнях: бизнес-уровне, программном и технологическом. Вы освоите стратегическое планирование, сможете выявлять «узкие места» и эффективно проектировать IT-решения. Мы научим вас анализировать требования бизнеса и моделировать архитектуру, которая соответствует этим требованиям.

Этот курс поможет архитекторам, аналитикам и тимлидам углубить знания и научиться стратегически мыслить, создавая решения, которые действительно работают. Реальные кейсы, подробные примеры и практика моделирования на Archimate — всё это ждёт вас.

➡️ Старт уже 30 сентября! Оставьте заявку, чтобы получить скидку по промокоду ArchiSept: https://tglink.io/5086a78f95a5?erid=2W5zFHYd6fa

#реклама
О рекламодателе
🤩1
⚠️ SQL-инъекция через f-string

Если подставлять значения прямо в SQL через f-string, злоумышленник может выполнить любой код в базе:


name = "Alice'; DROP TABLE accounts; --"
query = f"SELECT * FROM accounts WHERE name = '{name}'"
conn.sql(query)


💥 И вот таблица accounts удалена!

Почему так?

Потому что строка с именем вставляется как есть и воспринимается как часть SQL-запроса.

Правильный способ — использовать параметры:


name = "Alice'; DROP TABLE accounts; --"
query = "SELECT * FROM accounts WHERE name = ?"
conn.sql(query, params=(name,))

Имя ищется как текст, база остаётся в безопасности.

👉 Запомни: никогда не вставляй пользовательские данные напрямую в SQL.

Используй параметризованные запросы — это надёжная защита от SQL-инъекций.

@sqlhub
👍15🔥64