Змеиный анализ🐍
195 subscribers
14 photos
1 video
6 links
Тут про аналитику данных и python.
Делюсь своими мыслями и помогаю другим вкатиться в IT без нервов.

Гений, милиардер, филантроп, айтишник.
Связь: @kema_001
Download Telegram
Синдром overthinking или почему вы прокрастинируете

Уверен, что каждый из вас сталкивался с ситуацией, когда очень долго сидишь за определенной задачей, пытаясь подобрать идеальное решение.

Чрезмерное обдумывание ситуаций, анализ каждого мелкого аспекта и прокручивание возможных исходов, и есть синдром overthinking.

У
программистов он встречается довольно часто. Особенно если ты новичок или работаешь над сложной задачей. Вот почему:

1. Желание написать идеальный код ➡️ Бесконечное продумывание лучшей архитектуры, выбора библиотек, алгоритмов.
2. Страх ошибок ➡️
Можно зациклиться на поиске потенциальных багов, даже если они маловероятны.
3. Много вариантов решения ➡️
В программировании почти всегда есть несколько путей, и выбор может затянуться.
4. Импостер-синдром ➡️ Мысль “А вдруг мой код плохой?” заставляет переделывать и анализировать бесконечно.
5. Постоянное обучение ➡️ Размышления о том, какие технологии учить, какую карьерную стратегию выбрать.

Как с этим бороться

✔️Практиковать принцип KISS (Keep It Simple, Stupid) – проще = лучше.
✔️Ограничивать время на обдумывание – если за 30 минут нет решения, переходи к прототипированию.
✔️Не бояться ошибок – быстрее ошибся → быстрее исправил → быстрее научился.
✔️Разбивать задачи на маленькие части – так легче принимать решения.
✔️Делать приоритеты – не всё требует глубокого анализа. Иногда достаточно просто рабочего решения.

Ставьте ❤️ если сталкивались с этим
Please open Telegram to view this post
VIEW IN TELEGRAM
10
Классный способ визуализации, который открыл для себя недавно

Сегодня хочу поделиться мощным способом визуализации, который отлично подходит для анализа распределения непрерывной переменной (например, зарплаты) в зависимости сразу от двух категориальных признаков.

В чём суть ?
Берём два категориальных признака (в моём примере — IT-специализация и грейд) и для каждой их комбинации строим boxplot. Это позволяет одним взглядом оценить комплексное влияние двух факторов на целевую переменную.

Какие инсайты можно найти? 💡

Вот что я обнаружил на примере датасета с зарплатами в IT:
• Чёткий рост зарплаты от middle к senior почти во всех специализациях
• В сфере Research and Advanced ML джуны получают неожиданно много — часто больше, чем миддлы в других направлениях. Вероятно, сказывается высокий порог входа и нехватка сильных кадров
Аномально высокие зарплаты у некоторых джунов (например, 300к у AI Developer) — возможно, это ошибки в данных или уникальные кейсы
• Самый перспективный карьерный рост (по разрыву в зарплате между грейдами) — в ML Engineering, Management и Data Engineering

Как это построить?
🛠

Вот пример кода на Python с seaborn:

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(10, 8))
sns.boxplot(x='experience_level', y='salary_in_usd', hue='job_category', data=df, palette='Set2')
plt.title('Зависимость зарплаты от грейда и сферы деятельности', fontsize=15)
plt.xlabel('Грейд')
plt.ylabel('Заработная плата, $ в год')
plt.legend(title='Сфера деятельности')
plt.tight_layout()
plt.show()

Ссылка на датасет
🔥5
Насколько важны алгоритмы для аналитика данных? 🤔📊

Если коротко, то важны. Но не так, как для разраба.
Для аналитика данных алгоритмы это не про сложные формулы в 3 экрана, а про понимание логики, которая стоит за инструментами, которыми ты пользуешься каждый день 🔍

На своем опыте скажу, что действительно нужно на уровне мидла или выше

🔤Понимание базовых структур данных
Списки, словари, таблицы, матрицы - вся твоя работа крутится вокруг них.
Чем лучше понимаешь их поведение, тем быстрее решаешь задачи.

