🔥 Хочешь прокачаться в аналитике, но не просто читать теорию, а решать реальные задачи?
Мы запустили полностью бесплатный телеграм-тренажёр 👇
Тебя ждут сценарии, с которыми сталкиваются аналитики каждый день: от простых запросов до задач уровня собеседований.
Что внутри:
✔ живые кейсы из реальной практики
✔ удобный симулятор - как работа в компании, только бесплатно
✔ разбор ошибок — понимаешь не только «как», но и «почему»
✔ добавляем задачи с интервью и улучшаем бот вместе с сообществом
Начни тренироваться сегодня — и почувствуй уверенность в работе с данными.
t.me/Analitics_databot
Мы запустили полностью бесплатный телеграм-тренажёр 👇
Тебя ждут сценарии, с которыми сталкиваются аналитики каждый день: от простых запросов до задач уровня собеседований.
Что внутри:
✔ живые кейсы из реальной практики
✔ удобный симулятор - как работа в компании, только бесплатно
✔ разбор ошибок — понимаешь не только «как», но и «почему»
✔ добавляем задачи с интервью и улучшаем бот вместе с сообществом
Начни тренироваться сегодня — и почувствуй уверенность в работе с данными.
t.me/Analitics_databot
🔥10👍5❤2
В этом руководстве мы рассмотрим ключевые аспекты работы с SQL на практике. Начнём с сравнения популярных СУБД, затем перейдём к продвинутым приёмам аналитического SQL, оптимизации запросов, администрированию баз данных, и закончится всё интеграцией SQL с Python (SQLAlchemy, pandas и т.д.).
Для каждого раздела приведены примеры на реальных сценариях (интернет-магазин, CRM, аналитика продаж), код и полезные советы.
👉 Читать гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥2
⚡️ VictoriaLogs - быстрый и экономичный лог-движок от VictoriaMetrics
VictoriaLogs - это специализированная open-source база данных для логов, заточенная под высокую скорость, низкое потребление ресурсов и простоту эксплуатации.
Проект создан той же командой, что и VictoriaMetrics, и следует той же философии: максимум производительности без лишней сложности.
Что важно:
- Высокая скорость записи и поиска логов даже при терабайтах данных
- Очень низкое потребление RAM и диска по сравнению с классическими лог-стеками
- Отлично справляется с высокой кардинальностью (trace_id, user_id, ip и т.д.)
- Нет сложной настройки индексов - система оптимизируется автоматически
- Поддержка полнотекстового поиска и мощного LogsQL
- Live-tail логов (аналог tail -f)
- Можно масштабировать просто добавляя CPU, RAM и диск
- Работает как на маленьких серверах, так и под серьёзную нагрузку
- Написан на Go, с упором на cache-friendly структуры и минимальные аллокации
Особенно хорошо подходит для:
- high-load backend-сервисов
- observability и troubleshooting
- замены тяжёлых ELK/Loki-подобных решений
- долгого хранения логов с быстрым поиском
Философия простая: логи должны писаться и читаться быстро, а не требовать кластера из десятков нод.
https://github.com/VictoriaMetrics/VictoriaLogs/
VictoriaLogs - это специализированная open-source база данных для логов, заточенная под высокую скорость, низкое потребление ресурсов и простоту эксплуатации.
Проект создан той же командой, что и VictoriaMetrics, и следует той же философии: максимум производительности без лишней сложности.
Что важно:
- Высокая скорость записи и поиска логов даже при терабайтах данных
- Очень низкое потребление RAM и диска по сравнению с классическими лог-стеками
- Отлично справляется с высокой кардинальностью (trace_id, user_id, ip и т.д.)
- Нет сложной настройки индексов - система оптимизируется автоматически
- Поддержка полнотекстового поиска и мощного LogsQL
- Live-tail логов (аналог tail -f)
- Можно масштабировать просто добавляя CPU, RAM и диск
- Работает как на маленьких серверах, так и под серьёзную нагрузку
- Написан на Go, с упором на cache-friendly структуры и минимальные аллокации
Особенно хорошо подходит для:
- high-load backend-сервисов
- observability и troubleshooting
- замены тяжёлых ELK/Loki-подобных решений
- долгого хранения логов с быстрым поиском
Философия простая: логи должны писаться и читаться быстро, а не требовать кластера из десятков нод.
https://github.com/VictoriaMetrics/VictoriaLogs/
🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
🛠️ Легкий TUI для работы с SQL базами данных
sqlit - это удобный инструмент для быстрого выполнения запросов к различным SQL базам данных, включая PostgreSQL, MySQL, SQLite и другие. Он предлагает интуитивно понятный интерфейс, позволяя легко управлять соединениями и историей запросов без необходимости в сложных настройках.
🚀Основные моменты:
- Поддержка множества баз данных без дополнительных адаптеров
- Удобный интерфейс для управления соединениями
- Встроенная история запросов с возможностью поиска
- Поддержка SSH туннелей для безопасного подключения
- Редактирование в стиле Vim для терминальных пользователей
📌 GitHub: https://github.com/Maxteabag/sqlit
#python
sqlit - это удобный инструмент для быстрого выполнения запросов к различным SQL базам данных, включая PostgreSQL, MySQL, SQLite и другие. Он предлагает интуитивно понятный интерфейс, позволяя легко управлять соединениями и историей запросов без необходимости в сложных настройках.
🚀Основные моменты:
- Поддержка множества баз данных без дополнительных адаптеров
- Удобный интерфейс для управления соединениями
- Встроенная история запросов с возможностью поиска
- Поддержка SSH туннелей для безопасного подключения
- Редактирование в стиле Vim для терминальных пользователей
📌 GitHub: https://github.com/Maxteabag/sqlit
#python
👍6❤2
🎄 Новый год - идеальный момент перезапустить себя.
🔥 Мы собрали Telegram-каналы, где только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇
🖥 ИИ: t.me/ai_machinelearning_big_data
🖥 Python: t.me/pythonl
🖥 Linux: t.me/linuxacademiya
🖥 C++ t.me/cpluspluc
🖥 Docker: t.me/DevopsDocker
🖥 Хакинг: t.me/linuxkalii
🖥 Devops: t.me/DevOPSitsec
👣 Golang: t.me/Golang_google
🖥 Аналитика: t.me/data_analysis_ml
🖥 Javascript: t.me/javascriptv
🖥 C#: t.me/csharp_ci
🖥 Java: t.me/javatg
🖥 Базы данных: t.me/databases_tg
👣 Rust: t.me/rust_code
🤖 Робототехника: t.me/vistehno
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Не “с понедельника”.
Не “когда будет время”.
А сейчас.
🔥 Мы собрали Telegram-каналы, где только код, практика и самые передовые инструменты, которые используют разработчики прямо сейчас.👇
💼 Актуальные вакансии: t.me/addlist/_zyy_jQ_QUsyM2Vi
📚 Бесплатные ит-книги: https://t.me/addlist/HwywK4fErd8wYzQy
Самое лучшее в этом: ты учишься даже тогда, когда “нет времени, просто потому что читаешь правильную ленту.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥2
Forwarded from SQL и Анализ данных
Идея: не просто добавить индекс на один столбец, а так подобрать порядок полей, чтобы запрос вообще не ходил в таблицу, а читал всё из индекса. Это даёт огромный буст на "горячих" таблицах.
Допустим, у тебя часто есть такой запрос:
SELECT
id,
created_at,
total_amount
FROM orders
WHERE user_id = 123
AND status = 'paid'
ORDER BY created_at DESC
LIMIT 20;
Типичная ошибка - делать что-то вроде:
CREATE INDEX idx_orders_user ON orders (user_id);
CREATE INDEX idx_orders_status ON orders (status);
CREATE INDEX idx_orders_created ON orders (created_at);
Планировщику всё равно приходится лазить в таблицу и склеивать условия. Гораздо эффективнее один правильный составной индекс:
CREATE INDEX idx_orders_user_status_created_at
ON orders (user_id, status, created_at DESC)
INCLUDE (total_amount);
Почему это полезно:
user_id, status - фильтруют строки
created_at DESC - сразу даёт нужный порядок для ORDER BY ... DESC
INCLUDE (total_amount) - позволяет взять сумму прямо из индекса
В результате PostgreSQL (и другие СУБД с подобной механикой) могут сделать index-only scan: прочитать подходящие строки в нужном порядке из одного индекса и почти не трогать основную таблицу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3🔥3
⚡️ Vector search: Кидать историю чата в векторную БД - это не «память».
Это просто поиск по смыслу. RAG хорошо достаёт документы,
но не держит состояние пользователя.
Здесь может помочь Mem0 - open-source слой памяти между человеком и LLM.
Он учится на диалогах и сохраняет то, что важно.
Что даёт:
- 🧠 помнит предпочтения (не только факты)
- ✂️ сжимает историю — меньше токенов и быстрее ответы
- 🤝 делится знаниями между несколькими агентами
Если система не помнит опыт - это не агент, а поисковик.
Mem0 делает память - живой и адаптивной.
https://github.com/mem0ai/mem0
Это просто поиск по смыслу. RAG хорошо достаёт документы,
но не держит состояние пользователя.
Здесь может помочь Mem0 - open-source слой памяти между человеком и LLM.
Он учится на диалогах и сохраняет то, что важно.
Что даёт:
- 🧠 помнит предпочтения (не только факты)
- ✂️ сжимает историю — меньше токенов и быстрее ответы
- 🤝 делится знаниями между несколькими агентами
Если система не помнит опыт - это не агент, а поисковик.
Mem0 делает память - живой и адаптивной.
https://github.com/mem0ai/mem0
👍7❤2🥰2
🎨 TailwindSQL: SQL Queries with Tailwind-style Syntax
TailwindSQL позволяет писать SQL-запросы, используя синтаксис, похожий на классы Tailwind. Просто укажите
🚀 Основные моменты:
- 🎨 Синтаксис в стиле Tailwind для SQL-запросов
- ⚡ Поддержка React Server Components без клиентского JavaScript
- 🔒 Использует SQLite для быстрого доступа к локальным базам данных
- 🎯 Запросы обрабатываются на этапе сборки/рендеринга
- 🎭 Разнообразные режимы отображения: текст, списки, таблицы или JSON
📌 GitHub: https://github.com/mmarinovic/tailwindsql
#javascript
TailwindSQL позволяет писать SQL-запросы, используя синтаксис, похожий на классы Tailwind. Просто укажите
className в React Server Components, чтобы получать данные из базы данных без лишнего кода на клиенте.🚀 Основные моменты:
- 🎨 Синтаксис в стиле Tailwind для SQL-запросов
- ⚡ Поддержка React Server Components без клиентского JavaScript
- 🔒 Использует SQLite для быстрого доступа к локальным базам данных
- 🎯 Запросы обрабатываются на этапе сборки/рендеринга
- 🎭 Разнообразные режимы отображения: текст, списки, таблицы или JSON
📌 GitHub: https://github.com/mmarinovic/tailwindsql
#javascript
🤔4❤3🔥3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🛠️ Легкий TUI для работы с SQL базами данных
sqlit - это удобный инструмент для быстрого выполнения запросов к различным SQL базам данных, включая PostgreSQL, MySQL, SQLite и другие. Он предлагает интуитивно понятный интерфейс, позволяя легко управлять соединениями и историей запросов без необходимости в сложных настройках.
🚀Основные моменты:
- Поддержка множества баз данных без дополнительных адаптеров
- Удобный интерфейс для управления соединениями
- Встроенная история запросов с возможностью поиска
- Поддержка SSH туннелей для безопасного подключения
- Редактирование в стиле Vim для терминальных пользователей
📌 GitHub: https://github.com/Maxteabag/sqlit
#python
sqlit - это удобный инструмент для быстрого выполнения запросов к различным SQL базам данных, включая PostgreSQL, MySQL, SQLite и другие. Он предлагает интуитивно понятный интерфейс, позволяя легко управлять соединениями и историей запросов без необходимости в сложных настройках.
🚀Основные моменты:
- Поддержка множества баз данных без дополнительных адаптеров
- Удобный интерфейс для управления соединениями
- Встроенная история запросов с возможностью поиска
- Поддержка SSH туннелей для безопасного подключения
- Редактирование в стиле Vim для терминальных пользователей
📌 GitHub: https://github.com/Maxteabag/sqlit
#python
👍5❤2🔥1
Если тебе надо сделать
ALTER TABLE на большой продовой таблице и не положить сервис - gh-ost это прям must-have.Большинство online-schema-change тулов используют триггеры и создают лишнюю нагрузку.
А
gh-ost идёт по другому пути:✅ Triggerless - вообще без триггеров
✅ Читает изменения через binlog stream и асинхронно применяет их к “ghost table”
✅ Даёт полный контроль над процессом миграции:
- пауза/резюм
- throttle (снижение нагрузки)
- аудит и статус
- безопасный cut-over
Как это работает (по-простому):
1) создаётся “ghost table” с новой схемой
2) данные копируются постепенно
3) параллельно изменения ловятся из binlog
4) в конце таблицы меняются местами почти мгновенно
Идеально для:
🔥 таблиц на десятки миллионов строк
🔥 production-систем
🔥 миграций без блокировок
📌 Репо: github.com/github/gh-ost
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔3❤2🔥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
🔥20❤4🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
🧱 Миграции без боли: как обновлять БД безопасно и без простоя
Сохраняй себе: в реальных проектах миграции - это не “ALTER TABLE и поехали”, а зона риска.
Один неверный шаг = даунтайм, блокировки и откат вручную.
Правильный принцип:
делай миграции так, чтобы приложение могло пережить оба состояния схемы - до и после изменения.
Рабочая стратегия (2 шага)
1) Сначала добавляй новое, не ломая старое
- добавляй новые колонки/таблицы
- не удаляй и не переименовывай сразу
- не делай NOT NULL без дефолта
2) Потом переключай код
- сначала раскатываешь схему
- потом деплоишь код, который пишет/читает новое
- и только после этого убираешь старое
Это называется “expand → migrate → contract” и это стандарт продакшн-миграций.
Фишки, которые спасают на проде
- всегда делай миграцию идемпотентной (IF EXISTS / IF NOT EXISTS)
- не держи транзакцию долго
- избегай тяжёлых ALTER на больших таблицах
- проверяй количество строк, прежде чем апдейтить
- делай бэкап/дамп перед большим изменением
Сохраняй себе: в реальных проектах миграции - это не “ALTER TABLE и поехали”, а зона риска.
Один неверный шаг = даунтайм, блокировки и откат вручную.
Правильный принцип:
делай миграции так, чтобы приложение могло пережить оба состояния схемы - до и после изменения.
Рабочая стратегия (2 шага)
1) Сначала добавляй новое, не ломая старое
- добавляй новые колонки/таблицы
- не удаляй и не переименовывай сразу
- не делай NOT NULL без дефолта
2) Потом переключай код
- сначала раскатываешь схему
- потом деплоишь код, который пишет/читает новое
- и только после этого убираешь старое
Это называется “expand → migrate → contract” и это стандарт продакшн-миграций.
Фишки, которые спасают на проде
- всегда делай миграцию идемпотентной (IF EXISTS / IF NOT EXISTS)
- не держи транзакцию долго
- избегай тяжёлых ALTER на больших таблицах
- проверяй количество строк, прежде чем апдейтить
- делай бэкап/дамп перед большим изменением
-- safe-migration.sql
-- 1) EXPAND: добавляем новое, не ломая старое
ALTER TABLE users
ADD COLUMN IF NOT EXISTS email_verified BOOLEAN DEFAULT FALSE;
CREATE INDEX IF NOT EXISTS idx_users_email
ON users(email);
-- 2) MIGRATE: переносим данные маленькими шагами (пример)
-- (в реальности делается батчами на больших таблицах)
UPDATE users
SET email_verified = TRUE
WHERE email IS NOT NULL AND email <> '';
-- 3) CONTRACT: удаляем старое только после деплоя кода
-- (делать отдельной миграцией!)
-- ALTER TABLE users DROP COLUMN old_email_flag;
🔥4❤3👍2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ ИИ для SQL: пусть он объяснит «почему запрос тормозит»
Профессиональный лайфхак:
не проси ИИ «оптимизировать запрос» вслепую.
Вместо этого — давай ему EXPLAIN / EXPLAIN ANALYZE и структуру таблиц.
ИИ отлично умеет:
- разбирать план выполнения
- находить узкие места (Seq Scan, лишние JOIN, сортировки)
- предлагать индексы и переписывание запроса по факту, а не наугад
Алгоритм простой:
1️⃣ запускаешь EXPLAIN ANALYZE
2️⃣ прикладываешь схему таблиц
3️⃣ спрашиваешь: *где bottleneck и что бы ты поменял?*
Так ты получаешь не магию, а обоснованные рекомендации с пониманием, зачем они нужны.
@sqlhub
Профессиональный лайфхак:
не проси ИИ «оптимизировать запрос» вслепую.
Вместо этого — давай ему EXPLAIN / EXPLAIN ANALYZE и структуру таблиц.
ИИ отлично умеет:
- разбирать план выполнения
- находить узкие места (Seq Scan, лишние JOIN, сортировки)
- предлагать индексы и переписывание запроса по факту, а не наугад
Алгоритм простой:
1️⃣ запускаешь EXPLAIN ANALYZE
2️⃣ прикладываешь схему таблиц
3️⃣ спрашиваешь: *где bottleneck и что бы ты поменял?*
Так ты получаешь не магию, а обоснованные рекомендации с пониманием, зачем они нужны.
пример «правильного» запроса к ИИ с реальными данными
-- запрос
SELECT *
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.created_at > NOW() - INTERVAL '30 days'
AND c.country = 'US'
ORDER BY o.created_at DESC
LIMIT 100;
-- план выполнения
EXPLAIN ANALYZE
SELECT ...
-- (сюда вставь полный план: Seq Scan / Index Scan / сортировки и т.п.)
-- схема таблиц (важно!)
\d orders
\d customers
-- вопрос ИИ:
"Разбери план выполнения.
Где узкие места?
Нужны ли индексы и какие именно?
Можно ли переписать запрос быстрее, не меняя логику?"
@sqlhub
👍12❤7🔥5👎1🥰1