🔤2. Алгоритмическое мышление
Умение разложить задачу на шаги: как обработать данные, как оптимизировать выборку, где ускорить, где не нужно.

🔤3. Знание классики: сортировки, фильтрации, группировки
Это основа SQL, Python (Pandas), Excel. Всего, чем живёт аналитик 🤓

🔤4. Минимум математики - максимум практичности
Не нужно знать Дейкстру или FFT, но стоит понимать, как работает регрессия, классификация, кластеризация.
Не по формулам а по смыслу 🤝

🔤5. Скорее важно понимать не “как написать алгоритм”, а “как он работает внутри”
Этим ты отличаешься от тех, кто просто жмёт кнопки. Это и есть уровень выше 🚀

📌Что по итогу?
Аналитику не нужно уметь писать сложные алгоритмы. Но нужно понимать их логику, чтобы уверенно работать с данными, моделями и инструментами. Собственно это и делает тебя ценным специалистом 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Кто устроился лучше всех в IT

Каждый задавал себе вопрос, чему лучше обучаться, чтобы не сильно тяжело было и нормально платили? Frontend, Backend, Тестировщик, Мобильщик, а может вообще на аналитика пойти 🤔

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

Неважно кто вы, web программист, devops или жесткий MLщик. Если вы хороший специалист + грамотный продажник💵(да, без навыка «хорошо себя продавать» не обойтись), то вас ждет хорошее соотношение денег в час/трудовой день 👨‍💻

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

Я лично встречал случаи когда крутые специалисты получают меньше более наглых ребят и самое интересное, в дальнейшем более наглые ребята, за счет того что они замотивированы ☄️получать все больше и больше, находили более высокооплачиваемые офферы и были вынуждены расти в профессиональном уровне, в итоге, обгоняя скромных, но очкошных гениев

🛡По итогу, наглость в хорошем смысле этого слова, ценность себя как специалиста и осознание того что ты заслуживаешь больше денег - приносит успех 🥇

Со мной кто-то может не согласиться. Если так, то напишите в комменты ваще мнение👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Советы, которые я использую при работе с SQL-запросами 😎

Сейчас я стал писать гораздо больше кода, чем раньше, особенно это касается SQL. Поэтому решил составить небольшую памятку с рекомендациями, которые помогают мне не путаться и не ломать запросы 💀

Используйте отступы, выравнивание и пишите ключевые слова в верхнем регистре

Не обязательно вручную расставлять пробелы и держать нажатым caps lock. Всё это можно настроить автоформатированием в любой среде. Это нужно, чтобы не запутаться в длинных однострочных запросах.

Запрашиваем только нужные столбцы, а не всё подряд

Так правильно:
SELECT id, name, email
FROM Table

Если использовать SELECT *, а в таблице десятки колонок — читать такой результат неудобно. А если ещё и замешаны JOIN на несколько крупных таблиц, то рискуем вытащить сотню лишних полей, перегрузить запрос и устроить себе хаос.

Подзапросы

Я не фанат подзапросов. Их сложнее читать, тестировать и понимать (кому-то легко, но мне не очень). Особенно когда их 3-4 подряд. Потом ищи, где сломались данные.
Лучше заменить подзапросы на CTE или JOIN 🫨

Раннее фильтрование данных

Чем раньше отфильтруем строки, тем меньше объёмы данных, которые пойдут в соединения. Это снижает нагрузку и ускоряет запросы.

EXISTS

Для больших таблиц EXISTS часто работает быстрее, чем IN.

Пример:
SELECT id, name FROM products p
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.product_id = p.id)


Используем CTE

В сложных запросах всегда применяю CTE: сначала фильтрую данные там, а затем подключаю их в основном запросе. Так проще отлаживать и заметно повышается читаемость.

EXPLAIN

Написали тяжёлый запрос — смотрим его через EXPLAIN. Команда показывает план выполнения и помогает понять, насколько ваш SQL нагружает систему. Это ключевой инструмент для оптимизации.

Читаемый SQL = меньше багов и проще поддержка.
Оптимизированный SQL = быстрее выполнение и меньшая нагрузка на базу.

Что ещё можно добавить в этот список? 🍂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Разбирем продуктовые метрики.

Начнем с ARPU/ARPPU

Определение:
ARPU - средний доход на юзера. Берем сумму продаж допустим за месяц, делим на активных юзеров этого месяца.
ARPPU - тоже самое что и ARPU, но делим на платящих юзеров.

Применение:
Очень часто используется в аб как контрольная метрика. И как любая денежная метрика говорит о "здоровье" продукта, и позволяет прикидывать сколько денег получаем/теряем в динамике. Ее оценивают как в прогнозах так и в презах для инвесторов.

пример расчета в SQL:
WITH revenue_per_user AS (
SELECT
user_id,
SUM(amount) AS revenue
FROM payments
WHERE pay_date BETWEEN '2025-04-01' AND '2025-04-30'
GROUP BY user_id
)
SELECT
ROUND(SUM(revenue)::NUMERIC / (SELECT COUNT(*) FROM users), 2) AS arpu,
ROUND(SUM(revenue)::NUMERIC / COUNT(user_id), 2) AS arppu
FROM revenue_per_user;


Подсветить:
ARPPU это не средний чек!
ARPPU = доход/платников
Сред. чек = доход/ кол-в чеков
ну мало ли кто не понял)

Upd:
Еще бы добавил одну штуку, что «удобность» этих метрик в том, что они составные и позволяют оценить совокупный эффект изменения конверсии и среднего чека (особенно арпу, например базово давая скидку насколько в конверсии в оплату перекрываем)
🔥5
🛢️ SQL-задача с подвохом: GROUP BY и скрытая ловушка

Условие:

Есть таблица orders:

| id | customer_id | amount | status |
|-----|-------------|--------|-----------|
| 1 | 101 | 200 | completed |
| 2 | 102 | 150 | NULL |
| 3 | 101 | 300 | completed |
| 4 | 103 | NULL | completed |
| 5 | 102 | 100 | completed |
| 6 | 101 | 250 | NULL |

Задача: найти всех клиентов, у которых сумма заказов больше 500.

Ты пишешь запрос:

SELECT customer_id, SUM(amount) as total
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > 500;

Вопрос:
Какие клиенты вернутся? Есть ли тут подвох? Что произойдёт с заказами, где amount или status — NULL?

🔍 Подвох:

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

1️⃣Что происходит с NULL в `amount`?

В SQL агрегатные функции (например, SUM) игнорируют NULL значения. Это значит:

- Заказ id=4 (`amount = NULL`) не участвует в суммировании.
- Заказ id=6 (`amount = 250`) участвует, потому что amount не NULL.

2️⃣Считаем по каждому клиенту:

- customer_id=101:
- id=1: 200
- id=3: 300
- id=6: 250
Итого: 200 + 300 + 250 = 750

- customer_id=102:
- id=2: 150
- id=5: 100
Итого: 150 + 100 = 250

- customer_id=103:
- id=4: NULL (игнорируется)
Итого: 0


3️⃣Кто попадёт в результат:

Только customer_id=101 (с суммой 750 > 500).

---

Результат:

| customer_id | total |
|-------------|--------|
| 101 | 750 |


💥Подвох #2:

Допустим ты случайно написал:

HAVING SUM(amount) IS NOT NULL AND SUM(amount) > 500;
Кажется логичным? А вот нет: SUM всегда возвращает 0 (не NULL), даже если у клиента нет заказов с ненулевой суммой.

➡️Даже клиент с только NULL значениями (например, customer_id=103) получит SUM(amount) = 0, а не NULL.

Это частая ловушка:
COUNT, SUM, AVG игнорируют NULL внутри, но результат НЕ NULL (обычно 0 или NULL в зависимости от агрегата).


🛠 Что ещё важно:

• Если хочешь учитывать только выполненные заказы (status = 'completed'), нужно добавить:

WHERE status = 'completed'
⚠️ Не пиши условие в HAVING для фильтрации строк - лучше фильтровать через WHERE до группировки.

✏️ Вывод:

- Агрегатные функции типа SUM игнорируют NULL внутри группы.
- SUM возвращает 0, даже если все значения NULL (НЕ NULL, как думают многие).
- HAVING применяется ПОСЛЕ группировки, а WHERE — ДО.
- Ошибки часто возникают, если условие на фильтр пишут в HAVING вместо WHERE.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Верный подход к обучению✍️

Вы замечали, что большинство курсов и учебников учат программированию одинаково? Сначала синтаксис, потом простые задачи, в конце - «дипломный проект». Но почему тогда 90% новичков бросают обучение или так и не находят работу? 🤷‍♀️
Потому что традиционный подход в корне неверен.
на самом деле

Что не так с обычным обучением

1️⃣Слишком много теории без практики. Вы зубрите типы данных, операторы, структуры - но когда дело доходит до реальной задачи, руки опускаются.

2️⃣Искусственные задачи по типу «Напишите калькулятор» — отличное упражнение, но оно не объясняет, как создают реальные приложения.

3️⃣Отсутствие контекста
Вы учите циклы, но не понимаете, где и зачем они применяются в настоящих проектах.

Как учиться эффективно💡

1️⃣Начинайте с конечной цели 🎯
Хотите делать сайты? Не учите Python «для общего развития». Сразу берите HTML/CSS
и JavaScript.

2️⃣Учитесь на реальных задачах. Вместо абстрактных упражнений попробуйте:
Создать простой сайт для друга
Написать скрипт для автоматизации рутинной работы тай описание
Сделать бота для Telegram

3️⃣Копируйте работающие проекты
Возьмите чужой код (например, с GitHub), запустите его, модифицируйте. Так вы увидите, как устроены реальные программы.

4️⃣Ошибайтесь быстрее
Не стремитесь писать идеальный код с первого раза. Лучше сделайте 10 кривых, но работающих версий, чем 1 «идеальную», которая никогда не запустится.

Старайтесь программировать каждый день
30 минут кода ежедневно дадут больше, чем
8 часов раз в неделю 💯

Главный секрет 🗝

Программирование - это не про запоминание, а про решение проблем.
Лучшие разработчики не знают все языки, а умеют быстро находить и применять нужную информацию


Перестаньте учиться «как все». Начните создавать.
Please open Telegram to view this post
VIEW IN TELEGRAM
💯6👍1
Топ 5 инструментов для анализа данных в 2025 году 🔥

Когда я только начинал разбираться в аналитике данных, у меня постоянно в голове крутилась одна мысль: «Инструментов слишком много, с чего вообще начать?».
За последние годы я перепробовал кучу всего. От SQL-запросов до визуализации данных и анализа в Python. И постепенно стало ясно, какие инструменты реально нужны, а какие просто создают лишний шум.

И вот сегодня я делюсь теми пятью, которые лично для меня стали фундаментом в 2025 году.

1️⃣Pandas - моя точка входа в мир данных

Pandas всегда был для меня инструментом «здесь и сейчас». Загружаю датасет, смотрю первые строки, чищу, агрегирую, считаю метрики - и всё это живо, интерактивно и понятно.

Иногда мне достаточно пары строк, чтобы увидеть, что данные вообще из себя представляют:

import pandas as pd

df = pd.read_csv("sales.csv")
print(df.head())
print(df.groupby("category")["revenue"].sum())


Вот за это я люблю Pandas — никаких «долго думать», сразу действие.
Когда нужно прототипировать идею или просто быстро найти закономерности — Pandas прямо спасает.

2️⃣SQL - язык, который я использую чаще всех

Если Pandas это свобода, то SQL это порядок.
В какой бы компании вы ни работали, данные всегда лежат в базе. И в какой-то момент вы понимаете: без уверенного SQL никуда.

У меня это выглядело так:
Сел, написал первый SELECT… затем JOIN… затем понял, что запрос стал слишком большим, переписал заново - классика.

Типичный запрос из жизни:

SELECT category,
SUM(revenue) AS total_revenue,
COUNT(*) AS orders
FROM sales
WHERE date >= '2025-01-01'
GROUP BY category
ORDER BY total_revenue DESC;


И вот эта штука уже превращается в мини-отчёт для менеджера.
SQL - это костяк аналитики. Хочешь ты этого или нет.

3️⃣ Power BI - мой первый шаг в профессиональные дашборды

Когда я впервые открыл Power BI, я не понимал, почему столько людей его обожают.
А потом собрал первый дашборд и всё стало ясно. Простые конструкторы, визуалы понятные даже директору, всё собирается быстро.

Power BI для меня это рабочая лошадка: отчёты по продажам, динамика клиентов, эффективность кампаний. Почти всё, что нужно бизнесу.

И главное, что я могу собрать целый отчёт, даже если везде куча источников: Excel, база данных, API.

4️⃣Tableau - когда хочется красоты и вау эффекта

Tableau я подключаю тогда, когда нужно сделать что то не просто информативное, а эффектное.
Презентации для руководства, визуализация временных рядов, интерактивные истории - вот где он раскрывается.

Tableau требует чуть больше терпения в обучении, но отдача у него невероятная.
Если Power BI про скорость, то Tableau про визуальный уровень.
Я иногда строю в Tableau визуализации просто ради удовольствия. Настолько инструмент гибкий.

5️⃣ Looker - инструмент, который стал часто появляться в моей работе

Looker (особенно Looker Studio) это про облачный подход.
Если у вас BigQuery, рекламная аналитика, много web-данных, события, трафик, то Looker здесь чувствует себя как дома.

Меня привлекает то, что Looker быстро подключается к огромным таблицам.
Когда я загружаю датасет на миллион строк в Power BI, это иногда боль.

И да, можно за 15 минут собрать дашборд по маркетинговым метрикам, который будет жить месяцами без переделок.

🎯 Что бы я выбрал, если бы начинал заново:

SQL 🔜 Pandas 🔜 Power BI 🔜 (по необходимости) Tableau/Looker.

SQL - это фундамент.
Pandas - гибкость и навыки Python-аналитики.
Power BI - первый реальный навык для работы.
Tableau и Looker - уже под конкретные задачи компаний.

📌Итог

В 2025 году рынок слегка меняется, появляются новые штуки, инструменты начинают быть связаны с ИИ.
Но три вещи пока что остаются железобетонными: данные, SQL и умение визуализировать.

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

Накидайте реакций🔥если согласны с топом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥144👍1
🖥 SQL Flow

SQL Flow позиционируется как «DuckDB для потоковых данных» — лёгковесный движок stream-обработки, позволяющий описывать весь pipeline единственным языком SQL и служащий компактной альтернативой Apache Flink.

🔍 Ключевые возможности:

- Источники (Sources): Kafka, WebSocket-стримы, HTTP-webhooks и др.
- Приёмники (Sinks): Kafka, PostgreSQL, локальные и S3-подобные хранилища, любые форматы, которые поддерживает DuckDB (JSON, Parquet, Iceberg и т.д.).
- SQL-обработчик (Handler): встраивает DuckDB + Apache Arrow; поддерживает агрегаты, оконные функции, UDF и динамический вывод схемы.
- Управление окнами: in-memory tumbling-windows, буферные таблицы.
- Наблюдаемость: встроенные Prometheus-метрики (с релиза v0.6.0).

🔗 Архитектура

Конвейер описывается YAML-файлом с блоками `source → handler → sink`.
Во время выполнения:

1. Source считывает поток (Kafka, WebSocket …).
2. Handler выполняет SQL-логику в DuckDB.
3. Sink сохраняет результаты в выбранное хранилище.

Быстрый старт (≈ 5 минут)
# получить образ
docker pull turbolytics/sql-flow:latest

# тестовая проверка конфигурации
docker run -v $(pwd)/dev:/tmp/conf \
-v /tmp/sqlflow:/tmp/sqlflow \
turbolytics/sql-flow:latest \
dev invoke /tmp/conf/config/examples/basic.agg.yml /tmp/conf/fixtures/simple.json

# запуск против Kafka
docker-compose -f dev/kafka-single.yml up -d # поднять Kafka

docker run -v $(pwd)/dev:/tmp/conf \
-e SQLFLOW_KAFKA_BROKERS=host.docker.internal:29092 \
turbolytics/sql-flow:latest \
run /tmp/conf/config/examples/basic.agg.mem.yml --max-msgs-to-process=10000
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42🤷‍♂1👍1
Советы для аналитиков данных. Как стать лучше?

Иногда кажется, что работа аналитика данных — это бесконечные запросы, графики и попытки объяснить менеджеру, почему так, а не иначе. Но чем дольше я наблюдаю за людьми в этой профессии, тем яснее понимаю: лучшие аналитики — это не те, кто знает больше всех формул, а те, кто умеет смотреть чуть глубже, чем остальные.

Прокачка начинается не с новых инструментов, а с привычки задавать правильные вопросы. Когда перед тобой задача — не спеши сразу писать SQL. Сначала попробуй понять, что на самом деле хочет бизнес, какую боль пытается закрыть команда и какое решение будет действительно приносить ценность. Часто именно это отличает зрелого аналитика от просто “человека, который умеет строить графики”.

Ещё один важный момент — уметь видеть историю в данных. Сухие цифры сами по себе мало кому интересны, но как только ты превращаешь их в понятный сюжет, тебя начинают слушать. Это умение приходит с практикой: чем больше ты работаешь с реальными кейсами, тем проще замечать закономерности, выбросы, странные пики и падения, которые могут объяснить гораздо больше, чем огромные отчёты.

И, конечно, любопытство. Настоящее, детское, когда хочется копать глубже просто потому что интересно. Задавать себе вопрос «а почему?» чуть чаще, чем требуется. В итоге именно это любопытство превращается в навык, за который аналитиков ценят сильнее всего — находить ответы, которых никто не ожидал.
👍5🔥43😁1
Просто о кэшировании

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

Что такое кэширование

🏠Представьте кладовку дома, где лежат часто используемые вещи. Мы не возим их в гараж за три квартала, потому что они должны быть под рукой. В IT это и есть кэширование, то есть хранение часто востребованных данных в быстродоступном месте. Разница лишь в том, что такие данные «живут» ограниченное время и со временем исчезают.

Зачем оно нужно

Если вещи рядом, не нужно тратить время на поездку в гараж💡Так же и в системах: кэширование ускоряет доступ к данным и снижает нагрузку на БД. Даже при сбое сервиса мы можем получить данные из кэша.

Какие данные кэшируют

Всё зависит от частоты изменений:
Очень часто (каждую секунду) — кэш бесполезен. Пример: биржевые котировки. 🕯
Иногда (раз в минуты или часы) — нужно оценить целесообразность. Пример: курс валют, рейтинг товаров.
Редко (дни, недели, месяцы) — отличные кандидаты. Пример: коды регионов РФ, список стран.

Где хранится кэш

Варианты:
Клиентский (браузер, мобильное приложение)
Серверный (in-memory, Redis)
Распределённый (CDN)

На сервере выделяют два подхода:
Внутренний (in-memory) — хранение прямо в памяти сервиса Очень быстро, но 🚨требует синхронизации при масштабировании.
Внешний (например, Redis) — чуть медленнее, зато можно хранить больше данных и легко масштабировать .

Чаще всего выбирают внешнее кэширование, если нет жёстких требований к скорости.

Основные термины:
TTL (Time To Live) — время жизни данных в кэше.
Cache miss — данных нет в кэше.
Cache hit — данные найдены в кэше.
Hit ratio — процент попаданий в кэш, показатель его эффективности.
Горячий ключ 🔥— ключ с наибольшим числом запросов.
Прогрев кэша — наполнение данными заранее.
Инвалидация 🗑 — удаление данных из кэша.

Как это работает
Cache Aside — сервис сам решает, когда обратиться к кэшу, а когда к БД. Простота, минимум рисков.
Cache Through — все запросы идут через кэш, а тот уже тянет данные из БД. Консистентность данных.
Cache Ahead — кэш сам периодически подгружает данные из БД. Нет «промахов» (Cache Miss).

Итог

Кэширование — это мощный способ ускорить работу и разгрузить систему. Чаще всего используют внешнее кэширование с паттерном Cache Aside для редко изменяемых данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍54
🖥 tbls

Мощный инструмент для документирования баз данных. Он анализирует структуру базы данных и автоматически генерирует красивую документацию в формате Markdown, HTML, JSON и других.

🔹 Основные возможности:
- Автоматический разбор схемы базы данных.
- Поддержка множества СУБД (PostgreSQL, MySQL, SQLite, MSSQL и др.).
- Генерация наглядных диаграмм и связей между таблицами.
- Возможность кастомизации документации.
- Интеграция с CI/CD для автоматического обновления документации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5
🖥 Уровни изоляции транзакций в базах данных

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

🔑 Что такое изоляция транзакций?

Изоляция транзакций указывает степень, до которой операции в одной транзакции изолированы от операций в других. Это предотвращает такие проблемы, как грязные чтения, неповторяемые чтения и фантомные записи, обеспечивая целостность данных.

🔒 Типы уровней изоляции:

📌 Read Uncommitted:
Самый низкий уровень изоляции.

Транзакции могут читать изменения, сделанные другими транзакциями, даже если они не были зафиксированы (грязные чтения). Быстро, но рискованно.

📌 Read Committed:
Видны только зафиксированные данные. Это исключает грязные чтения, но могут возникать неповторяемые чтения (данные меняются между двумя запросами).

📌 Repeatable Read:

Это уровень, что данные, прочитанные транзакцией, не могут быть изменены другой транзакцией до завершения первой. Однако возможны фантомные чтения (новые строки появляются при повторных запросах).

📌 Serializable:
Самый высокий уровень изоляции. Полностью изолирует транзакцию, предотвращая грязные, неповторяемые и фантомные чтения. Однако это существенно снижает производительность.

Каждый уровень предлагает компромисс между производительностью и консистентностью данных. Более высокий уровень изоляции снижает конкурентоспособность, тогда как более низкий увеличивает риск возникновения аномалий. Важно правильно подобрать уровень в зависимости от требований приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍63
Свершилось

Рассказываю как я за два месяца (почти три..) пота и нервов😅 всё-таки устроился на позицию Middle Data Analyst.

Скажу честно, собесился я не прям чтобы активно. Всего было 6 собесов в разные компании на позицию дата-аналитика. И 2 собеса на позицию аналитика-разработчика. С поиском самих вакансий проблем не было, HR сами писали и предлагали созвониться📩 Разумеется, я откликался на различные вакансии, но без фанатизма. Никаких автооткликов не юзал. Не знаю, почему многих ребят не зовут на собес даже после откликов🤔 Думаю, опыт и резюмешка сильно решают. Было нелегко, учитывая что опыта собеседований у меня не было больше двух лет. Поэтому тупил много 😅, хотя готовился.

Первым этапом был созвон с рекрутером 📞 Поговорили про мой опыт, рассказали за компанию, чем занимаются и почему в поисках аналитика сейчас. Так как опыт у меня больше в e-commerce, спросили, интересно ли мне будет попробовать себя в фин-секторе, так как проект больше направлен на это. Я ответил, что да. Формат работы - полная удаленка. Ну шик🔥
Вилка в вакансии не была указана. Попросил 180к на руки 💵 всё было ок. Думаю, что можно было просить и больше, но перестраховался. После звонка она отправила резюме коллегам, и на следующий день назначили тех-собес.

Много спрашивали про SQL, базовые концепции, оптимизация запросов, ну и конечно же про оконные функции.. Плавал поначалу, но справился💪
Была задача на фильтрацию и задача на поднимание join-ов. Тут было не сложно

Были вопросы про логику, python, а именно pandas 📊 В одной задаче был момент, когда лоханулся сильно, но быстро вышел из болота )
По итогу, заветный оффер получен, можно выдохнуть

Я очень нервничал, так было на каждом собесе. Где-то сильно, где-то нет. Зависит от собеседующих и человеческого фактора. Мало просто иметь знания, нужно уметь найти контакт👥 Я думаю, у многих так, вроде бы всё знаешь, повторяешь всю теорию, но вдруг, когда нужно, всё забывается 🤦‍♂️ Просто нужно вырабатывать скилл. В месяц буду проходить хотя бы пару собесов для профилактики ахах. Чтобы выработать этот скилл.

Безумно рад, что этот период прошёл. Устал за это время, но усталость приятная. Теперь плавно буду проходить онбординг и вливаться в коллектив👨‍💻В понедельник первый созвон с коллегами и обсуждение задач🗓

В завершение хочу сказать ребятам, которые сейчас в поисках - удачи вам! 🍀 Она точно нужна. Главное - не опускайте руки и топите до конца🚀 В комментариях можете поделиться своим опытом прохождения собесов или факапов. Будет приятно почитать 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥157😎5
Собственно, первый день на новом проекте, а предложения все ещё поступают. Ясное дело, ведь я не убрал активный статус на Хабре и hh. Не хочу менять, пусть пишут )
Надо вырабатывать скилллл

По описанию проект вроде все норм, только плохо что гибрид. Завтра созвонюсь и узнаю что к чему. Если все будет ок, пойду на собес и напишу тут что было.
🔥1611👍9
Как вести себя на новом проекте 🤷‍♂️

Попал в новое окружение, новая компания. Никого не знаешь. Ничего не понимаешь. Паника?? Спакуха 🙂
Вот что тебе поможет пережить первые рабочие дни в IT.

Вот уже почти неделю нахожусь в новой компании, и подумал написать пост с годными советами. Так вот:


1️⃣Прими, что первые 1–2 недели ты «плаваешь»

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

ВСЕ проходят через это.

2️⃣Учись задавать хорошие вопросы

Самый простой способ показать вовлечённость это задавать вопросы, которые помогают делать работу:

🟢Где хранятся источники данных?
🟢Какой стек аналитики мы используем?
🟢Где лежат метрики и словари?
🟢Как мы выкатываем отчёты?

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

3️⃣Пиши заметки

Новый проект это всегда миллион новых терминов, сервисов и имён.

Старайся записывать все самое важное, бизнес метрики, формулы 🧐 важные запросы, как обновляются отчеты и тд

Через неделю ты скажешь себе спасибо.

4️⃣Сделай маленькую полезную задачу

Очень важно, не геройствуй.
Можешь поделать мелкую задачу, поправь запрос, сделай фильтр в отчёте, или почини метрику,

Маленькая победа➡️доверие + уверенность.

5️⃣Найди «своего человека»

На любом проекте есть тот, кто может подсказать и помочь быстрее, чем вся документация.

Не надо тупить. Просто больше общайся, спрашивай и узнавай.

Обычно люди сами рады помочь.

6️⃣Слушай, как команда общается

В чате и митах видно всё. Например кто принимает решения, кто шарит в данных, кто курирует задачи и какой тон общения

Подстраиваешься под стиль и внезапно становишься «своим».

7️⃣Не пытайся казаться умнее

Самая частая ошибка новичков это делать вид, что они всё понимают.
Это просто убивает.

Лучше честно скажите

«Сори, я не до конца понял, можете пожалуйста ещё раз объяснить вот эту часть?»

Вас только зауважают за это 🪖

8️⃣Первые дни важнее то, как ты общаешься

Умение коммуницировать, договариваться, слушать и быть адекватным, чаще важнее всего остального

9️⃣И самое главное, расслабься

Тебя наняли не случайно.
Тебе доверяют и ты справишься.

Первые дни это про адаптацию.
Спокойно впитываешь контекст, людей, процессы.
Маленькими шагами приносишь пользу.

А настоящая работа начнётся чуть позже 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1612👍11💯2